BXE: last debugging attempts
Keeping this around in case we need to come back.
diff --git a/kern/drivers/net/bxe/bxe.c b/kern/drivers/net/bxe/bxe.c
index 21eca85..a5b1468 100644
--- a/kern/drivers/net/bxe/bxe.c
+++ b/kern/drivers/net/bxe/bxe.c
@@ -2308,6 +2308,7 @@
{
struct eth_spe *next_spe = sc->spq_prod_bd;
+static int cnt = 0;
if (sc->spq_prod_bd == sc->spq_last_bd) {
/* wrap back to the first eth_spq */
sc->spq_prod_bd = sc->spq;
@@ -2317,6 +2318,7 @@
sc->spq_prod_idx++;
}
+printk("SP_GET_NEXT, cnt %d, ret %p, spq %p\n", cnt++, next_spe, sc->spq);
return (next_spe);
}
@@ -2333,6 +2335,8 @@
*/
mb();
+printk("ABOUT TO WRITE %p to reg %p\n", sc->spq_prod_idx,
+ (BAR_XSTRORM_INTMEM + XSTORM_SPQ_PROD_OFFSET(func)));
REG_WR16(sc, (BAR_XSTRORM_INTMEM + XSTORM_SPQ_PROD_OFFSET(func)),
sc->spq_prod_idx);
@@ -2389,6 +2393,7 @@
uint16_t type;
int common;
+printk("SP POST, cmd %d, cid %d hi %08x lo %08x\n", command, cid, data_hi, data_lo);
common = bxe_is_contextless_ramrod(command, cmd_type);
BXE_SP_LOCK(sc);
@@ -2435,8 +2440,8 @@
atomic_add(&sc->cq_spq_left, -1);
}
- BLOGD(sc, DBG_SP, "SPQE -> %#jx\n", (uintmax_t)sc->spq_dma.paddr);
- BLOGD(sc, DBG_SP, "FUNC_RDATA -> %p / %#jx\n",
+ BLOGD(sc, DBG_SP, "SPE %p, SPQE -> %p\n", spe, (uintmax_t)sc->spq_dma.paddr);
+ BLOGD(sc, DBG_SP, "FUNC_RDATA -> %p / %p\n",
BXE_SP(sc, func_rdata), (uintmax_t)BXE_SP_MAPPING(sc, func_rdata));
BLOGD(sc, DBG_SP,
"SPQE[%x] (%x:%x) (cmd, common?) (%d,%d) hw_cid %x data (%x:%x) type(0x%x) left (CQ, EQ) (%lx,%lx)\n",
@@ -11789,6 +11794,7 @@
q_params.q_obj = &BXE_SP_OBJ(sc, fp).q_obj;
+I_AM_HERE;
/* we want to wait for completion in this context */
bxe_set_bit(RAMROD_COMP_WAIT, &q_params.ramrod_flags);
@@ -11798,8 +11804,10 @@
/* Set the command */
q_params.cmd = ECORE_Q_CMD_INIT;
+I_AM_HERE;
/* Change the state to INIT */
rc = ecore_queue_state_change(sc, &q_params);
+I_AM_HERE; // made it here
if (rc) {
BLOGE(sc, "Queue(%d) INIT failed\n", fp->index);
return (rc);
@@ -11813,23 +11821,28 @@
/* set Queue flags */
setup_params->flags = bxe_get_q_flags(sc, fp, leading);
+I_AM_HERE;
/* set general SETUP parameters */
bxe_pf_q_prep_general(sc, fp, &setup_params->gen_params,
FIRST_TX_COS_INDEX);
+I_AM_HERE;
bxe_pf_rx_q_prep(sc, fp,
&setup_params->pause_params,
&setup_params->rxq_params);
+I_AM_HERE;
bxe_pf_tx_q_prep(sc, fp,
&setup_params->txq_params,
FIRST_TX_COS_INDEX);
+I_AM_HERE;
/* Set the command */
q_params.cmd = ECORE_Q_CMD_SETUP;
- /* change the state to SETUP */
+ /* change the state to SETUP */// XME GO IN HERE
rc = ecore_queue_state_change(sc, &q_params);
+I_AM_HERE; // never get here
if (rc) {
BLOGE(sc, "Queue(%d) SETUP failed\n", fp->index);
return (rc);
@@ -12335,8 +12348,10 @@
uint16_t req_line_speed = sc->link_params.req_line_speed[cfg_idx];
struct elink_params *lp = &sc->link_params;
+I_AM_HERE;
bxe_set_requested_fc(sc);
+I_AM_HERE;
if (CHIP_REV_IS_SLOW(sc)) {
uint32_t bond = CHIP_BOND_ID(sc);
uint32_t feat = 0;
@@ -12366,6 +12381,7 @@
}
BXE_PHY_LOCK(sc);
+I_AM_HERE;
if (load_mode == LOAD_DIAG) {
lp->loopback_mode = ELINK_LOOPBACK_XGXS;
@@ -12384,12 +12400,15 @@
lp->loopback_mode = ELINK_LOOPBACK_EXT;
}
+I_AM_HERE;
rc = elink_phy_init(&sc->link_params, &sc->link_vars);
+I_AM_HERE;
BXE_PHY_UNLOCK(sc);
bxe_calc_fc_adv(sc);
+I_AM_HERE;
if (sc->link_vars.link_up) {
bxe_stats_handle(sc, STATS_EVENT_LINK_UP);
bxe_link_report(sc);
@@ -12803,6 +12822,8 @@
bxe_ilt_set_info(sc);
}
+I_AM_HERE;
+
// sc->last_reported_link_state = LINK_STATE_UNKNOWN;
bxe_set_fp_rx_buf_size(sc);
@@ -12815,21 +12836,25 @@
}
+I_AM_HERE;
if (bxe_alloc_mem(sc) != 0) {
sc->state = BXE_STATE_CLOSED;
rc = ENOMEM;
goto bxe_nic_load_error0;
}
+I_AM_HERE;
if (bxe_alloc_fw_stats_mem(sc) != 0) {
sc->state = BXE_STATE_CLOSED;
rc = ENOMEM;
goto bxe_nic_load_error0;
}
+I_AM_HERE;
if (IS_PF(sc)) {
/* set pf load just before approaching the MCP */
bxe_set_pf_load(sc);
+I_AM_HERE;
/* if MCP exists send load request and analyze response */
if (!BXE_NOMCP(sc)) {
@@ -12840,6 +12865,7 @@
goto bxe_nic_load_error1;
}
+I_AM_HERE;
/* what did the MCP say? */
if (bxe_nic_load_analyze_req(sc, load_code) != 0) {
bxe_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
@@ -12851,13 +12877,16 @@
BLOGI(sc, "Device has no MCP!\n");
load_code = bxe_nic_load_no_mcp(sc);
}
+I_AM_HERE;
/* mark PMF if applicable */
bxe_nic_load_pmf(sc, load_code);
+I_AM_HERE;
/* Init Function state controlling object */
bxe_init_func_obj(sc);
+I_AM_HERE;
/* Initialize HW */
if (bxe_init_hw(sc, load_code) != 0) {
BLOGE(sc, "HW init failed\n");
@@ -12866,6 +12895,7 @@
rc = ENXIO;
goto bxe_nic_load_error2;
}
+I_AM_HERE;
}
/* attach interrupts */
@@ -12875,8 +12905,10 @@
goto bxe_nic_load_error2;
}
+I_AM_HERE;
bxe_nic_init(sc, load_code);
+I_AM_HERE;
/* Init per-function objects */
if (IS_PF(sc)) {
bxe_init_objs(sc);
@@ -12886,8 +12918,10 @@
sc->devinfo.mf_info.afex_def_vlan_tag = -1;
// XXX bxe_nic_load_afex_dcc(sc, load_code);
+I_AM_HERE;
sc->state = BXE_STATE_OPENING_WAITING_PORT;
rc = bxe_func_start(sc);
+I_AM_HERE;
if (rc) {
BLOGE(sc, "Function start failed!\n");
bxe_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
@@ -12895,8 +12929,9 @@
goto bxe_nic_load_error3;
}
+I_AM_HERE;
/* send LOAD_DONE command to MCP */
- if (!BXE_NOMCP(sc)) {
+ if (!BXE_NOMCP(sc)) {// lllllllllllllllll
load_code = bxe_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
if (!load_code) {
BLOGE(sc, "MCP response failure, aborting\n");
@@ -12906,6 +12941,7 @@
}
}
+I_AM_HERE;
rc = bxe_setup_leading(sc);
if (rc) {
BLOGE(sc, "Setup leading failed!\n");
@@ -12913,6 +12949,7 @@
goto bxe_nic_load_error3;
}
+I_AM_HERE;
FOR_EACH_NONDEFAULT_ETH_QUEUE(sc, i) {
rc = bxe_setup_queue(sc, &sc->fp[i], FALSE);
if (rc) {
@@ -12922,6 +12959,7 @@
}
}
+I_AM_HERE;
rc = bxe_init_rss_pf(sc);
if (rc) {
BLOGE(sc, "PF RSS init failed\n");
@@ -12945,6 +12983,7 @@
/* now when Clients are configured we are ready to work */
sc->state = BXE_STATE_OPEN;
+I_AM_HERE;
/* Configure a ucast MAC */
if (IS_PF(sc)) {
@@ -12968,6 +13007,7 @@
sc->pending_max = 0;
}
#endif
+I_AM_HERE;
if (sc->port.pmf) {
rc = bxe_initial_phy_init(sc, /* XXX load_mode */LOAD_OPEN);
@@ -12979,6 +13019,7 @@
sc->link_params.feature_config_flags &=
~ELINK_FEATURE_CONFIG_BOOT_FROM_SAN;
+I_AM_HERE;
/* start fast path */
@@ -12999,6 +13040,7 @@
default:
break;
}
+I_AM_HERE;
if (sc->port.pmf) {
bxe_update_drv_flags(sc, 1 << DRV_FLAGS_PORT_MASK, 0);
@@ -13008,6 +13050,7 @@
/* start the periodic timer alarm */
bxe_periodic_start(sc);
+I_AM_HERE;
if (IS_PF(sc) && SHMEM2_HAS(sc, drv_capabilities_flag)) {
/* mark driver is loaded in shmem2 */
@@ -16267,7 +16310,7 @@
sc->state = BXE_STATE_CLOSED;
- /* what is this? */
+ /* what is this? brho: seems like the device id number. used in prints */
//sc->unit = device_get_unit(dev);
BLOGD(sc, DBG_LOAD, "softc = %p\n", sc);
diff --git a/kern/drivers/net/bxe/ecore_sp.c b/kern/drivers/net/bxe/ecore_sp.c
index 7a3c114..c59f706 100644
--- a/kern/drivers/net/bxe/ecore_sp.c
+++ b/kern/drivers/net/bxe/ecore_sp.c
@@ -4507,17 +4507,21 @@
return ECORE_INVAL;
}
+I_AM_HERE;
/* Set "pending" bit */
ECORE_MSG(sc, "pending bit was=%lx\n", o->pending);
pending_bit = o->set_pending(o, params);
ECORE_MSG(sc, "pending bit now=%lx\n", o->pending);
+I_AM_HERE;
/* Don't send a command if only driver cleanup was requested */
if (ECORE_TEST_BIT(RAMROD_DRV_CLR_ONLY, ¶ms->ramrod_flags))
o->complete_cmd(sc, o, pending_bit);
else {
/* Send a ramrod */
+I_AM_HERE;
rc = o->send_cmd(sc, params);
+I_AM_HERE;
if (rc) {
o->next_state = ECORE_Q_STATE_MAX;
ECORE_CLEAR_BIT(pending_bit, pending);
@@ -4525,8 +4529,11 @@
return rc;
}
+I_AM_HERE;
if (ECORE_TEST_BIT(RAMROD_COMP_WAIT, ¶ms->ramrod_flags)) {
+I_AM_HERE;
rc = o->wait_comp(sc, o, pending_bit);
+I_AM_HERE;
if (rc)
return rc;
@@ -4892,7 +4899,7 @@
static inline int ecore_q_send_setup_e1x(struct bxe_adapter *sc,
struct ecore_queue_state_params *params)
-{
+{ // sending this fails XME
struct ecore_queue_sp_obj *o = params->q_obj;
struct client_init_ramrod_data *rdata =
(struct client_init_ramrod_data *)o->rdata;
@@ -5216,28 +5223,40 @@
static inline int ecore_queue_send_cmd_cmn(struct bxe_adapter *sc,
struct ecore_queue_state_params *params)
{
+I_AM_HERE;
switch (params->cmd) {
case ECORE_Q_CMD_INIT:
+I_AM_HERE;
return ecore_q_init(sc, params);
case ECORE_Q_CMD_SETUP_TX_ONLY:
+I_AM_HERE;
return ecore_q_send_setup_tx_only(sc, params);
case ECORE_Q_CMD_DEACTIVATE:
+I_AM_HERE;
return ecore_q_send_deactivate(sc, params);
case ECORE_Q_CMD_ACTIVATE:
+I_AM_HERE;
return ecore_q_send_activate(sc, params);
case ECORE_Q_CMD_UPDATE:
+I_AM_HERE;
return ecore_q_send_update(sc, params);
case ECORE_Q_CMD_UPDATE_TPA:
+I_AM_HERE;
return ecore_q_send_update_tpa(sc, params);
case ECORE_Q_CMD_HALT:
+I_AM_HERE;
return ecore_q_send_halt(sc, params);
case ECORE_Q_CMD_CFC_DEL:
+I_AM_HERE;
return ecore_q_send_cfc_del(sc, params);
case ECORE_Q_CMD_TERMINATE:
+I_AM_HERE;
return ecore_q_send_terminate(sc, params);
case ECORE_Q_CMD_EMPTY:
+I_AM_HERE;
return ecore_q_send_empty(sc, params);
default:
+I_AM_HERE;
ECORE_ERR("Unknown command: %d\n", params->cmd);
return ECORE_INVAL;
}
@@ -5246,8 +5265,10 @@
static int ecore_queue_send_cmd_e1x(struct bxe_adapter *sc,
struct ecore_queue_state_params *params)
{
+I_AM_HERE;
switch (params->cmd) {
case ECORE_Q_CMD_SETUP:
+I_AM_HERE;
return ecore_q_send_setup_e1x(sc, params);
case ECORE_Q_CMD_INIT:
case ECORE_Q_CMD_SETUP_TX_ONLY:
@@ -5259,6 +5280,7 @@
case ECORE_Q_CMD_CFC_DEL:
case ECORE_Q_CMD_TERMINATE:
case ECORE_Q_CMD_EMPTY:
+I_AM_HERE;
return ecore_queue_send_cmd_cmn(sc, params);
default:
ECORE_ERR("Unknown command: %d\n", params->cmd);
@@ -5269,6 +5291,7 @@
static int ecore_queue_send_cmd_e2(struct bxe_adapter *sc,
struct ecore_queue_state_params *params)
{
+I_AM_HERE;
switch (params->cmd) {
case ECORE_Q_CMD_SETUP:
return ecore_q_send_setup_e2(sc, params);
@@ -5539,6 +5562,7 @@
{
ECORE_MEMSET(obj, 0, sizeof(*obj));
+I_AM_HERE;
/* We support only ECORE_MULTI_TX_COS Tx CoS at the moment */
ECORE_BUG_ON(ECORE_MULTI_TX_COS < cid_cnt);
@@ -5564,6 +5588,7 @@
obj->complete_cmd = ecore_queue_comp_cmd;
obj->wait_comp = ecore_queue_wait_comp;
obj->set_pending = ecore_queue_set_pending;
+printk("INIT QUEU OBJ, obj %p rdata %p mapping %p\n", obj, obj->rdata, obj->rdata_mapping);
}
/* return a queue object's logical state*/
@@ -6005,7 +6030,7 @@
static inline int ecore_func_send_start(struct bxe_adapter *sc,
struct ecore_func_state_params *params)
-{
+{ // sending this works XME
struct ecore_func_sp_obj *o = params->f_obj;
struct function_start_data *rdata =
(struct function_start_data *)o->rdata;
@@ -6171,26 +6196,37 @@
static int ecore_func_send_cmd(struct bxe_adapter *sc,
struct ecore_func_state_params *params)
{
+ I_AM_HERE;
switch (params->cmd) {
case ECORE_F_CMD_HW_INIT:
+ I_AM_HERE;
return ecore_func_hw_init(sc, params);
case ECORE_F_CMD_START:
+ I_AM_HERE; // w
return ecore_func_send_start(sc, params);
case ECORE_F_CMD_STOP:
+ I_AM_HERE;
return ecore_func_send_stop(sc, params);
case ECORE_F_CMD_HW_RESET:
+ I_AM_HERE;
return ecore_func_hw_reset(sc, params);
case ECORE_F_CMD_AFEX_UPDATE:
+ I_AM_HERE;
return ecore_func_send_afex_update(sc, params);
case ECORE_F_CMD_AFEX_VIFLISTS:
+ I_AM_HERE;
return ecore_func_send_afex_viflists(sc, params);
case ECORE_F_CMD_TX_STOP:
+ I_AM_HERE;
return ecore_func_send_tx_stop(sc, params);
case ECORE_F_CMD_TX_START:
+ I_AM_HERE;
return ecore_func_send_tx_start(sc, params);
case ECORE_F_CMD_SWITCH_UPDATE:
+ I_AM_HERE;
return ecore_func_send_switch_update(sc, params);
default:
+ I_AM_HERE;
ECORE_ERR("Unknown command: %d\n", params->cmd);
return ECORE_INVAL;
}
@@ -6206,6 +6242,7 @@
ECORE_MUTEX_INIT(&obj->one_pending_mutex);
+I_AM_HERE;
obj->rdata = rdata;
obj->rdata_mapping = rdata_mapping;
obj->afex_rdata = afex_rdata;
@@ -6215,6 +6252,7 @@
obj->complete_cmd = ecore_func_comp_cmd;
obj->wait_comp = ecore_func_wait_comp;
obj->drv = drv_iface;
+printk("INIT FUNC OBJ, obj %p rdata %p mapping %p\n", obj, obj->rdata, obj->rdata_mapping);
}
/**
diff --git a/kern/src/init.c b/kern/src/init.c
index 774181d..7980c8d 100644
--- a/kern/src/init.c
+++ b/kern/src/init.c
@@ -90,6 +90,8 @@
kb_buf_init(&cons_buf);
arch_init();
block_init();
+
+ printx_on = TRUE;
enable_irq();
run_linker_funcs();
/* reset/init devtab after linker funcs 3 and 4. these run NIC and medium
diff --git a/kern/src/kdebug.c b/kern/src/kdebug.c
index 87f8132..ebe89ac 100644
--- a/kern/src/kdebug.c
+++ b/kern/src/kdebug.c
@@ -62,6 +62,16 @@
"limborexmit",
"rangecompare",
"walkadd",
+ "bxe_read_dmae",
+ "bxe_write_dmae",
+ "bxe_prep_dmae_with_comp",
+ "bxe_dmae_opcode",
+ "bxe_dmae_opcode_add_comp",
+ "bxe_issue_dmae_with_comp",
+ "bxe_post_dmae",
+ "ecore_write_dmae_phys_len",
+ "bxe_write_dmae_phys_len",
+ "bxe_dma_alloc",
};
static bool is_blacklisted(const char *s)