diff options
Diffstat (limited to 'drivers/net/bnx2x/bnx2x.c')
-rw-r--r-- | drivers/net/bnx2x/bnx2x.c | 848 |
1 files changed, 467 insertions, 381 deletions
diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c index f1de3362..7cf9d1c4 100644 --- a/drivers/net/bnx2x/bnx2x.c +++ b/drivers/net/bnx2x/bnx2x.c @@ -114,6 +114,7 @@ static void bnx2x_pf_disable(struct bnx2x_softc *sc); static void bnx2x_update_rx_prod(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, uint16_t rx_bd_prod, uint16_t rx_cq_prod); +static void bnx2x_link_report_locked(struct bnx2x_softc *sc); static void bnx2x_link_report(struct bnx2x_softc *sc); void bnx2x_link_status_update(struct bnx2x_softc *sc); static int bnx2x_alloc_mem(struct bnx2x_softc *sc); @@ -181,13 +182,14 @@ bnx2x_dma_alloc(struct bnx2x_softc *sc, size_t size, struct bnx2x_dma *dma, SOCKET_ID_ANY, 0, align); if (z == NULL) { - PMD_DRV_LOG(ERR, "DMA alloc failed for %s", msg); + PMD_DRV_LOG(ERR, sc, "DMA alloc failed for %s", msg); return -ENOMEM; } dma->paddr = (uint64_t) z->phys_addr; dma->vaddr = z->addr; - PMD_DRV_LOG(DEBUG, "%s: virt=%p phys=%" PRIx64, msg, dma->vaddr, dma->paddr); + PMD_DRV_LOG(DEBUG, sc, + "%s: virt=%p phys=%" PRIx64, msg, dma->vaddr, dma->paddr); return 0; } @@ -200,11 +202,16 @@ static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource) uint32_t hw_lock_control_reg; int cnt; - PMD_INIT_FUNC_TRACE(); +#ifndef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC + if (resource) + PMD_INIT_FUNC_TRACE(sc); +#else + PMD_INIT_FUNC_TRACE(sc); +#endif /* validate the resource is within range */ if (resource > HW_LOCK_MAX_RESOURCE_VALUE) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "resource 0x%x > HW_LOCK_MAX_RESOURCE_VALUE", resource); return -1; @@ -220,7 +227,7 @@ static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource) /* validate the resource is not already taken */ lock_status = REG_RD(sc, hw_lock_control_reg); if (lock_status & resource_bit) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "resource in use (status 0x%x bit 0x%x)", lock_status, resource_bit); return -1; @@ -236,7 +243,8 @@ static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource) DELAY(5000); } - PMD_DRV_LOG(NOTICE, "Resource lock timeout!"); + PMD_DRV_LOG(NOTICE, sc, "Resource 0x%x resource_bit 0x%x lock timeout!", + resource, resource_bit); return -1; } @@ -247,13 +255,18 @@ static int bnx2x_release_hw_lock(struct bnx2x_softc *sc, uint32_t resource) int func = SC_FUNC(sc); uint32_t hw_lock_control_reg; - PMD_INIT_FUNC_TRACE(); +#ifndef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC + if (resource) + PMD_INIT_FUNC_TRACE(sc); +#else + PMD_INIT_FUNC_TRACE(sc); +#endif /* validate the resource is within range */ if (resource > HW_LOCK_MAX_RESOURCE_VALUE) { - PMD_DRV_LOG(NOTICE, - "resource 0x%x > HW_LOCK_MAX_RESOURCE_VALUE", - resource); + PMD_DRV_LOG(NOTICE, sc, + "(resource 0x%x > HW_LOCK_MAX_RESOURCE_VALUE)" + " resource_bit 0x%x", resource, resource_bit); return -1; } @@ -267,7 +280,7 @@ static int bnx2x_release_hw_lock(struct bnx2x_softc *sc, uint32_t resource) /* validate the resource is currently taken */ lock_status = REG_RD(sc, hw_lock_control_reg); if (!(lock_status & resource_bit)) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "resource not in use (status 0x%x bit 0x%x)", lock_status, resource_bit); return -1; @@ -277,6 +290,18 @@ static int bnx2x_release_hw_lock(struct bnx2x_softc *sc, uint32_t resource) return 0; } +static void bnx2x_acquire_phy_lock(struct bnx2x_softc *sc) +{ + BNX2X_PHY_LOCK(sc); + bnx2x_acquire_hw_lock(sc, HW_LOCK_RESOURCE_MDIO); +} + +static void bnx2x_release_phy_lock(struct bnx2x_softc *sc) +{ + bnx2x_release_hw_lock(sc, HW_LOCK_RESOURCE_MDIO); + BNX2X_PHY_UNLOCK(sc); +} + /* copy command into DMAE command memory and set DMAE command Go */ void bnx2x_post_dmae(struct bnx2x_softc *sc, struct dmae_command *dmae, int idx) { @@ -369,7 +394,7 @@ bnx2x_issue_dmae_with_comp(struct bnx2x_softc *sc, struct dmae_command *dmae) if (!timeout || (sc->recovery_state != BNX2X_RECOVERY_DONE && sc->recovery_state != BNX2X_RECOVERY_NIC_LOADING)) { - PMD_DRV_LOG(INFO, "DMAE timeout!"); + PMD_DRV_LOG(INFO, sc, "DMAE timeout!"); return DMAE_TIMEOUT; } @@ -378,7 +403,7 @@ bnx2x_issue_dmae_with_comp(struct bnx2x_softc *sc, struct dmae_command *dmae) } if (*wb_comp & DMAE_PCI_ERR_FLAG) { - PMD_DRV_LOG(INFO, "DMAE PCI error!"); + PMD_DRV_LOG(INFO, sc, "DMAE PCI error!"); return DMAE_PCI_ERROR; } @@ -537,7 +562,7 @@ void elink_cb_event_log(__rte_unused struct bnx2x_softc *sc, __rte_unused const elink_log_id_t elink_log_id, ...) { - PMD_DRV_LOG(DEBUG, "ELINK EVENT LOG (%d)", elink_log_id); + PMD_DRV_LOG(DEBUG, sc, "ELINK EVENT LOG (%d)", elink_log_id); } static int bnx2x_set_spio(struct bnx2x_softc *sc, int spio, uint32_t mode) @@ -546,7 +571,7 @@ static int bnx2x_set_spio(struct bnx2x_softc *sc, int spio, uint32_t mode) /* Only 2 SPIOs are configurable */ if ((spio != MISC_SPIO_SPIO4) && (spio != MISC_SPIO_SPIO5)) { - PMD_DRV_LOG(NOTICE, "Invalid SPIO 0x%x", spio); + PMD_DRV_LOG(NOTICE, sc, "Invalid SPIO 0x%x", spio); return -1; } @@ -596,7 +621,7 @@ static int bnx2x_gpio_read(struct bnx2x_softc *sc, int gpio_num, uint8_t port) uint32_t gpio_reg; if (gpio_num > MISC_REGISTERS_GPIO_3) { - PMD_DRV_LOG(NOTICE, "Invalid GPIO %d", gpio_num); + PMD_DRV_LOG(NOTICE, sc, "Invalid GPIO %d", gpio_num); return -1; } @@ -621,7 +646,7 @@ bnx2x_gpio_write(struct bnx2x_softc *sc, int gpio_num, uint32_t mode, uint8_t po uint32_t gpio_reg; if (gpio_num > MISC_REGISTERS_GPIO_3) { - PMD_DRV_LOG(NOTICE, "Invalid GPIO %d", gpio_num); + PMD_DRV_LOG(NOTICE, sc, "Invalid GPIO %d", gpio_num); return -1; } @@ -690,7 +715,8 @@ bnx2x_gpio_mult_write(struct bnx2x_softc *sc, uint8_t pins, uint32_t mode) break; default: - PMD_DRV_LOG(NOTICE, "Invalid GPIO mode assignment %d", mode); + PMD_DRV_LOG(NOTICE, sc, + "Invalid GPIO mode assignment %d", mode); bnx2x_release_hw_lock(sc, HW_LOCK_RESOURCE_GPIO); return -1; } @@ -716,7 +742,7 @@ bnx2x_gpio_int_write(struct bnx2x_softc *sc, int gpio_num, uint32_t mode, uint32_t gpio_reg; if (gpio_num > MISC_REGISTERS_GPIO_3) { - PMD_DRV_LOG(NOTICE, "Invalid GPIO %d", gpio_num); + PMD_DRV_LOG(NOTICE, sc, "Invalid GPIO %d", gpio_num); return -1; } @@ -793,7 +819,7 @@ elink_cb_fw_command(struct bnx2x_softc *sc, uint32_t command, uint32_t param) SHMEM_WR(sc, func_mb[mb_idx].drv_mb_param, param); SHMEM_WR(sc, func_mb[mb_idx].drv_mb_header, (command | seq)); - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "wrote command 0x%08x to FW MB param 0x%08x", (command | seq), param); @@ -808,7 +834,7 @@ elink_cb_fw_command(struct bnx2x_softc *sc, uint32_t command, uint32_t param) rc &= FW_MSG_CODE_MASK; } else { /* Ruh-roh! */ - PMD_DRV_LOG(NOTICE, "FW failed to respond!"); + PMD_DRV_LOG(NOTICE, sc, "FW failed to respond!"); rc = 0; } @@ -1026,12 +1052,12 @@ bnx2x_sp_post(struct bnx2x_softc *sc, int command, int cid, uint32_t data_hi, if (common) { if (!atomic_load_acq_long(&sc->eq_spq_left)) { - PMD_DRV_LOG(INFO, "EQ ring is full!"); + PMD_DRV_LOG(INFO, sc, "EQ ring is full!"); return -1; } } else { if (!atomic_load_acq_long(&sc->cq_spq_left)) { - PMD_DRV_LOG(INFO, "SPQ ring is full!"); + PMD_DRV_LOG(INFO, sc, "SPQ ring is full!"); return -1; } } @@ -1064,7 +1090,7 @@ bnx2x_sp_post(struct bnx2x_softc *sc, int command, int cid, uint32_t data_hi, atomic_subtract_acq_long(&sc->cq_spq_left, 1); } - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "SPQE[%x] (%x:%x) (cmd, common?) (%d,%d) hw_cid %x" "data (%x:%x) type(0x%x) left (CQ, EQ) (%lx,%lx)", sc->spq_prod_idx, @@ -1137,44 +1163,45 @@ bnx2x_sp_event(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, enum ecore_queue_cmd drv_cmd = ECORE_Q_CMD_MAX; struct ecore_queue_sp_obj *q_obj = &BNX2X_SP_OBJ(sc, fp).q_obj; - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "fp=%d cid=%d got ramrod #%d state is %x type is %d", fp->index, cid, command, sc->state, rr_cqe->ramrod_cqe.ramrod_type); switch (command) { case (RAMROD_CMD_ID_ETH_CLIENT_UPDATE): - PMD_DRV_LOG(DEBUG, "got UPDATE ramrod. CID %d", cid); + PMD_DRV_LOG(DEBUG, sc, "got UPDATE ramrod. CID %d", cid); drv_cmd = ECORE_Q_CMD_UPDATE; break; case (RAMROD_CMD_ID_ETH_CLIENT_SETUP): - PMD_DRV_LOG(DEBUG, "got MULTI[%d] setup ramrod", cid); + PMD_DRV_LOG(DEBUG, sc, "got MULTI[%d] setup ramrod", cid); drv_cmd = ECORE_Q_CMD_SETUP; break; case (RAMROD_CMD_ID_ETH_TX_QUEUE_SETUP): - PMD_DRV_LOG(DEBUG, "got MULTI[%d] tx-only setup ramrod", cid); + PMD_DRV_LOG(DEBUG, sc, + "got MULTI[%d] tx-only setup ramrod", cid); drv_cmd = ECORE_Q_CMD_SETUP_TX_ONLY; break; case (RAMROD_CMD_ID_ETH_HALT): - PMD_DRV_LOG(DEBUG, "got MULTI[%d] halt ramrod", cid); + PMD_DRV_LOG(DEBUG, sc, "got MULTI[%d] halt ramrod", cid); drv_cmd = ECORE_Q_CMD_HALT; break; case (RAMROD_CMD_ID_ETH_TERMINATE): - PMD_DRV_LOG(DEBUG, "got MULTI[%d] teminate ramrod", cid); + PMD_DRV_LOG(DEBUG, sc, "got MULTI[%d] teminate ramrod", cid); drv_cmd = ECORE_Q_CMD_TERMINATE; break; case (RAMROD_CMD_ID_ETH_EMPTY): - PMD_DRV_LOG(DEBUG, "got MULTI[%d] empty ramrod", cid); + PMD_DRV_LOG(DEBUG, sc, "got MULTI[%d] empty ramrod", cid); drv_cmd = ECORE_Q_CMD_EMPTY; break; default: - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "ERROR: unexpected MC reply (%d)" "on fp[%d]", command, fp->index); return; @@ -1196,7 +1223,7 @@ bnx2x_sp_event(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, atomic_add_acq_long(&sc->cq_spq_left, 1); - PMD_DRV_LOG(DEBUG, "sc->cq_spq_left 0x%lx", + PMD_DRV_LOG(DEBUG, sc, "sc->cq_spq_left 0x%lx", atomic_load_acq_long(&sc->cq_spq_left)); } @@ -1392,7 +1419,7 @@ bnx2x_del_all_macs(struct bnx2x_softc *sc, struct ecore_vlan_mac_obj *mac_obj, rc = mac_obj->delete_all(sc, mac_obj, &vlan_mac_flags, &ramrod_flags); if (rc < 0) - PMD_DRV_LOG(ERR, "Failed to delete MACs (%d)", rc); + PMD_DRV_LOG(ERR, sc, "Failed to delete MACs (%d)", rc); return rc; } @@ -1543,13 +1570,13 @@ static int bnx2x_nic_load_no_mcp(struct bnx2x_softc *sc) int path = SC_PATH(sc); int port = SC_PORT(sc); - PMD_DRV_LOG(INFO, "NO MCP - load counts[%d] %d, %d, %d", + PMD_DRV_LOG(INFO, sc, "NO MCP - load counts[%d] %d, %d, %d", path, load_count[path][0], load_count[path][1], load_count[path][2]); load_count[path][0]++; load_count[path][1 + port]++; - PMD_DRV_LOG(INFO, "NO MCP - new load counts[%d] %d, %d, %d", + PMD_DRV_LOG(INFO, sc, "NO MCP - new load counts[%d] %d, %d, %d", path, load_count[path][0], load_count[path][1], load_count[path][2]); if (load_count[path][0] == 1) @@ -1566,12 +1593,12 @@ static int bnx2x_nic_unload_no_mcp(struct bnx2x_softc *sc) int port = SC_PORT(sc); int path = SC_PATH(sc); - PMD_DRV_LOG(INFO, "NO MCP - load counts[%d] %d, %d, %d", + PMD_DRV_LOG(INFO, sc, "NO MCP - load counts[%d] %d, %d, %d", path, load_count[path][0], load_count[path][1], load_count[path][2]); load_count[path][0]--; load_count[path][1 + port]--; - PMD_DRV_LOG(INFO, "NO MCP - new load counts[%d] %d, %d, %d", + PMD_DRV_LOG(INFO, sc, "NO MCP - new load counts[%d] %d, %d, %d", path, load_count[path][0], load_count[path][1], load_count[path][2]); if (load_count[path][0] == 0) { @@ -1651,7 +1678,7 @@ static int bnx2x_func_wait_started(struct bnx2x_softc *sc) */ struct ecore_func_state_params func_params = { NULL }; - PMD_DRV_LOG(NOTICE, "Unexpected function state! " + PMD_DRV_LOG(NOTICE, sc, "Unexpected function state! " "Forcing STARTED-->TX_STOPPED-->STARTED"); func_params.f_obj = &sc->func_obj; @@ -1675,7 +1702,7 @@ static int bnx2x_stop_queue(struct bnx2x_softc *sc, int index) struct ecore_queue_state_params q_params = { NULL }; int rc; - PMD_DRV_LOG(DEBUG, "stopping queue %d cid %d", index, fp->index); + PMD_DRV_LOG(DEBUG, sc, "stopping queue %d cid %d", index, fp->index); q_params.q_obj = &sc->sp_objs[fp->index].q_obj; /* We want to wait for completion in this context */ @@ -1726,7 +1753,7 @@ static uint8_t bnx2x_wait_sp_comp(struct bnx2x_softc *sc, unsigned long mask) tmp = atomic_load_acq_long(&sc->sp_state); if (tmp & mask) { - PMD_DRV_LOG(INFO, "Filtering completion timed out: " + PMD_DRV_LOG(INFO, sc, "Filtering completion timed out: " "sp_state 0x%lx, mask 0x%lx", tmp, mask); return FALSE; } @@ -1752,7 +1779,7 @@ static int bnx2x_func_stop(struct bnx2x_softc *sc) */ rc = ecore_func_state_change(sc, &func_params); if (rc) { - PMD_DRV_LOG(NOTICE, "FUNC_STOP ramrod failed. " + PMD_DRV_LOG(NOTICE, sc, "FUNC_STOP ramrod failed. " "Running a dry transaction"); bnx2x_set_bit(RAMROD_DRV_CLR_ONLY, &func_params.ramrod_flags); return ecore_func_state_change(sc, &func_params); @@ -1801,14 +1828,16 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li rc = bnx2x_del_all_macs(sc, &sc->sp_objs[0].mac_obj, ECORE_ETH_MAC, FALSE); if (rc < 0) { - PMD_DRV_LOG(NOTICE, "Failed to delete all ETH MACs (%d)", rc); + PMD_DRV_LOG(NOTICE, sc, + "Failed to delete all ETH MACs (%d)", rc); } /* Clean up UC list */ rc = bnx2x_del_all_macs(sc, &sc->sp_objs[0].mac_obj, ECORE_UC_LIST_MAC, TRUE); if (rc < 0) { - PMD_DRV_LOG(NOTICE, "Failed to delete UC MACs list (%d)", rc); + PMD_DRV_LOG(NOTICE, sc, + "Failed to delete UC MACs list (%d)", rc); } /* Disable LLH */ @@ -1831,7 +1860,7 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li rparam.mcast_obj = &sc->mcast_obj; rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_DEL); if (rc < 0) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "Failed to send DEL MCAST command (%d)", rc); } @@ -1848,7 +1877,7 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li */ rc = bnx2x_func_wait_started(sc); if (rc) { - PMD_DRV_LOG(NOTICE, "bnx2x_func_wait_started failed"); + PMD_DRV_LOG(NOTICE, sc, "bnx2x_func_wait_started failed"); } /* @@ -1866,14 +1895,14 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li * very wrong has happen. */ if (!bnx2x_wait_sp_comp(sc, ~0x0UL)) { - PMD_DRV_LOG(NOTICE, "Common slow path ramrods got stuck!"); + PMD_DRV_LOG(NOTICE, sc, "Common slow path ramrods got stuck!"); } unload_error: rc = bnx2x_func_stop(sc); if (rc) { - PMD_DRV_LOG(NOTICE, "Function stop failed!"); + PMD_DRV_LOG(NOTICE, sc, "Function stop failed!"); } /* disable HW interrupts */ @@ -1882,7 +1911,7 @@ unload_error: /* Reset the chip */ rc = bnx2x_reset_hw(sc, reset_code); if (rc) { - PMD_DRV_LOG(NOTICE, "Hardware reset failed"); + PMD_DRV_LOG(NOTICE, sc, "Hardware reset failed"); } /* Report UNLOAD_DONE to MCP */ @@ -1893,7 +1922,7 @@ static void bnx2x_disable_close_the_gate(struct bnx2x_softc *sc) { uint32_t val; - PMD_DRV_LOG(DEBUG, "Disabling 'close the gates'"); + PMD_DRV_LOG(DEBUG, sc, "Disabling 'close the gates'"); val = REG_RD(sc, MISC_REG_AEU_GENERAL_MASK); val &= ~(MISC_AEU_GENERAL_MASK_REG_AEU_PXP_CLOSE_MASK | @@ -1924,7 +1953,7 @@ static void bnx2x_squeeze_objects(struct bnx2x_softc *sc) rc = mac_obj->delete_all(sc, &sc->sp_objs->mac_obj, &vlan_mac_flags, &ramrod_flags); if (rc != 0) { - PMD_DRV_LOG(NOTICE, "Failed to clean ETH MACs (%d)", rc); + PMD_DRV_LOG(NOTICE, sc, "Failed to clean ETH MACs (%d)", rc); } /* Cleanup UC list */ @@ -1932,7 +1961,8 @@ static void bnx2x_squeeze_objects(struct bnx2x_softc *sc) bnx2x_set_bit(ECORE_UC_LIST_MAC, &vlan_mac_flags); rc = mac_obj->delete_all(sc, mac_obj, &vlan_mac_flags, &ramrod_flags); if (rc != 0) { - PMD_DRV_LOG(NOTICE, "Failed to clean UC list MACs (%d)", rc); + PMD_DRV_LOG(NOTICE, sc, + "Failed to clean UC list MACs (%d)", rc); } /* Now clean mcast object... */ @@ -1943,7 +1973,7 @@ static void bnx2x_squeeze_objects(struct bnx2x_softc *sc) /* Add a DEL command... */ rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_DEL); if (rc < 0) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "Failed to send DEL MCAST command (%d)", rc); } @@ -1952,7 +1982,7 @@ static void bnx2x_squeeze_objects(struct bnx2x_softc *sc) rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_CONT); while (rc != 0) { if (rc < 0) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "Failed to clean MCAST object (%d)", rc); return; } @@ -1969,7 +1999,7 @@ bnx2x_nic_unload(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_link uint8_t global = FALSE; uint32_t val; - PMD_DRV_LOG(DEBUG, "Starting NIC unload..."); + PMD_DRV_LOG(DEBUG, sc, "Starting NIC unload..."); /* stop the periodic callout */ bnx2x_periodic_stop(sc); @@ -1996,7 +2026,7 @@ bnx2x_nic_unload(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_link bnx2x_release_leader_lock(sc); mb(); - PMD_DRV_LOG(NOTICE, "Can't unload in closed or error state"); + PMD_DRV_LOG(NOTICE, sc, "Can't unload in closed or error state"); return -1; } @@ -2101,7 +2131,7 @@ bnx2x_nic_unload(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_link bnx2x_disable_close_the_gate(sc); } - PMD_DRV_LOG(DEBUG, "Ended NIC unload"); + PMD_DRV_LOG(DEBUG, sc, "Ended NIC unload"); return 0; } @@ -2249,7 +2279,7 @@ static void bnx2x_ilt_set_info(struct bnx2x_softc *sc) struct ecore_ilt *ilt = sc->ilt; uint16_t line = 0; - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); ilt->start_line = FUNC_ILT_BASE(SC_FUNC(sc)); @@ -2403,7 +2433,7 @@ static int bnx2x_alloc_mem(struct bnx2x_softc *sc) bnx2x_alloc_ilt_lines_mem(sc); if (ecore_ilt_mem_op(sc, ILT_MEMOP_ALLOC)) { - PMD_DRV_LOG(NOTICE, "ecore_ilt_mem_op ILT_MEMOP_ALLOC failed"); + PMD_DRV_LOG(NOTICE, sc, "ecore_ilt_mem_op ILT_MEMOP_ALLOC failed"); bnx2x_free_mem(sc); return -1; } @@ -2606,7 +2636,7 @@ static void bnx2x_set_pf_load(struct bnx2x_softc *sc) bnx2x_acquire_hw_lock(sc, HW_LOCK_RESOURCE_RECOVERY_REG); - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); val = REG_RD(sc, BNX2X_RECOVERY_GLOB_REG); @@ -2659,14 +2689,14 @@ static uint8_t bnx2x_clear_pf_load(struct bnx2x_softc *sc) /* send load requrest to mcp and analyze response */ static int bnx2x_nic_load_request(struct bnx2x_softc *sc, uint32_t * load_code) { - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); /* init fw_seq */ sc->fw_seq = (SHMEM_RD(sc, func_mb[SC_FW_MB_IDX(sc)].drv_mb_header) & DRV_MSG_SEQ_NUMBER_MASK); - PMD_DRV_LOG(DEBUG, "initial fw_seq 0x%04x", sc->fw_seq); + PMD_DRV_LOG(DEBUG, sc, "initial fw_seq 0x%04x", sc->fw_seq); #ifdef BNX2X_PULSE /* get the current FW pulse sequence */ @@ -2685,13 +2715,13 @@ static int bnx2x_nic_load_request(struct bnx2x_softc *sc, uint32_t * load_code) /* if the MCP fails to respond we must abort */ if (!(*load_code)) { - PMD_DRV_LOG(NOTICE, "MCP response failure!"); + PMD_DRV_LOG(NOTICE, sc, "MCP response failure!"); return -1; } /* if MCP refused then must abort */ if ((*load_code) == FW_MSG_CODE_DRV_LOAD_REFUSED) { - PMD_DRV_LOG(NOTICE, "MCP refused load request"); + PMD_DRV_LOG(NOTICE, sc, "MCP refused load request"); return -1; } @@ -2718,12 +2748,12 @@ static int bnx2x_nic_load_analyze_req(struct bnx2x_softc *sc, uint32_t load_code /* read loaded FW from chip */ loaded_fw = REG_RD(sc, XSEM_REG_PRAM); - PMD_DRV_LOG(DEBUG, "loaded FW 0x%08x / my FW 0x%08x", + PMD_DRV_LOG(DEBUG, sc, "loaded FW 0x%08x / my FW 0x%08x", loaded_fw, my_fw); /* abort nic load if version mismatch */ if (my_fw != loaded_fw) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "FW 0x%08x already loaded (mine is 0x%08x)", loaded_fw, my_fw); return -1; @@ -2738,7 +2768,7 @@ static void bnx2x_nic_load_pmf(struct bnx2x_softc *sc, uint32_t load_code) { uint32_t ncsi_oem_data_addr; - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); if ((load_code == FW_MSG_CODE_DRV_LOAD_COMMON) || (load_code == FW_MSG_CODE_DRV_LOAD_COMMON_CHIP) || @@ -2753,7 +2783,7 @@ static void bnx2x_nic_load_pmf(struct bnx2x_softc *sc, uint32_t load_code) sc->port.pmf = 0; } - PMD_DRV_LOG(DEBUG, "pmf %d", sc->port.pmf); + PMD_DRV_LOG(DEBUG, sc, "pmf %d", sc->port.pmf); if (load_code == FW_MSG_CODE_DRV_LOAD_COMMON_CHIP) { if (SHMEM2_HAS(sc, ncsi_oem_data_addr)) { @@ -2796,10 +2826,10 @@ static void bnx2x_read_mf_cfg(struct bnx2x_softc *sc) if (sc->devinfo.mf_info.mf_config[SC_VN(sc)] & FUNC_MF_CFG_FUNC_DISABLED) { - PMD_DRV_LOG(DEBUG, "mf_cfg function disabled"); + PMD_DRV_LOG(DEBUG, sc, "mf_cfg function disabled"); sc->flags |= BNX2X_MF_FUNC_DIS; } else { - PMD_DRV_LOG(DEBUG, "mf_cfg function enabled"); + PMD_DRV_LOG(DEBUG, sc, "mf_cfg function enabled"); sc->flags &= ~BNX2X_MF_FUNC_DIS; } } @@ -2820,7 +2850,7 @@ static int bnx2x_acquire_alr(struct bnx2x_softc *sc) } if (!(val & (1L << 31))) { - PMD_DRV_LOG(NOTICE, "Cannot acquire MCP access lock register"); + PMD_DRV_LOG(NOTICE, sc, "Cannot acquire MCP access lock register"); return -1; } @@ -2848,7 +2878,7 @@ static void bnx2x_fan_failure(struct bnx2x_softc *sc) ext_phy_config); /* log the failure */ - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "Fan Failure has caused the driver to shutdown " "the card to prevent permanent damage. " "Please contact OEM Support for assistance"); @@ -2905,7 +2935,7 @@ static void bnx2x_link_attn(struct bnx2x_softc *sc) } } - bnx2x_link_report(sc); + bnx2x_link_report_locked(sc); if (IS_MF(sc)) { bnx2x_link_sync_notify(sc); @@ -2926,7 +2956,7 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted) uint32_t cnt; if (sc->attn_state & asserted) { - PMD_DRV_LOG(ERR, "IGU ERROR attn=0x%08x", asserted); + PMD_DRV_LOG(ERR, sc, "IGU ERROR attn=0x%08x", asserted); } bnx2x_acquire_hw_lock(sc, HW_LOCK_RESOURCE_PORT0_ATT_MASK + port); @@ -2944,6 +2974,7 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted) if (asserted & ATTN_HARD_WIRED_MASK) { if (asserted & ATTN_NIG_FOR_FUNC) { + bnx2x_acquire_phy_lock(sc); /* save nig interrupt mask */ nig_mask = REG_RD(sc, nig_int_mask_addr); @@ -2958,45 +2989,45 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted) } if (asserted & ATTN_SW_TIMER_4_FUNC) { - PMD_DRV_LOG(DEBUG, "ATTN_SW_TIMER_4_FUNC!"); + PMD_DRV_LOG(DEBUG, sc, "ATTN_SW_TIMER_4_FUNC!"); } if (asserted & GPIO_2_FUNC) { - PMD_DRV_LOG(DEBUG, "GPIO_2_FUNC!"); + PMD_DRV_LOG(DEBUG, sc, "GPIO_2_FUNC!"); } if (asserted & GPIO_3_FUNC) { - PMD_DRV_LOG(DEBUG, "GPIO_3_FUNC!"); + PMD_DRV_LOG(DEBUG, sc, "GPIO_3_FUNC!"); } if (asserted & GPIO_4_FUNC) { - PMD_DRV_LOG(DEBUG, "GPIO_4_FUNC!"); + PMD_DRV_LOG(DEBUG, sc, "GPIO_4_FUNC!"); } if (port == 0) { if (asserted & ATTN_GENERAL_ATTN_1) { - PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_1!"); + PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_1!"); REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_1, 0x0); } if (asserted & ATTN_GENERAL_ATTN_2) { - PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_2!"); + PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_2!"); REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_2, 0x0); } if (asserted & ATTN_GENERAL_ATTN_3) { - PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_3!"); + PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_3!"); REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_3, 0x0); } } else { if (asserted & ATTN_GENERAL_ATTN_4) { - PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_4!"); + PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_4!"); REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_4, 0x0); } if (asserted & ATTN_GENERAL_ATTN_5) { - PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_5!"); + PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_5!"); REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_5, 0x0); } if (asserted & ATTN_GENERAL_ATTN_6) { - PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_6!"); + PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_6!"); REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_6, 0x0); } } @@ -3010,7 +3041,7 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted) reg_addr = (BAR_IGU_INTMEM + IGU_CMD_ATTN_BIT_SET_UPPER * 8); } - PMD_DRV_LOG(DEBUG, "about to mask 0x%08x at %s addr 0x%08x", + PMD_DRV_LOG(DEBUG, sc, "about to mask 0x%08x at %s addr 0x%08x", asserted, (sc->devinfo.int_block == INT_BLOCK_HC) ? "HC" : "IGU", reg_addr); @@ -3032,7 +3063,7 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted) && (++cnt < MAX_IGU_ATTN_ACK_TO)); if (!igu_acked) { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Failed to verify IGU ack on time"); } @@ -3041,6 +3072,7 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted) REG_WR(sc, nig_int_mask_addr, nig_mask); + bnx2x_release_phy_lock(sc); } } @@ -3048,7 +3080,7 @@ static void bnx2x_print_next_block(__rte_unused struct bnx2x_softc *sc, __rte_unused int idx, __rte_unused const char *blk) { - PMD_DRV_LOG(INFO, "%s%s", idx ? ", " : "", blk); + PMD_DRV_LOG(INFO, sc, "%s%s", idx ? ", " : "", blk); } static int @@ -3356,7 +3388,7 @@ bnx2x_parity_attn(struct bnx2x_softc *sc, uint8_t * global, uint8_t print, (sig[2] & HW_PRTY_ASSERT_SET_2) || (sig[3] & HW_PRTY_ASSERT_SET_3) || (sig[4] & HW_PRTY_ASSERT_SET_4)) { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Parity error: HW block parity attention:" "[0]:0x%08x [1]:0x%08x [2]:0x%08x [3]:0x%08x [4]:0x%08x", (uint32_t) (sig[0] & HW_PRTY_ASSERT_SET_0), @@ -3366,7 +3398,7 @@ bnx2x_parity_attn(struct bnx2x_softc *sc, uint8_t * global, uint8_t print, (uint32_t) (sig[4] & HW_PRTY_ASSERT_SET_4)); if (print) - PMD_DRV_LOG(INFO, "Parity errors detected in blocks: "); + PMD_DRV_LOG(INFO, sc, "Parity errors detected in blocks: "); par_num = bnx2x_check_blocks_with_parity0(sc, sig[0] & @@ -3390,7 +3422,7 @@ bnx2x_parity_attn(struct bnx2x_softc *sc, uint8_t * global, uint8_t print, par_num, print); if (print) - PMD_DRV_LOG(INFO, ""); + PMD_DRV_LOG(INFO, sc, ""); return TRUE; } @@ -3422,64 +3454,64 @@ static void bnx2x_attn_int_deasserted4(struct bnx2x_softc *sc, uint32_t attn) if (attn & AEU_INPUTS_ATTN_BITS_PGLUE_HW_INTERRUPT) { val = REG_RD(sc, PGLUE_B_REG_PGLUE_B_INT_STS_CLR); - PMD_DRV_LOG(INFO, "ERROR: PGLUE hw attention 0x%08x", val); + PMD_DRV_LOG(INFO, sc, "ERROR: PGLUE hw attention 0x%08x", val); if (val & PGLUE_B_PGLUE_B_INT_STS_REG_ADDRESS_ERROR) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_ADDRESS_ERROR"); if (val & PGLUE_B_PGLUE_B_INT_STS_REG_INCORRECT_RCV_BEHAVIOR) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_INCORRECT_RCV_BEHAVIOR"); if (val & PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN"); if (val & PGLUE_B_PGLUE_B_INT_STS_REG_VF_LENGTH_VIOLATION_ATTN) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_VF_LENGTH_VIOLATION_ATTN"); if (val & PGLUE_B_PGLUE_B_INT_STS_REG_VF_GRC_SPACE_VIOLATION_ATTN) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_VF_GRC_SPACE_VIOLATION_ATTN"); if (val & PGLUE_B_PGLUE_B_INT_STS_REG_VF_MSIX_BAR_VIOLATION_ATTN) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_VF_MSIX_BAR_VIOLATION_ATTN"); if (val & PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_ERROR_ATTN) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_ERROR_ATTN"); if (val & PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_IN_TWO_RCBS_ATTN) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_IN_TWO_RCBS_ATTN"); if (val & PGLUE_B_PGLUE_B_INT_STS_REG_CSSNOOP_FIFO_OVERFLOW) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_CSSNOOP_FIFO_OVERFLOW"); } if (attn & AEU_INPUTS_ATTN_BITS_ATC_HW_INTERRUPT) { val = REG_RD(sc, ATC_REG_ATC_INT_STS_CLR); - PMD_DRV_LOG(INFO, "ERROR: ATC hw attention 0x%08x", val); + PMD_DRV_LOG(INFO, sc, "ERROR: ATC hw attention 0x%08x", val); if (val & ATC_ATC_INT_STS_REG_ADDRESS_ERROR) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: ATC_ATC_INT_STS_REG_ADDRESS_ERROR"); if (val & ATC_ATC_INT_STS_REG_ATC_TCPL_TO_NOT_PEND) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: ATC_ATC_INT_STS_REG_ATC_TCPL_TO_NOT_PEND"); if (val & ATC_ATC_INT_STS_REG_ATC_GPA_MULTIPLE_HITS) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: ATC_ATC_INT_STS_REG_ATC_GPA_MULTIPLE_HITS"); if (val & ATC_ATC_INT_STS_REG_ATC_RCPL_TO_EMPTY_CNT) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: ATC_ATC_INT_STS_REG_ATC_RCPL_TO_EMPTY_CNT"); if (val & ATC_ATC_INT_STS_REG_ATC_TCPL_ERROR) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: ATC_ATC_INT_STS_REG_ATC_TCPL_ERROR"); if (val & ATC_ATC_INT_STS_REG_ATC_IREQ_LESS_THAN_STU) - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: ATC_ATC_INT_STS_REG_ATC_IREQ_LESS_THAN_STU"); } if (attn & (AEU_INPUTS_ATTN_BITS_PGLUE_PARITY_ERROR | AEU_INPUTS_ATTN_BITS_ATC_PARITY_ERROR)) { - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "ERROR: FATAL parity attention set4 0x%08x", (uint32_t) (attn & (AEU_INPUTS_ATTN_BITS_PGLUE_PARITY_ERROR @@ -3602,11 +3634,11 @@ static void bnx2x_dcc_event(struct bnx2x_softc *sc, uint32_t dcc_event) */ if (sc->devinfo. mf_info.mf_config[SC_VN(sc)] & FUNC_MF_CFG_FUNC_DISABLED) { - PMD_DRV_LOG(DEBUG, "mf_cfg function disabled"); + PMD_DRV_LOG(DEBUG, sc, "mf_cfg function disabled"); sc->flags |= BNX2X_MF_FUNC_DIS; bnx2x_e1h_disable(sc); } else { - PMD_DRV_LOG(DEBUG, "mf_cfg function enabled"); + PMD_DRV_LOG(DEBUG, sc, "mf_cfg function enabled"); sc->flags &= ~BNX2X_MF_FUNC_DIS; bnx2x_e1h_enable(sc); } @@ -3661,7 +3693,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc) last_idx = REG_RD8(sc, BAR_XSTRORM_INTMEM + XSTORM_ASSERT_LIST_INDEX_OFFSET); if (last_idx) - PMD_DRV_LOG(ERR, "XSTORM_ASSERT_LIST_INDEX 0x%x", last_idx); + PMD_DRV_LOG(ERR, sc, "XSTORM_ASSERT_LIST_INDEX 0x%x", last_idx); /* print the asserts */ for (i = 0; i < STORM_ASSERT_ARRAY_SIZE; i++) { @@ -3683,7 +3715,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc) 12); if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "XSTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x", i, row3, row2, row1, row0); rc++; @@ -3696,7 +3728,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc) last_idx = REG_RD8(sc, BAR_TSTRORM_INTMEM + TSTORM_ASSERT_LIST_INDEX_OFFSET); if (last_idx) { - PMD_DRV_LOG(ERR, "TSTORM_ASSERT_LIST_INDEX 0x%x", last_idx); + PMD_DRV_LOG(ERR, sc, "TSTORM_ASSERT_LIST_INDEX 0x%x", last_idx); } /* print the asserts */ @@ -3719,7 +3751,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc) 12); if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "TSTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x", i, row3, row2, row1, row0); rc++; @@ -3732,7 +3764,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc) last_idx = REG_RD8(sc, BAR_CSTRORM_INTMEM + CSTORM_ASSERT_LIST_INDEX_OFFSET); if (last_idx) { - PMD_DRV_LOG(ERR, "CSTORM_ASSERT_LIST_INDEX 0x%x", last_idx); + PMD_DRV_LOG(ERR, sc, "CSTORM_ASSERT_LIST_INDEX 0x%x", last_idx); } /* print the asserts */ @@ -3755,7 +3787,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc) 12); if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "CSTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x", i, row3, row2, row1, row0); rc++; @@ -3768,7 +3800,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc) last_idx = REG_RD8(sc, BAR_USTRORM_INTMEM + USTORM_ASSERT_LIST_INDEX_OFFSET); if (last_idx) { - PMD_DRV_LOG(ERR, "USTORM_ASSERT_LIST_INDEX 0x%x", last_idx); + PMD_DRV_LOG(ERR, sc, "USTORM_ASSERT_LIST_INDEX 0x%x", last_idx); } /* print the asserts */ @@ -3791,7 +3823,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc) 12); if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "USTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x", i, row3, row2, row1, row0); rc++; @@ -3840,8 +3872,10 @@ static void bnx2x_attn_int_deasserted3(struct bnx2x_softc *sc, uint32_t attn) if (sc->link_vars.periodic_flags & ELINK_PERIODIC_FLAGS_LINK_EVENT) { /* sync with link */ + bnx2x_acquire_phy_lock(sc); sc->link_vars.periodic_flags &= ~ELINK_PERIODIC_FLAGS_LINK_EVENT; + bnx2x_release_phy_lock(sc); if (IS_MF(sc)) { bnx2x_link_sync_notify(sc); } @@ -3856,7 +3890,7 @@ static void bnx2x_attn_int_deasserted3(struct bnx2x_softc *sc, uint32_t attn) } else if (attn & BNX2X_MC_ASSERT_BITS) { - PMD_DRV_LOG(ERR, "MC assert!"); + PMD_DRV_LOG(ERR, sc, "MC assert!"); bnx2x_mc_assert(sc); REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_10, 0); REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_9, 0); @@ -3866,24 +3900,24 @@ static void bnx2x_attn_int_deasserted3(struct bnx2x_softc *sc, uint32_t attn) } else if (attn & BNX2X_MCP_ASSERT) { - PMD_DRV_LOG(ERR, "MCP assert!"); + PMD_DRV_LOG(ERR, sc, "MCP assert!"); REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_11, 0); } else { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Unknown HW assert! (attn 0x%08x)", attn); } } if (attn & EVEREST_LATCHED_ATTN_IN_USE_MASK) { - PMD_DRV_LOG(ERR, "LATCHED attention 0x%08x (masked)", attn); + PMD_DRV_LOG(ERR, sc, "LATCHED attention 0x%08x (masked)", attn); if (attn & BNX2X_GRC_TIMEOUT) { val = REG_RD(sc, MISC_REG_GRC_TIMEOUT_ATTN); - PMD_DRV_LOG(ERR, "GRC time-out 0x%08x", val); + PMD_DRV_LOG(ERR, sc, "GRC time-out 0x%08x", val); } if (attn & BNX2X_GRC_RSV) { val = REG_RD(sc, MISC_REG_GRC_RSV_ATTN); - PMD_DRV_LOG(ERR, "GRC reserved 0x%08x", val); + PMD_DRV_LOG(ERR, sc, "GRC reserved 0x%08x", val); } REG_WR(sc, MISC_REG_AEU_CLR_LATCH_SIGNAL, 0x7ff); } @@ -3898,24 +3932,24 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn) if (attn & AEU_INPUTS_ATTN_BITS_CFC_HW_INTERRUPT) { val = REG_RD(sc, CFC_REG_CFC_INT_STS_CLR); - PMD_DRV_LOG(ERR, "CFC hw attention 0x%08x", val); + PMD_DRV_LOG(ERR, sc, "CFC hw attention 0x%08x", val); /* CFC error attention */ if (val & 0x2) { - PMD_DRV_LOG(ERR, "FATAL error from CFC"); + PMD_DRV_LOG(ERR, sc, "FATAL error from CFC"); } } if (attn & AEU_INPUTS_ATTN_BITS_PXP_HW_INTERRUPT) { val = REG_RD(sc, PXP_REG_PXP_INT_STS_CLR_0); - PMD_DRV_LOG(ERR, "PXP hw attention-0 0x%08x", val); + PMD_DRV_LOG(ERR, sc, "PXP hw attention-0 0x%08x", val); /* RQ_USDMDP_FIFO_OVERFLOW */ if (val & 0x18000) { - PMD_DRV_LOG(ERR, "FATAL error from PXP"); + PMD_DRV_LOG(ERR, sc, "FATAL error from PXP"); } if (!CHIP_IS_E1x(sc)) { val = REG_RD(sc, PXP_REG_PXP_INT_STS_CLR_1); - PMD_DRV_LOG(ERR, "PXP hw attention-1 0x%08x", val); + PMD_DRV_LOG(ERR, sc, "PXP hw attention-1 0x%08x", val); } } #define PXP2_EOP_ERROR_BIT PXP2_PXP2_INT_STS_CLR_0_REG_WR_PGLUE_EOP_ERROR @@ -3943,7 +3977,7 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn) val0 = REG_RD(sc, PXP2_REG_PXP2_INT_STS_CLR_0); /* print the register, since no one can restore it */ - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "PXP2_REG_PXP2_INT_STS_CLR_0 0x%08x", val0); /* @@ -3951,7 +3985,7 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn) * then notify */ if (val0 & PXP2_EOP_ERROR_BIT) { - PMD_DRV_LOG(ERR, "PXP2_WR_PGLUE_EOP_ERROR"); + PMD_DRV_LOG(ERR, sc, "PXP2_WR_PGLUE_EOP_ERROR"); /* * if only PXP2_PXP2_INT_STS_0_REG_WR_PGLUE_EOP_ERROR is @@ -3972,7 +4006,7 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn) val &= ~(attn & HW_INTERRUT_ASSERT_SET_2); REG_WR(sc, reg_offset, val); - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "FATAL HW block attention set2 0x%x", (uint32_t) (attn & HW_INTERRUT_ASSERT_SET_2)); rte_panic("HW block attention set2"); @@ -3987,10 +4021,10 @@ static void bnx2x_attn_int_deasserted1(struct bnx2x_softc *sc, uint32_t attn) if (attn & AEU_INPUTS_ATTN_BITS_DOORBELLQ_HW_INTERRUPT) { val = REG_RD(sc, DORQ_REG_DORQ_INT_STS_CLR); - PMD_DRV_LOG(ERR, "DB hw attention 0x%08x", val); + PMD_DRV_LOG(ERR, sc, "DB hw attention 0x%08x", val); /* DORQ discard attention */ if (val & 0x2) { - PMD_DRV_LOG(ERR, "FATAL error from DORQ"); + PMD_DRV_LOG(ERR, sc, "FATAL error from DORQ"); } } @@ -4002,7 +4036,7 @@ static void bnx2x_attn_int_deasserted1(struct bnx2x_softc *sc, uint32_t attn) val &= ~(attn & HW_INTERRUT_ASSERT_SET_1); REG_WR(sc, reg_offset, val); - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "FATAL HW block attention set1 0x%08x", (uint32_t) (attn & HW_INTERRUT_ASSERT_SET_1)); rte_panic("HW block attention set1"); @@ -4023,7 +4057,7 @@ static void bnx2x_attn_int_deasserted0(struct bnx2x_softc *sc, uint32_t attn) val &= ~AEU_INPUTS_ATTN_BITS_SPIO5; REG_WR(sc, reg_offset, val); - PMD_DRV_LOG(WARNING, "SPIO5 hw attention"); + PMD_DRV_LOG(WARNING, sc, "SPIO5 hw attention"); /* Fan failure attention */ elink_hw_reset_phy(&sc->link_params); @@ -4031,7 +4065,9 @@ static void bnx2x_attn_int_deasserted0(struct bnx2x_softc *sc, uint32_t attn) } if ((attn & sc->link_vars.aeu_int_mask) && sc->port.pmf) { + bnx2x_acquire_phy_lock(sc); elink_handle_module_detect_int(&sc->link_params); + bnx2x_release_phy_lock(sc); } if (attn & HW_INTERRUT_ASSERT_SET_0) { @@ -4113,14 +4149,14 @@ static void bnx2x_attn_int_deasserted(struct bnx2x_softc *sc, uint32_t deasserte } val = ~deasserted; - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "about to mask 0x%08x at %s addr 0x%08x", val, (sc->devinfo.int_block == INT_BLOCK_HC) ? "HC" : "IGU", reg_addr); REG_WR(sc, reg_addr, val); if (~sc->attn_state & deasserted) { - PMD_DRV_LOG(ERR, "IGU error"); + PMD_DRV_LOG(ERR, sc, "IGU error"); } reg_addr = port ? MISC_REG_AEU_MASK_ATTN_FUNC_1 : @@ -4150,12 +4186,12 @@ static void bnx2x_attn_int(struct bnx2x_softc *sc) uint32_t asserted = attn_bits & ~attn_ack & ~attn_state; uint32_t deasserted = ~attn_bits & attn_ack & attn_state; - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "attn_bits 0x%08x attn_ack 0x%08x asserted 0x%08x deasserted 0x%08x", attn_bits, attn_ack, asserted, deasserted); if (~(attn_bits ^ attn_ack) & (attn_bits ^ attn_state)) { - PMD_DRV_LOG(ERR, "BAD attention state"); + PMD_DRV_LOG(ERR, sc, "BAD attention state"); } /* handle bits that were raised */ @@ -4212,7 +4248,7 @@ static void bnx2x_handle_mcast_eqe(struct bnx2x_softc *sc) if (sc->mcast_obj.check_pending(&sc->mcast_obj)) { rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_CONT); if (rc < 0) { - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "Failed to send pending mcast commands (%d)", rc); } @@ -4232,17 +4268,17 @@ bnx2x_handle_classification_eqe(struct bnx2x_softc *sc, union event_ring_elem *e switch (le32toh(elem->message.data.eth_event.echo) >> BNX2X_SWCID_SHIFT) { case ECORE_FILTER_MAC_PENDING: - PMD_DRV_LOG(DEBUG, "Got SETUP_MAC completions"); + PMD_DRV_LOG(DEBUG, sc, "Got SETUP_MAC completions"); vlan_mac_obj = &sc->sp_objs[cid].mac_obj; break; case ECORE_FILTER_MCAST_PENDING: - PMD_DRV_LOG(DEBUG, "Got SETUP_MCAST completions"); + PMD_DRV_LOG(DEBUG, sc, "Got SETUP_MCAST completions"); bnx2x_handle_mcast_eqe(sc); return; default: - PMD_DRV_LOG(NOTICE, "Unsupported classification command: %d", + PMD_DRV_LOG(NOTICE, sc, "Unsupported classification command: %d", elem->message.data.eth_event.echo); return; } @@ -4250,9 +4286,10 @@ bnx2x_handle_classification_eqe(struct bnx2x_softc *sc, union event_ring_elem *e rc = vlan_mac_obj->complete(sc, vlan_mac_obj, elem, &ramrod_flags); if (rc < 0) { - PMD_DRV_LOG(NOTICE, "Failed to schedule new commands (%d)", rc); + PMD_DRV_LOG(NOTICE, sc, + "Failed to schedule new commands (%d)", rc); } else if (rc > 0) { - PMD_DRV_LOG(DEBUG, "Scheduled next pending commands..."); + PMD_DRV_LOG(DEBUG, sc, "Scheduled next pending commands..."); } } @@ -4316,7 +4353,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc) /* handle eq element */ switch (opcode) { case EVENT_RING_OPCODE_STAT_QUERY: - PMD_DEBUG_PERIODIC_LOG(DEBUG, "got statistics completion event %d", + PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "got statistics completion event %d", sc->stats_comp++); /* nothing to do with stats comp */ goto next_spqe; @@ -4324,7 +4361,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc) case EVENT_RING_OPCODE_CFC_DEL: /* handle according to cid range */ /* we may want to verify here that the sc state is HALTING */ - PMD_DRV_LOG(DEBUG, "got delete ramrod for MULTI[%d]", + PMD_DRV_LOG(DEBUG, sc, "got delete ramrod for MULTI[%d]", cid); q_obj = bnx2x_cid_to_q_obj(sc, cid); if (q_obj->complete_cmd(sc, q_obj, ECORE_Q_CMD_CFC_DEL)) { @@ -4333,14 +4370,14 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc) goto next_spqe; case EVENT_RING_OPCODE_STOP_TRAFFIC: - PMD_DRV_LOG(DEBUG, "got STOP TRAFFIC"); + PMD_DRV_LOG(DEBUG, sc, "got STOP TRAFFIC"); if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_TX_STOP)) { break; } goto next_spqe; case EVENT_RING_OPCODE_START_TRAFFIC: - PMD_DRV_LOG(DEBUG, "got START TRAFFIC"); + PMD_DRV_LOG(DEBUG, sc, "got START TRAFFIC"); if (f_obj->complete_cmd (sc, f_obj, ECORE_F_CMD_TX_START)) { break; @@ -4350,7 +4387,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc) case EVENT_RING_OPCODE_FUNCTION_UPDATE: echo = elem->message.data.function_update_event.echo; if (echo == SWITCH_UPDATE) { - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "got FUNC_SWITCH_UPDATE ramrod"); if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_SWITCH_UPDATE)) @@ -4358,7 +4395,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc) break; } } else { - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "AFEX: ramrod completed FUNCTION_UPDATE"); f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_AFEX_UPDATE); @@ -4374,14 +4411,14 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc) goto next_spqe; case EVENT_RING_OPCODE_FUNCTION_START: - PMD_DRV_LOG(DEBUG, "got FUNC_START ramrod"); + PMD_DRV_LOG(DEBUG, sc, "got FUNC_START ramrod"); if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_START)) { break; } goto next_spqe; case EVENT_RING_OPCODE_FUNCTION_STOP: - PMD_DRV_LOG(DEBUG, "got FUNC_STOP ramrod"); + PMD_DRV_LOG(DEBUG, sc, "got FUNC_STOP ramrod"); if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_STOP)) { break; } @@ -4393,7 +4430,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc) case (EVENT_RING_OPCODE_RSS_UPDATE_RULES | BNX2X_STATE_OPENING_WAITING_PORT): cid = elem->message.data.eth_event.echo & BNX2X_SWCID_MASK; - PMD_DRV_LOG(DEBUG, "got RSS_UPDATE ramrod. CID %d", + PMD_DRV_LOG(DEBUG, sc, "got RSS_UPDATE ramrod. CID %d", cid); rss_raw->clear_pending(rss_raw); break; @@ -4404,7 +4441,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc) case (EVENT_RING_OPCODE_CLASSIFICATION_RULES | BNX2X_STATE_OPEN): case (EVENT_RING_OPCODE_CLASSIFICATION_RULES | BNX2X_STATE_DIAG): case (EVENT_RING_OPCODE_CLASSIFICATION_RULES | BNX2X_STATE_CLOSING_WAITING_HALT): - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "got (un)set mac ramrod"); bnx2x_handle_classification_eqe(sc, elem); break; @@ -4412,7 +4449,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc) case (EVENT_RING_OPCODE_MULTICAST_RULES | BNX2X_STATE_OPEN): case (EVENT_RING_OPCODE_MULTICAST_RULES | BNX2X_STATE_DIAG): case (EVENT_RING_OPCODE_MULTICAST_RULES | BNX2X_STATE_CLOSING_WAITING_HALT): - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "got mcast ramrod"); bnx2x_handle_mcast_eqe(sc); break; @@ -4420,14 +4457,14 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc) case (EVENT_RING_OPCODE_FILTERS_RULES | BNX2X_STATE_OPEN): case (EVENT_RING_OPCODE_FILTERS_RULES | BNX2X_STATE_DIAG): case (EVENT_RING_OPCODE_FILTERS_RULES | BNX2X_STATE_CLOSING_WAITING_HALT): - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "got rx_mode ramrod"); bnx2x_handle_rx_mode_eqe(sc); break; default: /* unknown event log error and continue */ - PMD_DRV_LOG(INFO, "Unknown EQ event %d, sc->state 0x%x", + PMD_DRV_LOG(INFO, sc, "Unknown EQ event %d, sc->state 0x%x", elem->message.opcode, sc->state); } @@ -4453,12 +4490,16 @@ static int bnx2x_handle_sp_tq(struct bnx2x_softc *sc) uint16_t status; int rc = 0; + PMD_DRV_LOG(DEBUG, sc, "---> SP TASK <---"); + /* what work needs to be performed? */ status = bnx2x_update_dsb_idx(sc); + PMD_DRV_LOG(DEBUG, sc, "dsb status 0x%04x", status); + /* HW attentions */ if (status & BNX2X_DEF_SB_ATT_IDX) { - PMD_DRV_LOG(DEBUG, "---> ATTN INTR <---"); + PMD_DRV_LOG(DEBUG, sc, "---> ATTN INTR <---"); bnx2x_attn_int(sc); status &= ~BNX2X_DEF_SB_ATT_IDX; rc = 1; @@ -4467,7 +4508,7 @@ static int bnx2x_handle_sp_tq(struct bnx2x_softc *sc) /* SP events: STAT_QUERY and others */ if (status & BNX2X_DEF_SB_IDX) { /* handle EQ completions */ - PMD_DEBUG_PERIODIC_LOG(DEBUG, "---> EQ INTR <---"); + PMD_DRV_LOG(DEBUG, sc, "---> EQ INTR <---"); bnx2x_eq_int(sc); bnx2x_ack_sb(sc, sc->igu_dsb_id, USTORM_ID, le16toh(sc->def_idx), IGU_INT_NOP, 1); @@ -4476,7 +4517,7 @@ static int bnx2x_handle_sp_tq(struct bnx2x_softc *sc) /* if status is non zero then something went wrong */ if (unlikely(status)) { - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "Got an unknown SP interrupt! (0x%04x)", status); } @@ -4492,7 +4533,8 @@ static void bnx2x_handle_fp_tq(struct bnx2x_fastpath *fp, int scan_fp) struct bnx2x_softc *sc = fp->sc; uint8_t more_rx = FALSE; - PMD_DRV_LOG(DEBUG, "---> FP TASK QUEUE (%d) <--", fp->index); + PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, + "---> FP TASK QUEUE (%d) <--", fp->index); /* update the fastpath index */ bnx2x_update_fp_sb_idx(fp); @@ -4542,25 +4584,31 @@ int bnx2x_intr_legacy(struct bnx2x_softc *sc, int scan_fp) return 0; } - PMD_DEBUG_PERIODIC_LOG(DEBUG, "Interrupt status 0x%04x", status); + PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "Interrupt status 0x%04x", status); //bnx2x_dump_status_block(sc); FOR_EACH_ETH_QUEUE(sc, i) { fp = &sc->fp[i]; mask = (0x2 << (fp->index + CNIC_SUPPORT(sc))); if (status & mask) { + /* acknowledge and disable further fastpath interrupts */ + bnx2x_ack_sb(sc, fp->igu_sb_id, USTORM_ID, + 0, IGU_INT_DISABLE, 0); bnx2x_handle_fp_tq(fp, scan_fp); status &= ~mask; } } if (unlikely(status & 0x1)) { + /* acknowledge and disable further slowpath interrupts */ + bnx2x_ack_sb(sc, sc->igu_dsb_id, USTORM_ID, + 0, IGU_INT_DISABLE, 0); rc = bnx2x_handle_sp_tq(sc); status &= ~0x1; } if (unlikely(status)) { - PMD_DRV_LOG(WARNING, + PMD_DRV_LOG(WARNING, sc, "Unexpected fastpath status (0x%08x)!", status); } @@ -4596,7 +4644,7 @@ static void bnx2x_init_func_obj(struct bnx2x_softc *sc) { sc->dmae_ready = 0; - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); ecore_init_func_obj(sc, &sc->func_obj, @@ -4612,7 +4660,7 @@ static int bnx2x_init_hw(struct bnx2x_softc *sc, uint32_t load_code) struct ecore_func_state_params func_params = { NULL }; int rc; - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); /* prepare the parameters for function state transitions */ bnx2x_set_bit(RAMROD_COMP_WAIT, &func_params.ramrod_flags); @@ -5201,7 +5249,7 @@ static void bnx2x_init_internal(struct bnx2x_softc *sc, uint32_t load_code) break; default: - PMD_DRV_LOG(NOTICE, "Unknown load_code (0x%x) from MCP", + PMD_DRV_LOG(NOTICE, sc, "Unknown load_code (0x%x) from MCP", load_code); break; } @@ -5292,7 +5340,7 @@ bnx2x_extract_max_cfg(__rte_unused struct bnx2x_softc *sc, uint32_t mf_cfg) FUNC_MF_CFG_MAX_BW_SHIFT); if (!max_cfg) { - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "Max BW configured to 0 - using 100 instead"); max_cfg = 100; } @@ -5556,7 +5604,7 @@ static void bnx2x_igu_int_enable(struct bnx2x_softc *sc) val |= IGU_PF_CONF_FUNC_EN; - PMD_DRV_LOG(DEBUG, "write 0x%x to IGU mode %s", + PMD_DRV_LOG(DEBUG, sc, "write 0x%x to IGU mode %s", val, ((msix) ? "MSI-X" : ((msi) ? "MSI" : "INTx"))); REG_WR(sc, IGU_REG_PF_CONFIGURATION, val); @@ -5604,7 +5652,7 @@ static void bnx2x_hc_int_disable(struct bnx2x_softc *sc) REG_WR(sc, addr, val); if (REG_RD(sc, addr) != val) { - PMD_DRV_LOG(ERR, "proper val not read from HC IGU!"); + PMD_DRV_LOG(ERR, sc, "proper val not read from HC IGU!"); } } @@ -5615,14 +5663,14 @@ static void bnx2x_igu_int_disable(struct bnx2x_softc *sc) val &= ~(IGU_PF_CONF_MSI_MSIX_EN | IGU_PF_CONF_INT_LINE_EN | IGU_PF_CONF_ATTN_BIT_EN); - PMD_DRV_LOG(DEBUG, "write %x to IGU", val); + PMD_DRV_LOG(DEBUG, sc, "write %x to IGU", val); /* flush all outstanding writes */ mb(); REG_WR(sc, IGU_REG_PF_CONFIGURATION, val); if (REG_RD(sc, IGU_REG_PF_CONFIGURATION) != val) { - PMD_DRV_LOG(ERR, "proper val not read from IGU!"); + PMD_DRV_LOG(ERR, sc, "proper val not read from IGU!"); } } @@ -5639,7 +5687,7 @@ static void bnx2x_nic_init(struct bnx2x_softc *sc, int load_code) { int i; - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); for (i = 0; i < sc->num_queues; i++) { bnx2x_init_eth_fp(sc, i); @@ -5769,7 +5817,7 @@ static int bnx2x_set_power_state(struct bnx2x_softc *sc, uint8_t state) /* If there is no power capability, silently succeed */ if (!(sc->devinfo.pcie_cap_flags & BNX2X_PM_CAPABLE_FLAG)) { - PMD_DRV_LOG(WARNING, "No power capability"); + PMD_DRV_LOG(WARNING, sc, "No power capability"); return 0; } @@ -5814,7 +5862,7 @@ static int bnx2x_set_power_state(struct bnx2x_softc *sc, uint8_t state) break; default: - PMD_DRV_LOG(NOTICE, "Can't support PCI power state = %d", + PMD_DRV_LOG(NOTICE, sc, "Can't support PCI power state = %d", state); return -1; } @@ -5832,7 +5880,7 @@ static uint8_t bnx2x_trylock_hw_lock(struct bnx2x_softc *sc, uint32_t resource) /* Validating that the resource is within range */ if (resource > HW_LOCK_MAX_RESOURCE_VALUE) { - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "resource(0x%x) > HW_LOCK_MAX_RESOURCE_VALUE(0x%x)", resource, HW_LOCK_MAX_RESOURCE_VALUE); return FALSE; @@ -5852,7 +5900,7 @@ static uint8_t bnx2x_trylock_hw_lock(struct bnx2x_softc *sc, uint32_t resource) return TRUE; } - PMD_DRV_LOG(NOTICE, "Failed to get a resource lock 0x%x", resource); + PMD_DRV_LOG(NOTICE, sc, "Failed to get a resource lock 0x%x", resource); return FALSE; } @@ -5945,7 +5993,7 @@ static int bnx2x_er_poll_igu_vq(struct bnx2x_softc *sc) } while (cnt-- > 0); if (cnt <= 0) { - PMD_DRV_LOG(NOTICE, "Still pending IGU requests bits=0x%08x!", + PMD_DRV_LOG(NOTICE, sc, "Still pending IGU requests bits=0x%08x!", pend_bits); return -1; } @@ -6026,7 +6074,7 @@ static int bnx2x_init_shmem(struct bnx2x_softc *sc) } while (cnt++ < (MCP_TIMEOUT / MCP_ONE_TIMEOUT)); - PMD_DRV_LOG(NOTICE, "BAD MCP validity signature"); + PMD_DRV_LOG(NOTICE, sc, "BAD MCP validity signature"); return -1; } @@ -6181,7 +6229,7 @@ static int bnx2x_process_kill(struct bnx2x_softc *sc, uint8_t global) } while (cnt-- > 0); if (cnt <= 0) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "ERROR: Tetris buffer didn't get empty or there " "are still outstanding read requests after 1s! " "sr_cnt=0x%08x, blk_cnt=0x%08x, port_is_idle_0=0x%08x, " @@ -6254,14 +6302,14 @@ static int bnx2x_leader_reset(struct bnx2x_softc *sc) load_code = bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_REQ, DRV_MSG_CODE_LOAD_REQ_WITH_LFA); if (!load_code) { - PMD_DRV_LOG(NOTICE, "MCP response failure, aborting"); + PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting"); rc = -1; goto exit_leader_reset; } if ((load_code != FW_MSG_CODE_DRV_LOAD_COMMON_CHIP) && (load_code != FW_MSG_CODE_DRV_LOAD_COMMON)) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "MCP unexpected response, aborting"); rc = -1; goto exit_leader_reset2; @@ -6269,7 +6317,7 @@ static int bnx2x_leader_reset(struct bnx2x_softc *sc) load_code = bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0); if (!load_code) { - PMD_DRV_LOG(NOTICE, "MCP response failure, aborting"); + PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting"); rc = -1; goto exit_leader_reset2; } @@ -6277,7 +6325,7 @@ static int bnx2x_leader_reset(struct bnx2x_softc *sc) /* try to recover after the failure */ if (bnx2x_process_kill(sc, global)) { - PMD_DRV_LOG(NOTICE, "Something bad occurred on engine %d!", + PMD_DRV_LOG(NOTICE, sc, "Something bad occurred on engine %d!", SC_PATH(sc)); rc = -1; goto exit_leader_reset2; @@ -6436,12 +6484,12 @@ bnx2x_pf_rx_q_prep(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, /* validate rings have enough entries to cross high thresholds */ if (sc->dropless_fc && pause->bd_th_hi + FW_PREFETCH_CNT > sc->rx_ring_size) { - PMD_DRV_LOG(WARNING, "rx bd ring threshold limit"); + PMD_DRV_LOG(WARNING, sc, "rx bd ring threshold limit"); } if (sc->dropless_fc && pause->rcq_th_hi + FW_PREFETCH_CNT > USABLE_RCQ_ENTRIES(rxq)) { - PMD_DRV_LOG(WARNING, "rcq ring threshold limit"); + PMD_DRV_LOG(WARNING, sc, "rcq ring threshold limit"); } pause->pri_map = 1; @@ -6512,7 +6560,7 @@ bnx2x_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, uint8_t lea struct ecore_queue_setup_params *setup_params = &q_params.params.setup; int rc; - PMD_DRV_LOG(DEBUG, "setting up queue %d", fp->index); + PMD_DRV_LOG(DEBUG, sc, "setting up queue %d", fp->index); bnx2x_ack_sb(sc, fp->igu_sb_id, USTORM_ID, 0, IGU_INT_ENABLE, 0); @@ -6530,11 +6578,11 @@ bnx2x_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, uint8_t lea /* Change the state to INIT */ rc = ecore_queue_state_change(sc, &q_params); if (rc) { - PMD_DRV_LOG(NOTICE, "Queue(%d) INIT failed", fp->index); + PMD_DRV_LOG(NOTICE, sc, "Queue(%d) INIT failed", fp->index); return rc; } - PMD_DRV_LOG(DEBUG, "init complete"); + PMD_DRV_LOG(DEBUG, sc, "init complete"); /* now move the Queue to the SETUP state */ memset(setup_params, 0, sizeof(*setup_params)); @@ -6558,7 +6606,7 @@ bnx2x_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, uint8_t lea /* change the state to SETUP */ rc = ecore_queue_state_change(sc, &q_params); if (rc) { - PMD_DRV_LOG(NOTICE, "Queue(%d) SETUP failed", fp->index); + PMD_DRV_LOG(NOTICE, sc, "Queue(%d) SETUP failed", fp->index); return rc; } @@ -6686,11 +6734,11 @@ bnx2x_set_mac_one(struct bnx2x_softc *sc, uint8_t * mac, rc = ecore_config_vlan_mac(sc, &ramrod_param); if (rc == ECORE_EXISTS) { - PMD_DRV_LOG(INFO, "Failed to schedule ADD operations (EEXIST)"); + PMD_DRV_LOG(INFO, sc, "Failed to schedule ADD operations (EEXIST)"); /* do not treat adding same MAC as error */ rc = 0; } else if (rc < 0) { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "%s MAC failed (%d)", (set ? "Set" : "Delete"), rc); } @@ -6701,7 +6749,7 @@ static int bnx2x_set_eth_mac(struct bnx2x_softc *sc, uint8_t set) { unsigned long ramrod_flags = 0; - PMD_DRV_LOG(DEBUG, "Adding Ethernet MAC"); + PMD_DRV_LOG(DEBUG, sc, "Adding Ethernet MAC"); bnx2x_set_bit(RAMROD_COMP_WAIT, &ramrod_flags); @@ -6857,7 +6905,7 @@ bnx2x_fill_report_data(struct bnx2x_softc *sc, struct bnx2x_link_report_data *da } /* report link status to OS, should be called under phy_lock */ -static void bnx2x_link_report(struct bnx2x_softc *sc) +static void bnx2x_link_report_locked(struct bnx2x_softc *sc) { struct bnx2x_link_report_data cur_data; @@ -6878,14 +6926,19 @@ static void bnx2x_link_report(struct bnx2x_softc *sc) return; } + PMD_DRV_LOG(INFO, sc, "Change in link status : cur_data = %lx, last_reported_link = %lx\n", + cur_data.link_report_flags, + sc->last_reported_link.link_report_flags); + sc->link_cnt++; + PMD_DRV_LOG(INFO, sc, "link status change count = %x\n", sc->link_cnt); /* report new link params and remember the state for the next time */ (void)rte_memcpy(&sc->last_reported_link, &cur_data, sizeof(cur_data)); if (bnx2x_test_bit(BNX2X_LINK_REPORT_LINK_DOWN, &cur_data.link_report_flags)) { - PMD_DRV_LOG(INFO, "NIC Link is Down"); + PMD_DRV_LOG(INFO, sc, "NIC Link is Down"); } else { __rte_unused const char *duplex; __rte_unused const char *flow; @@ -6925,12 +6978,20 @@ static void bnx2x_link_report(struct bnx2x_softc *sc) flow = "none"; } - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "NIC Link is Up, %d Mbps %s duplex, Flow control: %s", cur_data.line_speed, duplex, flow); } } +static void +bnx2x_link_report(struct bnx2x_softc *sc) +{ + bnx2x_acquire_phy_lock(sc); + bnx2x_link_report_locked(sc); + bnx2x_release_phy_lock(sc); +} + void bnx2x_link_status_update(struct bnx2x_softc *sc) { if (sc->state != BNX2X_STATE_OPEN) { @@ -6996,7 +7057,7 @@ void bnx2x_link_status_update(struct bnx2x_softc *sc) } bnx2x_link_report(sc); } else { - bnx2x_link_report(sc); + bnx2x_link_report_locked(sc); bnx2x_stats_handle(sc, STATS_EVENT_LINK_UP); } } @@ -7019,6 +7080,8 @@ static int bnx2x_initial_phy_init(struct bnx2x_softc *sc, int load_mode) bnx2x_set_requested_fc(sc); + bnx2x_acquire_phy_lock(sc); + if (load_mode == LOAD_DIAG) { lp->loopback_mode = ELINK_LOOPBACK_XGXS; /* Prefer doing PHY loopback at 10G speed, if possible */ @@ -7038,6 +7101,8 @@ static int bnx2x_initial_phy_init(struct bnx2x_softc *sc, int load_mode) rc = elink_phy_init(&sc->link_params, &sc->link_vars); + bnx2x_release_phy_lock(sc); + bnx2x_calc_fc_adv(sc); if (sc->link_vars.link_up) { @@ -7080,7 +7145,7 @@ void bnx2x_periodic_callout(struct bnx2x_softc *sc) { if ((sc->state != BNX2X_STATE_OPEN) || (atomic_load_acq_long(&sc->periodic_flags) == PERIODIC_STOP)) { - PMD_DRV_LOG(WARNING, "periodic callout exit (state=0x%x)", + PMD_DRV_LOG(INFO, sc, "periodic callout exit (state=0x%x)", sc->state); return; } @@ -7092,7 +7157,9 @@ void bnx2x_periodic_callout(struct bnx2x_softc *sc) */ mb(); if (sc->port.pmf) { + bnx2x_acquire_phy_lock(sc); elink_period_func(&sc->link_params, &sc->link_vars); + bnx2x_release_phy_lock(sc); } } #ifdef BNX2X_PULSE @@ -7117,7 +7184,7 @@ void bnx2x_periodic_callout(struct bnx2x_softc *sc) if ((drv_pulse != mcp_pulse) && (drv_pulse != ((mcp_pulse + 1) & MCP_PULSE_SEQ_MASK))) { /* someone lost a heartbeat... */ - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "drv_pulse (0x%x) != mcp_pulse (0x%x)", drv_pulse, mcp_pulse); } @@ -7133,7 +7200,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc) uint32_t load_code = 0; int i, rc = 0; - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); sc->state = BNX2X_STATE_OPENING_WAITING_LOAD; @@ -7187,7 +7254,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc) goto bnx2x_nic_load_error2; } } else { - PMD_DRV_LOG(INFO, "Device has no MCP!"); + PMD_DRV_LOG(INFO, sc, "Device has no MCP!"); load_code = bnx2x_nic_load_no_mcp(sc); } @@ -7199,7 +7266,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc) /* Initialize HW */ if (bnx2x_init_hw(sc, load_code) != 0) { - PMD_DRV_LOG(NOTICE, "HW init failed"); + PMD_DRV_LOG(NOTICE, sc, "HW init failed"); bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0); sc->state = BNX2X_STATE_CLOSED; rc = -ENXIO; @@ -7219,7 +7286,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc) sc->state = BNX2X_STATE_OPENING_WAITING_PORT; rc = bnx2x_func_start(sc); if (rc) { - PMD_DRV_LOG(NOTICE, "Function start failed!"); + PMD_DRV_LOG(NOTICE, sc, "Function start failed!"); bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0); sc->state = BNX2X_STATE_ERROR; goto bnx2x_nic_load_error3; @@ -7230,7 +7297,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc) load_code = bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0); if (!load_code) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting"); sc->state = BNX2X_STATE_ERROR; rc = -ENXIO; @@ -7241,7 +7308,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc) rc = bnx2x_setup_leading(sc); if (rc) { - PMD_DRV_LOG(NOTICE, "Setup leading failed!"); + PMD_DRV_LOG(NOTICE, sc, "Setup leading failed!"); sc->state = BNX2X_STATE_ERROR; goto bnx2x_nic_load_error3; } @@ -7253,7 +7320,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc) rc = bnx2x_vf_setup_queue(sc, &sc->fp[i], FALSE); if (rc) { - PMD_DRV_LOG(NOTICE, "Queue(%d) setup failed", i); + PMD_DRV_LOG(NOTICE, sc, "Queue(%d) setup failed", i); sc->state = BNX2X_STATE_ERROR; goto bnx2x_nic_load_error3; } @@ -7261,7 +7328,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc) rc = bnx2x_init_rss_pf(sc); if (rc) { - PMD_DRV_LOG(NOTICE, "PF RSS init failed"); + PMD_DRV_LOG(NOTICE, sc, "PF RSS init failed"); sc->state = BNX2X_STATE_ERROR; goto bnx2x_nic_load_error3; } @@ -7277,7 +7344,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc) } if (rc) { - PMD_DRV_LOG(NOTICE, "Setting Ethernet MAC failed"); + PMD_DRV_LOG(NOTICE, sc, "Setting Ethernet MAC failed"); sc->state = BNX2X_STATE_ERROR; goto bnx2x_nic_load_error3; } @@ -7329,13 +7396,13 @@ int bnx2x_nic_load(struct bnx2x_softc *sc) /* wait for all pending SP commands to complete */ if (IS_PF(sc) && !bnx2x_wait_sp_comp(sc, ~0x0UL)) { - PMD_DRV_LOG(NOTICE, "Timeout waiting for all SPs to complete!"); + PMD_DRV_LOG(NOTICE, sc, "Timeout waiting for all SPs to complete!"); bnx2x_periodic_stop(sc); bnx2x_nic_unload(sc, UNLOAD_CLOSE, FALSE); return -ENXIO; } - PMD_DRV_LOG(DEBUG, "NIC successfully loaded"); + PMD_DRV_LOG(DEBUG, sc, "NIC successfully loaded"); return 0; @@ -7384,7 +7451,7 @@ int bnx2x_init(struct bnx2x_softc *sc) /* Check if the driver is still running and bail out if it is. */ if (sc->state != BNX2X_STATE_CLOSED) { - PMD_DRV_LOG(DEBUG, "Init called while driver is running!"); + PMD_DRV_LOG(DEBUG, sc, "Init called while driver is running!"); rc = 0; goto bnx2x_init_done; } @@ -7422,7 +7489,7 @@ int bnx2x_init(struct bnx2x_softc *sc) && (!global ||!other_load_status)) && bnx2x_trylock_leader_lock(sc) && !bnx2x_leader_reset(sc)) { - PMD_DRV_LOG(INFO, + PMD_DRV_LOG(INFO, sc, "Recovered during init"); break; } @@ -7432,7 +7499,7 @@ int bnx2x_init(struct bnx2x_softc *sc) sc->recovery_state = BNX2X_RECOVERY_FAILED; - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "Recovery flow hasn't properly " "completed yet, try again later. " "If you still see this message after a " @@ -7451,7 +7518,7 @@ int bnx2x_init(struct bnx2x_softc *sc) bnx2x_init_done: if (rc) { - PMD_DRV_LOG(NOTICE, "Initialization failed, " + PMD_DRV_LOG(NOTICE, sc, "Initialization failed, " "stack notified driver is NOT running!"); } @@ -7483,7 +7550,7 @@ static void bnx2x_get_function_num(struct bnx2x_softc *sc) sc->pfunc_abs = (sc->pfunc_rel | sc->path_id); } - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "Relative function %d, Absolute function %d, Path %d", sc->pfunc_rel, sc->pfunc_abs, sc->path_id); } @@ -7520,14 +7587,14 @@ static uint32_t bnx2x_pcie_capability_read(struct bnx2x_softc *sc, int reg) /* ensure PCIe capability is enabled */ caps = pci_find_cap(sc, PCIY_EXPRESS, BNX2X_PCI_CAP); if (NULL != caps) { - PMD_DRV_LOG(DEBUG, "Found PCIe capability: " + PMD_DRV_LOG(DEBUG, sc, "Found PCIe capability: " "id=0x%04X type=0x%04X addr=0x%08X", caps->id, caps->type, caps->addr); pci_read(sc, (caps->addr + reg), &ret, 2); return ret; } - PMD_DRV_LOG(WARNING, "PCIe capability NOT FOUND!!!"); + PMD_DRV_LOG(WARNING, sc, "PCIe capability NOT FOUND!!!"); return 0; } @@ -7545,7 +7612,7 @@ static uint8_t bnx2x_is_pcie_pending(struct bnx2x_softc *sc) */ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc) { - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); struct bnx2x_pci_cap *caps; uint16_t link_status; @@ -7556,7 +7623,7 @@ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc) /* check if PCI Power Management is enabled */ caps = pci_find_cap(sc, PCIY_PMG, BNX2X_PCI_CAP); if (NULL != caps) { - PMD_DRV_LOG(DEBUG, "Found PM capability: " + PMD_DRV_LOG(DEBUG, sc, "Found PM capability: " "id=0x%04X type=0x%04X addr=0x%08X", caps->id, caps->type, caps->addr); @@ -7570,7 +7637,7 @@ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc) sc->devinfo.pcie_link_width = ((link_status & PCIM_LINK_STA_WIDTH) >> 4); - PMD_DRV_LOG(DEBUG, "PCIe link speed=%d width=%d", + PMD_DRV_LOG(DEBUG, sc, "PCIe link speed=%d width=%d", sc->devinfo.pcie_link_speed, sc->devinfo.pcie_link_width); sc->devinfo.pcie_cap_flags |= BNX2X_PCIE_CAPABLE_FLAG; @@ -7578,7 +7645,7 @@ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc) /* check if MSI capability is enabled */ caps = pci_find_cap(sc, PCIY_MSI, BNX2X_PCI_CAP); if (NULL != caps) { - PMD_DRV_LOG(DEBUG, "Found MSI capability at 0x%04x", reg); + PMD_DRV_LOG(DEBUG, sc, "Found MSI capability at 0x%04x", reg); sc->devinfo.pcie_cap_flags |= BNX2X_MSI_CAPABLE_FLAG; sc->devinfo.pcie_msi_cap_reg = caps->addr; @@ -7587,7 +7654,7 @@ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc) /* check if MSI-X capability is enabled */ caps = pci_find_cap(sc, PCIY_MSIX, BNX2X_PCI_CAP); if (NULL != caps) { - PMD_DRV_LOG(DEBUG, "Found MSI-X capability at 0x%04x", reg); + PMD_DRV_LOG(DEBUG, sc, "Found MSI-X capability at 0x%04x", reg); sc->devinfo.pcie_cap_flags |= BNX2X_MSIX_CAPABLE_FLAG; sc->devinfo.pcie_msix_cap_reg = caps->addr; @@ -7607,7 +7674,7 @@ static int bnx2x_get_shmem_mf_cfg_info_sd(struct bnx2x_softc *sc) mf_info->multi_vnics_mode = 1; if (!VALID_OVLAN(mf_info->ext_id)) { - PMD_DRV_LOG(NOTICE, "Invalid VLAN (%d)", mf_info->ext_id); + PMD_DRV_LOG(NOTICE, sc, "Invalid VLAN (%d)", mf_info->ext_id); return 1; } @@ -7731,14 +7798,14 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc) /* various MF mode sanity checks... */ if (mf_info->mf_config[SC_VN(sc)] & FUNC_MF_CFG_FUNC_HIDE) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "Enumerated function %d is marked as hidden", SC_PORT(sc)); return 1; } if ((mf_info->vnics_per_port > 1) && !mf_info->multi_vnics_mode) { - PMD_DRV_LOG(NOTICE, "vnics_per_port=%d multi_vnics_mode=%d", + PMD_DRV_LOG(NOTICE, sc, "vnics_per_port=%d multi_vnics_mode=%d", mf_info->vnics_per_port, mf_info->multi_vnics_mode); return 1; } @@ -7746,13 +7813,13 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc) if (mf_info->mf_mode == MULTI_FUNCTION_SD) { /* vnic id > 0 must have valid ovlan in switch-dependent mode */ if ((SC_VN(sc) > 0) && !VALID_OVLAN(OVLAN(sc))) { - PMD_DRV_LOG(NOTICE, "mf_mode=SD vnic_id=%d ovlan=%d", + PMD_DRV_LOG(NOTICE, sc, "mf_mode=SD vnic_id=%d ovlan=%d", SC_VN(sc), OVLAN(sc)); return 1; } if (!VALID_OVLAN(OVLAN(sc)) && mf_info->multi_vnics_mode) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "mf_mode=SD multi_vnics_mode=%d ovlan=%d", mf_info->multi_vnics_mode, OVLAN(sc)); return 1; @@ -7771,7 +7838,7 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc) && !VALID_OVLAN(ovlan1)) || ((!mf_info->multi_vnics_mode) && VALID_OVLAN(ovlan1)))) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "mf_mode=SD function %d MF config " "mismatch, multi_vnics_mode=%d ovlan=%d", i, mf_info->multi_vnics_mode, @@ -7795,7 +7862,7 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc) && !(mf_cfg2 & FUNC_MF_CFG_FUNC_HIDE) && VALID_OVLAN(ovlan2) && (ovlan1 == ovlan2)) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "mf_mode=SD functions %d and %d " "have the same ovlan (%d)", i, j, ovlan1); @@ -7825,7 +7892,7 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc) } if (sc->devinfo.mf_cfg_base == SHMEM_MF_CFG_ADDR_NONE) { - PMD_DRV_LOG(NOTICE, "Invalid mf_cfg_base!"); + PMD_DRV_LOG(NOTICE, sc, "Invalid mf_cfg_base!"); return 1; } @@ -7843,7 +7910,7 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc) if (mac_upper != FUNC_MF_CFG_UPPERMAC_DEFAULT) { mf_info->mf_mode = MULTI_FUNCTION_SI; } else { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "Invalid config for Switch Independent mode"); } @@ -7859,7 +7926,7 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc) FUNC_MF_CFG_E1HOV_TAG_DEFAULT) { mf_info->mf_mode = MULTI_FUNCTION_SD; } else { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "Invalid config for Switch Dependent mode"); } @@ -7883,14 +7950,14 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc) (mac_upper != FUNC_MF_CFG_UPPERMAC_DEFAULT)) { mf_info->mf_mode = MULTI_FUNCTION_AFEX; } else { - PMD_DRV_LOG(NOTICE, "Invalid config for AFEX mode"); + PMD_DRV_LOG(NOTICE, sc, "Invalid config for AFEX mode"); } break; default: - PMD_DRV_LOG(NOTICE, "Unknown MF mode (0x%08x)", + PMD_DRV_LOG(NOTICE, sc, "Unknown MF mode (0x%08x)", (val & SHARED_FEAT_CFG_FORCE_SF_MODE_MASK)); return 1; @@ -7922,7 +7989,7 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc) if (mf_info->mf_mode == SINGLE_FUNCTION) { /* invalid MF config */ if (SC_VN(sc) >= 1) { - PMD_DRV_LOG(NOTICE, "VNIC ID >= 1 in SF mode"); + PMD_DRV_LOG(NOTICE, sc, "VNIC ID >= 1 in SF mode"); return 1; } @@ -7951,7 +8018,7 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc) default: - PMD_DRV_LOG(NOTICE, "Get MF config failed (mf_mode=0x%08x)", + PMD_DRV_LOG(NOTICE, sc, "Get MF config failed (mf_mode=0x%08x)", mf_info->mf_mode); return 1; } @@ -7979,7 +8046,7 @@ static int bnx2x_get_shmem_info(struct bnx2x_softc *sc) int port; uint32_t mac_hi, mac_lo, val; - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); port = SC_PORT(sc); mac_hi = mac_lo = 0; @@ -8053,7 +8120,7 @@ static int bnx2x_get_shmem_info(struct bnx2x_softc *sc) if ((mac_lo == 0) && (mac_hi == 0)) { *sc->mac_addr_str = 0; - PMD_DRV_LOG(NOTICE, "No Ethernet address programmed!"); + PMD_DRV_LOG(NOTICE, sc, "No Ethernet address programmed!"); } else { sc->link_params.mac_addr[0] = (uint8_t) (mac_hi >> 8); sc->link_params.mac_addr[1] = (uint8_t) (mac_hi); @@ -8069,7 +8136,8 @@ static int bnx2x_get_shmem_info(struct bnx2x_softc *sc) sc->link_params.mac_addr[3], sc->link_params.mac_addr[4], sc->link_params.mac_addr[5]); - PMD_DRV_LOG(DEBUG, "Ethernet address: %s", sc->mac_addr_str); + PMD_DRV_LOG(DEBUG, sc, + "Ethernet address: %s", sc->mac_addr_str); } return 0; @@ -8084,24 +8152,24 @@ static void bnx2x_media_detect(struct bnx2x_softc *sc) case ELINK_ETH_PHY_XFP_FIBER: case ELINK_ETH_PHY_KR: case ELINK_ETH_PHY_CX4: - PMD_DRV_LOG(INFO, "Found 10GBase-CX4 media."); + PMD_DRV_LOG(INFO, sc, "Found 10GBase-CX4 media."); sc->media = IFM_10G_CX4; break; case ELINK_ETH_PHY_DA_TWINAX: - PMD_DRV_LOG(INFO, "Found 10Gb Twinax media."); + PMD_DRV_LOG(INFO, sc, "Found 10Gb Twinax media."); sc->media = IFM_10G_TWINAX; break; case ELINK_ETH_PHY_BASE_T: - PMD_DRV_LOG(INFO, "Found 10GBase-T media."); + PMD_DRV_LOG(INFO, sc, "Found 10GBase-T media."); sc->media = IFM_10G_T; break; case ELINK_ETH_PHY_NOT_PRESENT: - PMD_DRV_LOG(INFO, "Media not present."); + PMD_DRV_LOG(INFO, sc, "Media not present."); sc->media = 0; break; case ELINK_ETH_PHY_UNSPECIFIED: default: - PMD_DRV_LOG(INFO, "Unknown media!"); + PMD_DRV_LOG(INFO, sc, "Unknown media!"); sc->media = 0; break; } @@ -8164,7 +8232,7 @@ static int bnx2x_get_igu_cam_info(struct bnx2x_softc *sc) sc->igu_sb_cnt = min(sc->igu_sb_cnt, igu_sb_cnt); if (igu_sb_cnt == 0) { - PMD_DRV_LOG(ERR, "CAM configuration error"); + PMD_DRV_LOG(ERR, sc, "CAM configuration error"); return -1; } @@ -8201,7 +8269,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc) sc->devinfo.chip_id |= 0x1; } - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "chip_id=0x%08x (num=0x%04x rev=0x%01x metal=0x%02x bond=0x%01x)", sc->devinfo.chip_id, ((sc->devinfo.chip_id >> 16) & 0xffff), @@ -8212,7 +8280,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc) val = (REG_RD(sc, 0x2874) & 0x55); if ((sc->devinfo.chip_id & 0x1) || (CHIP_IS_E1H(sc) && (val == 0x55))) { sc->flags |= BNX2X_ONE_PORT_FLAG; - PMD_DRV_LOG(DEBUG, "single port device"); + PMD_DRV_LOG(DEBUG, sc, "single port device"); } /* set the doorbell size */ @@ -8236,7 +8304,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc) sc->devinfo.chip_port_mode = (val) ? CHIP_4_PORT_MODE : CHIP_2_PORT_MODE; - PMD_DRV_LOG(DEBUG, "Port mode = %s", (val) ? "4" : "2"); + PMD_DRV_LOG(DEBUG, sc, "Port mode = %s", (val) ? "4" : "2"); } /* get the function and path info for the device */ @@ -8251,7 +8319,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc) if (!sc->devinfo.shmem_base) { /* this should ONLY prevent upcoming shmem reads */ - PMD_DRV_LOG(INFO, "MCP not active"); + PMD_DRV_LOG(INFO, sc, "MCP not active"); sc->flags |= BNX2X_NO_MCP_FLAG; return 0; } @@ -8260,7 +8328,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc) val = SHMEM_RD(sc, validity_map[SC_PORT(sc)]); if ((val & (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB)) != (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB)) { - PMD_DRV_LOG(NOTICE, "Invalid SHMEM validity signature: 0x%08x", + PMD_DRV_LOG(NOTICE, sc, "Invalid SHMEM validity signature: 0x%08x", val); return 0; } @@ -8273,7 +8341,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc) ((sc->devinfo.bc_ver >> 24) & 0xff), ((sc->devinfo.bc_ver >> 16) & 0xff), ((sc->devinfo.bc_ver >> 8) & 0xff)); - PMD_DRV_LOG(INFO, "Bootcode version: %s", sc->devinfo.bc_ver_str); + PMD_DRV_LOG(INFO, sc, "Bootcode version: %s", sc->devinfo.bc_ver_str); /* get the bootcode shmem address */ sc->devinfo.mf_cfg_base = bnx2x_get_shmem_mf_cfg_base(sc); @@ -8328,7 +8396,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc) } if (REG_RD(sc, IGU_REG_RESET_MEMORIES)) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "FORCING IGU Normal Mode failed!!!"); bnx2x_release_hw_lock(sc, HW_LOCK_RESOURCE_RESET); return -1; @@ -8336,10 +8404,10 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc) } if (val & IGU_BLOCK_CONFIGURATION_REG_BACKWARD_COMP_EN) { - PMD_DRV_LOG(DEBUG, "IGU Backward Compatible Mode"); + PMD_DRV_LOG(DEBUG, sc, "IGU Backward Compatible Mode"); sc->devinfo.int_block |= INT_BLOCK_MODE_BW_COMP; } else { - PMD_DRV_LOG(DEBUG, "IGU Normal Mode"); + PMD_DRV_LOG(DEBUG, sc, "IGU Normal Mode"); } rc = bnx2x_get_igu_cam_info(sc); @@ -8413,7 +8481,7 @@ bnx2x_link_settings_supported(struct bnx2x_softc *sc, uint32_t switch_cfg) } if (!(sc->port.supported[0] || sc->port.supported[1])) { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Invalid phy config in NVRAM (PHY1=0x%08x PHY2=0x%08x)", SHMEM_RD(sc, dev_info.port_hw_config @@ -8439,7 +8507,7 @@ bnx2x_link_settings_supported(struct bnx2x_softc *sc, uint32_t switch_cfg) NIG_REG_XGXS0_CTRL_PHY_ADDR + port * 0x18); break; default: - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Invalid switch config in" "link_config=0x%08x", sc->port.link_config[0]); @@ -8447,7 +8515,7 @@ bnx2x_link_settings_supported(struct bnx2x_softc *sc, uint32_t switch_cfg) } } - PMD_DRV_LOG(INFO, "PHY addr 0x%08x", sc->port.phy_addr); + PMD_DRV_LOG(INFO, sc, "PHY addr 0x%08x", sc->port.phy_addr); /* mask what we support according to speed_cap_mask per configuration */ for (idx = 0; idx < cfg_size; idx++) { @@ -8500,7 +8568,7 @@ bnx2x_link_settings_supported(struct bnx2x_softc *sc, uint32_t switch_cfg) } } - PMD_DRV_LOG(INFO, "PHY supported 0=0x%08x 1=0x%08x", + PMD_DRV_LOG(INFO, sc, "PHY supported 0=0x%08x 1=0x%08x", sc->port.supported[0], sc->port.supported[1]); } @@ -8559,7 +8627,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc) sc->port.advertising[idx] |= (ADVERTISED_10baseT_Full | ADVERTISED_TP); } else { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Invalid NVRAM config link_config=0x%08x " "speed_cap_mask=0x%08x", link_config, @@ -8579,7 +8647,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc) sc->port.advertising[idx] |= (ADVERTISED_10baseT_Half | ADVERTISED_TP); } else { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Invalid NVRAM config link_config=0x%08x " "speed_cap_mask=0x%08x", link_config, @@ -8598,7 +8666,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc) sc->port.advertising[idx] |= (ADVERTISED_100baseT_Full | ADVERTISED_TP); } else { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Invalid NVRAM config link_config=0x%08x " "speed_cap_mask=0x%08x", link_config, @@ -8618,7 +8686,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc) sc->port.advertising[idx] |= (ADVERTISED_100baseT_Half | ADVERTISED_TP); } else { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Invalid NVRAM config link_config=0x%08x " "speed_cap_mask=0x%08x", link_config, @@ -8636,7 +8704,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc) sc->port.advertising[idx] |= (ADVERTISED_1000baseT_Full | ADVERTISED_TP); } else { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Invalid NVRAM config link_config=0x%08x " "speed_cap_mask=0x%08x", link_config, @@ -8654,7 +8722,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc) sc->port.advertising[idx] |= (ADVERTISED_2500baseX_Full | ADVERTISED_TP); } else { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Invalid NVRAM config link_config=0x%08x " "speed_cap_mask=0x%08x", link_config, @@ -8673,7 +8741,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc) (ADVERTISED_10000baseT_Full | ADVERTISED_FIBRE); } else { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Invalid NVRAM config link_config=0x%08x " "speed_cap_mask=0x%08x", link_config, @@ -8688,7 +8756,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc) break; default: - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(ERR, sc, "Invalid NVRAM config link_config=0x%08x " "speed_cap_mask=0x%08x", link_config, sc->link_params.speed_cap_mask[idx]); @@ -8719,7 +8787,7 @@ static void bnx2x_get_phy_info(struct bnx2x_softc *sc) uint8_t port = SC_PORT(sc); uint32_t eee_mode; - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); /* shmem data already read in bnx2x_get_shmem_info() */ @@ -8879,7 +8947,7 @@ int bnx2x_alloc_hsi_mem(struct bnx2x_softc *sc) snprintf(buf, sizeof(buf), "fp_%d_sb", i); if (bnx2x_dma_alloc(sc, sizeof(union bnx2x_host_hc_status_block), &fp->sb_dma, buf, RTE_CACHE_LINE_SIZE) != 0) { - PMD_DRV_LOG(NOTICE, "Failed to alloc %s", buf); + PMD_DRV_LOG(NOTICE, sc, "Failed to alloc %s", buf); return -1; } else { if (CHIP_IS_E2E3(sc)) { @@ -8969,7 +9037,7 @@ static int bnx2x_prev_mcp_done(struct bnx2x_softc *sc) uint32_t rc = bnx2x_fw_command(sc, DRV_MSG_CODE_UNLOAD_DONE, DRV_MSG_CODE_UNLOAD_SKIP_LINK_RESET); if (!rc) { - PMD_DRV_LOG(NOTICE, "MCP response failure, aborting"); + PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting"); return -1; } @@ -9001,12 +9069,12 @@ static uint8_t bnx2x_prev_is_path_marked(struct bnx2x_softc *sc) tmp = bnx2x_prev_path_get_entry(sc); if (tmp) { if (tmp->aer) { - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "Path %d/%d/%d was marked by AER", sc->pcie_bus, sc->pcie_device, SC_PATH(sc)); } else { rc = TRUE; - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "Path %d/%d/%d was already cleaned from previous drivers", sc->pcie_bus, sc->pcie_device, SC_PATH(sc)); } @@ -9027,11 +9095,11 @@ static int bnx2x_prev_mark_path(struct bnx2x_softc *sc, uint8_t after_undi) tmp = bnx2x_prev_path_get_entry(sc); if (tmp) { if (!tmp->aer) { - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "Re-marking AER in path %d/%d/%d", sc->pcie_bus, sc->pcie_device, SC_PATH(sc)); } else { - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "Removing AER indication from path %d/%d/%d", sc->pcie_bus, sc->pcie_device, SC_PATH(sc)); tmp->aer = 0; @@ -9047,7 +9115,7 @@ static int bnx2x_prev_mark_path(struct bnx2x_softc *sc, uint8_t after_undi) tmp = rte_malloc("", sizeof(struct bnx2x_prev_list_node), RTE_CACHE_LINE_SIZE); if (!tmp) { - PMD_DRV_LOG(NOTICE, "Failed to allocate 'bnx2x_prev_list_node'"); + PMD_DRV_LOG(NOTICE, sc, "Failed to allocate 'bnx2x_prev_list_node'"); return -1; } @@ -9072,13 +9140,13 @@ static int bnx2x_do_flr(struct bnx2x_softc *sc) /* only E2 and onwards support FLR */ if (CHIP_IS_E1x(sc)) { - PMD_DRV_LOG(WARNING, "FLR not supported in E1H"); + PMD_DRV_LOG(WARNING, sc, "FLR not supported in E1H"); return -1; } /* only bootcode REQ_BC_VER_4_INITIATE_FLR and onwards support flr */ if (sc->devinfo.bc_ver < REQ_BC_VER_4_INITIATE_FLR) { - PMD_DRV_LOG(WARNING, + PMD_DRV_LOG(WARNING, sc, "FLR not supported by BC_VER: 0x%08x", sc->devinfo.bc_ver); return -1; @@ -9095,7 +9163,7 @@ static int bnx2x_do_flr(struct bnx2x_softc *sc) } } - PMD_DRV_LOG(NOTICE, "PCIE transaction is not cleared, " + PMD_DRV_LOG(NOTICE, sc, "PCIE transaction is not cleared, " "proceeding with reset anyway"); clear: @@ -9243,7 +9311,7 @@ static int bnx2x_prev_unload_common(struct bnx2x_softc *sc) if (reset_reg & MISC_REGISTERS_RESET_REG_1_RST_DORQ) { tmp_reg = REG_RD(sc, DORQ_REG_NORM_CID_OFST); if (tmp_reg == 0x7) { - PMD_DRV_LOG(DEBUG, "UNDI previously loaded"); + PMD_DRV_LOG(DEBUG, sc, "UNDI previously loaded"); prev_undi = TRUE; /* clear the UNDI indication */ REG_WR(sc, DORQ_REG_NORM_CID_OFST, 0); @@ -9262,7 +9330,7 @@ static int bnx2x_prev_unload_common(struct bnx2x_softc *sc) break; } - PMD_DRV_LOG(DEBUG, "BRB still has 0x%08x", tmp_reg); + PMD_DRV_LOG(DEBUG, sc, "BRB still has 0x%08x", tmp_reg); /* reset timer as long as BRB actually gets emptied */ if (prev_brb > tmp_reg) { @@ -9280,7 +9348,7 @@ static int bnx2x_prev_unload_common(struct bnx2x_softc *sc) } if (!timer_count) { - PMD_DRV_LOG(NOTICE, "Failed to empty BRB"); + PMD_DRV_LOG(NOTICE, sc, "Failed to empty BRB"); } } @@ -9335,7 +9403,7 @@ static int bnx2x_prev_unload_uncommon(struct bnx2x_softc *sc) return 0; } - PMD_DRV_LOG(INFO, "Could not FLR"); + PMD_DRV_LOG(INFO, sc, "Could not FLR"); /* Close the MCP request, return failure */ rc = bnx2x_prev_mcp_done(sc); @@ -9352,6 +9420,8 @@ static int bnx2x_prev_unload(struct bnx2x_softc *sc) uint32_t fw, hw_lock_reg, hw_lock_val; uint32_t rc = 0; + PMD_INIT_FUNC_TRACE(sc); + /* * Clear HW from errors which may have resulted from an interrupted * DMAE transaction. @@ -9359,22 +9429,23 @@ static int bnx2x_prev_unload(struct bnx2x_softc *sc) bnx2x_prev_interrupted_dmae(sc); /* Release previously held locks */ - if (SC_FUNC(sc) <= 5) - hw_lock_reg = (MISC_REG_DRIVER_CONTROL_1 + SC_FUNC(sc) * 8); - else - hw_lock_reg = - (MISC_REG_DRIVER_CONTROL_7 + (SC_FUNC(sc) - 6) * 8); + hw_lock_reg = (SC_FUNC(sc) <= 5) ? + (MISC_REG_DRIVER_CONTROL_1 + SC_FUNC(sc) * 8) : + (MISC_REG_DRIVER_CONTROL_7 + (SC_FUNC(sc) - 6) * 8); hw_lock_val = (REG_RD(sc, hw_lock_reg)); if (hw_lock_val) { if (hw_lock_val & HW_LOCK_RESOURCE_NVRAM) { + PMD_DRV_LOG(DEBUG, sc, "Releasing previously held NVRAM lock\n"); REG_WR(sc, MCP_REG_MCPR_NVM_SW_ARB, (MCPR_NVM_SW_ARB_ARB_REQ_CLR1 << SC_PORT(sc))); } + PMD_DRV_LOG(DEBUG, sc, "Releasing previously held HW lock\n"); REG_WR(sc, hw_lock_reg, 0xffffffff); } if (MCPR_ACCESS_LOCK_LOCK & REG_RD(sc, MCP_REG_MCPR_ACCESS_LOCK)) { + PMD_DRV_LOG(DEBUG, sc, "Releasing previously held ALR\n"); REG_WR(sc, MCP_REG_MCPR_ACCESS_LOCK, 0); } @@ -9382,7 +9453,7 @@ static int bnx2x_prev_unload(struct bnx2x_softc *sc) /* Lock MCP using an unload request */ fw = bnx2x_fw_command(sc, DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS, 0); if (!fw) { - PMD_DRV_LOG(NOTICE, "MCP response failure, aborting"); + PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting"); rc = -1; break; } @@ -9402,7 +9473,7 @@ static int bnx2x_prev_unload(struct bnx2x_softc *sc) } while (--time_counter); if (!time_counter || rc) { - PMD_DRV_LOG(NOTICE, "Failed to unload previous driver!"); + PMD_DRV_LOG(NOTICE, sc, "Failed to unload previous driver!"); rc = -1; } @@ -9419,7 +9490,7 @@ bnx2x_dcbx_set_state(struct bnx2x_softc *sc, uint8_t dcb_on, uint32_t dcbx_enabl sc->dcb_state = FALSE; sc->dcbx_enabled = BNX2X_DCBX_ENABLED_INVALID; } - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "DCB state [%s:%s]", dcb_on ? "ON" : "OFF", (dcbx_enabled == BNX2X_DCBX_ENABLED_OFF) ? "user-mode" : @@ -9452,7 +9523,7 @@ static void bnx2x_init_multi_cos(struct bnx2x_softc *sc) if (cos < sc->max_cos) { sc->prio_to_cos[pri] = cos; } else { - PMD_DRV_LOG(WARNING, + PMD_DRV_LOG(WARNING, sc, "Invalid COS %d for priority %d " "(max COS is %d), setting to 0", cos, pri, (sc->max_cos - 1)); @@ -9473,7 +9544,7 @@ static int bnx2x_pci_get_caps(struct bnx2x_softc *sc) cap = sc->pci_caps = rte_zmalloc("caps", sizeof(struct bnx2x_pci_cap), RTE_CACHE_LINE_SIZE); if (!cap) { - PMD_DRV_LOG(NOTICE, "Failed to allocate memory"); + PMD_DRV_LOG(NOTICE, sc, "Failed to allocate memory"); return -ENOMEM; } @@ -9484,7 +9555,7 @@ static int bnx2x_pci_get_caps(struct bnx2x_softc *sc) pci_read(sc, PCIR_STATUS, &status, 2); if (!(status & PCIM_STATUS_CAPPRESENT)) { #endif - PMD_DRV_LOG(NOTICE, "PCIe capability reading failed"); + PMD_DRV_LOG(NOTICE, sc, "PCIe capability reading failed"); return -1; } @@ -9504,7 +9575,7 @@ static int bnx2x_pci_get_caps(struct bnx2x_softc *sc) sizeof(struct bnx2x_pci_cap), RTE_CACHE_LINE_SIZE); if (!cap->next) { - PMD_DRV_LOG(NOTICE, "Failed to allocate memory"); + PMD_DRV_LOG(NOTICE, sc, "Failed to allocate memory"); return -ENOMEM; } cap = cap->next; @@ -9540,25 +9611,25 @@ void bnx2x_load_firmware(struct bnx2x_softc *sc) ? FW_NAME_57711 : FW_NAME_57810; f = open(fwname, O_RDONLY); if (f < 0) { - PMD_DRV_LOG(NOTICE, "Can't open firmware file"); + PMD_DRV_LOG(NOTICE, sc, "Can't open firmware file"); return; } if (fstat(f, &st) < 0) { - PMD_DRV_LOG(NOTICE, "Can't stat firmware file"); + PMD_DRV_LOG(NOTICE, sc, "Can't stat firmware file"); close(f); return; } sc->firmware = rte_zmalloc("bnx2x_fw", st.st_size, RTE_CACHE_LINE_SIZE); if (!sc->firmware) { - PMD_DRV_LOG(NOTICE, "Can't allocate memory for firmware"); + PMD_DRV_LOG(NOTICE, sc, "Can't allocate memory for firmware"); close(f); return; } if (read(f, sc->firmware, st.st_size) != st.st_size) { - PMD_DRV_LOG(NOTICE, "Can't read firmware data"); + PMD_DRV_LOG(NOTICE, sc, "Can't read firmware data"); close(f); return; } @@ -9566,10 +9637,11 @@ void bnx2x_load_firmware(struct bnx2x_softc *sc) sc->fw_len = st.st_size; if (sc->fw_len < FW_HEADER_LEN) { - PMD_DRV_LOG(NOTICE, "Invalid fw size: %" PRIu64, sc->fw_len); + PMD_DRV_LOG(NOTICE, sc, + "Invalid fw size: %" PRIu64, sc->fw_len); return; } - PMD_DRV_LOG(DEBUG, "fw_len = %" PRIu64, sc->fw_len); + PMD_DRV_LOG(DEBUG, sc, "fw_len = %" PRIu64, sc->fw_len); } static void @@ -9636,11 +9708,11 @@ int bnx2x_attach(struct bnx2x_softc *sc) { int rc; - PMD_DRV_LOG(DEBUG, "Starting attach..."); + PMD_DRV_LOG(DEBUG, sc, "Starting attach..."); rc = bnx2x_pci_get_caps(sc); if (rc) { - PMD_DRV_LOG(NOTICE, "PCIe caps reading was failed"); + PMD_DRV_LOG(NOTICE, sc, "PCIe caps reading was failed"); return rc; } @@ -9679,7 +9751,7 @@ int bnx2x_attach(struct bnx2x_softc *sc) /* get device info and set params */ if (bnx2x_get_device_info(sc) != 0) { - PMD_DRV_LOG(NOTICE, "getting device info"); + PMD_DRV_LOG(NOTICE, sc, "getting device info"); return -ENXIO; } @@ -9703,6 +9775,8 @@ int bnx2x_attach(struct bnx2x_softc *sc) sc->fw_seq = (SHMEM_RD(sc, func_mb[SC_FW_MB_IDX(sc)].drv_mb_header) & DRV_MSG_SEQ_NUMBER_MASK); + PMD_DRV_LOG(DEBUG, sc, "prev unload fw_seq 0x%04x", + sc->fw_seq); bnx2x_prev_unload(sc); } @@ -9778,7 +9852,7 @@ bnx2x_igu_clear_sb_gen(struct bnx2x_softc *sc, uint8_t func, uint8_t idu_sb_id, mb(); - PMD_DRV_LOG(DEBUG, "write 0x%08x to IGU(via GRC) addr 0x%x", + PMD_DRV_LOG(DEBUG, sc, "write 0x%08x to IGU(via GRC) addr 0x%x", ctl, igu_addr_ctl); REG_WR(sc, igu_addr_ctl, ctl); @@ -9790,7 +9864,7 @@ bnx2x_igu_clear_sb_gen(struct bnx2x_softc *sc, uint8_t func, uint8_t idu_sb_id, } if (!(REG_RD(sc, igu_addr_ack) & sb_bit)) { - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "Unable to finish IGU cleanup: " "idu_sb_id %d offset %d bit %d (cnt %d)", idu_sb_id, idu_sb_id / 32, idu_sb_id % 32, cnt); @@ -9810,7 +9884,7 @@ static void bnx2x_reset_common(struct bnx2x_softc *sc) { uint32_t val = 0x1400; - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); /* reset_common */ REG_WR(sc, (GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR), @@ -9844,8 +9918,10 @@ static void bnx2x_common_init_phy(struct bnx2x_softc *sc) shmem2_base[1] = SHMEM2_RD(sc, other_shmem2_base_addr); } + bnx2x_acquire_phy_lock(sc); elink_common_init_phy(sc, shmem_base, shmem2_base, sc->devinfo.chip_id, 0); + bnx2x_release_phy_lock(sc); } static void bnx2x_pf_disable(struct bnx2x_softc *sc) @@ -10019,7 +10095,8 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc) uint8_t abs_func_id; uint32_t val; - PMD_DRV_LOG(DEBUG, "starting common init for func %d", SC_ABS_FUNC(sc)); + PMD_DRV_LOG(DEBUG, sc, + "starting common init for func %d", SC_ABS_FUNC(sc)); /* * take the RESET lock to protect undi_unload flow from accessing @@ -10102,12 +10179,12 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc) val = REG_RD(sc, PXP2_REG_RQ_CFG_DONE); if (val != 1) { - PMD_DRV_LOG(NOTICE, "PXP2 CFG failed"); + PMD_DRV_LOG(NOTICE, sc, "PXP2 CFG failed"); return -1; } val = REG_RD(sc, PXP2_REG_RD_INIT_DONE); if (val != 1) { - PMD_DRV_LOG(NOTICE, "PXP2 RD_INIT failed"); + PMD_DRV_LOG(NOTICE, sc, "PXP2 RD_INIT failed"); return -1; } @@ -10229,7 +10306,7 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc) } while (factor-- && (val != 1)); if (val != 1) { - PMD_DRV_LOG(NOTICE, "ATC_INIT failed"); + PMD_DRV_LOG(NOTICE, sc, "ATC_INIT failed"); return -1; } } @@ -10367,7 +10444,7 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc) if (sizeof(union cdu_context) != 1024) { /* we currently assume that a context is 1024 bytes */ - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "please adjust the size of cdu_context(%ld)", (long)sizeof(union cdu_context)); } @@ -10429,17 +10506,17 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc) /* finish CFC init */ val = reg_poll(sc, CFC_REG_LL_INIT_DONE, 1, 100, 10); if (val != 1) { - PMD_DRV_LOG(NOTICE, "CFC LL_INIT failed"); + PMD_DRV_LOG(NOTICE, sc, "CFC LL_INIT failed"); return -1; } val = reg_poll(sc, CFC_REG_AC_INIT_DONE, 1, 100, 10); if (val != 1) { - PMD_DRV_LOG(NOTICE, "CFC AC_INIT failed"); + PMD_DRV_LOG(NOTICE, sc, "CFC AC_INIT failed"); return -1; } val = reg_poll(sc, CFC_REG_CAM_INIT_DONE, 1, 100, 10); if (val != 1) { - PMD_DRV_LOG(NOTICE, "CFC CAM_INIT failed"); + PMD_DRV_LOG(NOTICE, sc, "CFC CAM_INIT failed"); return -1; } REG_WR(sc, CFC_REG_DEBUG0, 0); @@ -10492,7 +10569,7 @@ static int bnx2x_init_hw_port(struct bnx2x_softc *sc) uint32_t low, high; uint32_t val; - PMD_DRV_LOG(DEBUG, "starting port init for port %d", port); + PMD_DRV_LOG(DEBUG, sc, "starting port init for port %d", port); REG_WR(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4, 0); @@ -10719,7 +10796,7 @@ bnx2x_flr_clnup_poll_hw_counter(struct bnx2x_softc *sc, uint32_t reg, uint32_t val = bnx2x_flr_clnup_reg_poll(sc, reg, 0, poll_cnt); if (val != 0) { - PMD_DRV_LOG(NOTICE, "%s usage count=%d", msg, val); + PMD_DRV_LOG(NOTICE, sc, "%s usage count=%d", msg, val); return -1; } @@ -10811,7 +10888,7 @@ bnx2x_send_final_clnup(struct bnx2x_softc *sc, uint8_t clnup_func, int ret = 0; if (REG_RD(sc, comp_addr)) { - PMD_DRV_LOG(NOTICE, + PMD_DRV_LOG(NOTICE, sc, "Cleanup complete was not 0 before sending"); return -1; } @@ -10824,8 +10901,8 @@ bnx2x_send_final_clnup(struct bnx2x_softc *sc, uint8_t clnup_func, REG_WR(sc, XSDM_REG_OPERATION_GEN, op_gen_command); if (bnx2x_flr_clnup_reg_poll(sc, comp_addr, 1, poll_cnt) != 1) { - PMD_DRV_LOG(NOTICE, "FW final cleanup did not succeed"); - PMD_DRV_LOG(DEBUG, "At timeout completion address contained %x", + PMD_DRV_LOG(NOTICE, sc, "FW final cleanup did not succeed"); + PMD_DRV_LOG(DEBUG, sc, "At timeout completion address contained %x", (REG_RD(sc, comp_addr))); rte_panic("FLR cleanup failed"); return -1; @@ -10941,28 +11018,30 @@ static void bnx2x_hw_enable_status(struct bnx2x_softc *sc) __rte_unused uint32_t val; val = REG_RD(sc, CFC_REG_WEAK_ENABLE_PF); - PMD_DRV_LOG(DEBUG, "CFC_REG_WEAK_ENABLE_PF is 0x%x", val); + PMD_DRV_LOG(DEBUG, sc, "CFC_REG_WEAK_ENABLE_PF is 0x%x", val); val = REG_RD(sc, PBF_REG_DISABLE_PF); - PMD_DRV_LOG(DEBUG, "PBF_REG_DISABLE_PF is 0x%x", val); + PMD_DRV_LOG(DEBUG, sc, "PBF_REG_DISABLE_PF is 0x%x", val); val = REG_RD(sc, IGU_REG_PCI_PF_MSI_EN); - PMD_DRV_LOG(DEBUG, "IGU_REG_PCI_PF_MSI_EN is 0x%x", val); + PMD_DRV_LOG(DEBUG, sc, "IGU_REG_PCI_PF_MSI_EN is 0x%x", val); val = REG_RD(sc, IGU_REG_PCI_PF_MSIX_EN); - PMD_DRV_LOG(DEBUG, "IGU_REG_PCI_PF_MSIX_EN is 0x%x", val); + PMD_DRV_LOG(DEBUG, sc, "IGU_REG_PCI_PF_MSIX_EN is 0x%x", val); val = REG_RD(sc, IGU_REG_PCI_PF_MSIX_FUNC_MASK); - PMD_DRV_LOG(DEBUG, "IGU_REG_PCI_PF_MSIX_FUNC_MASK is 0x%x", val); + PMD_DRV_LOG(DEBUG, sc, "IGU_REG_PCI_PF_MSIX_FUNC_MASK is 0x%x", val); val = REG_RD(sc, PGLUE_B_REG_SHADOW_BME_PF_7_0_CLR); - PMD_DRV_LOG(DEBUG, "PGLUE_B_REG_SHADOW_BME_PF_7_0_CLR is 0x%x", val); + PMD_DRV_LOG(DEBUG, sc, + "PGLUE_B_REG_SHADOW_BME_PF_7_0_CLR is 0x%x", val); val = REG_RD(sc, PGLUE_B_REG_FLR_REQUEST_PF_7_0_CLR); - PMD_DRV_LOG(DEBUG, "PGLUE_B_REG_FLR_REQUEST_PF_7_0_CLR is 0x%x", val); + PMD_DRV_LOG(DEBUG, sc, + "PGLUE_B_REG_FLR_REQUEST_PF_7_0_CLR is 0x%x", val); val = REG_RD(sc, PGLUE_B_REG_INTERNAL_PFID_ENABLE_MASTER); - PMD_DRV_LOG(DEBUG, "PGLUE_B_REG_INTERNAL_PFID_ENABLE_MASTER is 0x%x", + PMD_DRV_LOG(DEBUG, sc, "PGLUE_B_REG_INTERNAL_PFID_ENABLE_MASTER is 0x%x", val); } @@ -11006,7 +11085,7 @@ static int bnx2x_pf_flr_clnup(struct bnx2x_softc *sc) /* Verify no pending pci transactions */ if (bnx2x_is_pcie_pending(sc)) { - PMD_DRV_LOG(NOTICE, "PCIE Transactions still pending"); + PMD_DRV_LOG(NOTICE, sc, "PCIE Transactions still pending"); } /* Debug */ @@ -11033,13 +11112,13 @@ static int bnx2x_init_hw_func(struct bnx2x_softc *sc) int main_mem_width, rc; uint32_t i; - PMD_DRV_LOG(DEBUG, "starting func init for func %d", func); + PMD_DRV_LOG(DEBUG, sc, "starting func init for func %d", func); /* FLR cleanup */ if (!CHIP_IS_E1x(sc)) { rc = bnx2x_pf_flr_clnup(sc); if (rc) { - PMD_DRV_LOG(NOTICE, "FLR cleanup failed!"); + PMD_DRV_LOG(NOTICE, sc, "FLR cleanup failed!"); return rc; } } @@ -11286,7 +11365,7 @@ static int bnx2x_init_hw_func(struct bnx2x_softc *sc) val = REG_RD(sc, main_mem_prty_clr); if (val) { - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "Parity errors in HC block during function init (0x%x)!", val); } @@ -11321,10 +11400,12 @@ static int bnx2x_init_hw_func(struct bnx2x_softc *sc) static void bnx2x_link_reset(struct bnx2x_softc *sc) { if (!BNX2X_NOMCP(sc)) { + bnx2x_acquire_phy_lock(sc); elink_lfa_reset(&sc->link_params, &sc->link_vars); + bnx2x_release_phy_lock(sc); } else { if (!CHIP_REV_IS_SLOW(sc)) { - PMD_DRV_LOG(WARNING, + PMD_DRV_LOG(WARNING, sc, "Bootcode is missing - cannot reset link"); } } @@ -11354,7 +11435,7 @@ static void bnx2x_reset_port(struct bnx2x_softc *sc) /* Check for BRB port occupancy */ val = REG_RD(sc, BRB1_REG_PORT_NUM_OCC_BLOCKS_0 + port * 4); if (val) { - PMD_DRV_LOG(DEBUG, + PMD_DRV_LOG(DEBUG, sc, "BRB1 is not empty, %d blocks are occupied", val); } } @@ -11548,10 +11629,10 @@ static int ecore_gunzip(struct bnx2x_softc *sc, const uint8_t * zbuf, int len) int ret; int data_begin = cut_gzip_prefix(zbuf, len); - PMD_DRV_LOG(DEBUG, "ecore_gunzip %d", len); + PMD_DRV_LOG(DEBUG, sc, "ecore_gunzip %d", len); if (data_begin <= 0) { - PMD_DRV_LOG(NOTICE, "bad gzip prefix"); + PMD_DRV_LOG(NOTICE, sc, "bad gzip prefix"); return -1; } @@ -11563,19 +11644,19 @@ static int ecore_gunzip(struct bnx2x_softc *sc, const uint8_t * zbuf, int len) ret = inflateInit2(&zlib_stream, -MAX_WBITS); if (ret != Z_OK) { - PMD_DRV_LOG(NOTICE, "zlib inflateInit2 error"); + PMD_DRV_LOG(NOTICE, sc, "zlib inflateInit2 error"); return ret; } ret = inflate(&zlib_stream, Z_FINISH); if ((ret != Z_STREAM_END) && (ret != Z_OK)) { - PMD_DRV_LOG(NOTICE, "zlib inflate error: %d %s", ret, + PMD_DRV_LOG(NOTICE, sc, "zlib inflate error: %d %s", ret, zlib_stream.msg); } sc->gz_outlen = zlib_stream.total_out; if (sc->gz_outlen & 0x3) { - PMD_DRV_LOG(NOTICE, "firmware is not aligned. gz_outlen == %d", + PMD_DRV_LOG(NOTICE, sc, "firmware is not aligned. gz_outlen == %d", sc->gz_outlen); } sc->gz_outlen >>= 2; @@ -11605,7 +11686,7 @@ ecore_storm_memset_struct(struct bnx2x_softc *sc, uint32_t addr, size_t size, } } -static const char *get_ext_phy_type(uint32_t ext_phy_type) +__rte_unused static const char *get_ext_phy_type(uint32_t ext_phy_type) { uint32_t phy_type_idx = ext_phy_type >> 8; static const char *types[] = @@ -11623,7 +11704,7 @@ static const char *get_ext_phy_type(uint32_t ext_phy_type) return types[13]; } -static const char *get_state(uint32_t state) +__rte_unused static const char *get_state(uint32_t state) { uint32_t state_idx = state >> 12; static const char *states[] = { "CLOSED", "OPENING_WAIT4_LOAD", @@ -11639,7 +11720,7 @@ static const char *get_state(uint32_t state) return states[0x10]; } -static const char *get_recovery_state(uint32_t state) +__rte_unused static const char *get_recovery_state(uint32_t state) { static const char *states[] = { "NONE", "DONE", "INIT", "WAIT", "FAILED", "NIC_LOADING" @@ -11647,7 +11728,7 @@ static const char *get_recovery_state(uint32_t state) return states[state]; } -static const char *get_rx_mode(uint32_t mode) +__rte_unused static const char *get_rx_mode(uint32_t mode) { static const char *modes[] = { "NONE", "NORMAL", "ALLMULTI", "PROMISC", "MAX_MULTICAST", "ERROR" @@ -11662,7 +11743,7 @@ static const char *get_rx_mode(uint32_t mode) } #define BNX2X_INFO_STR_MAX 256 -static const char *get_bnx2x_flags(uint32_t flags) +__rte_unused static const char *get_bnx2x_flags(uint32_t flags) { int i; static const char *flag[] = { "ONE_PORT ", "NO_ISCSI ", @@ -11694,7 +11775,7 @@ void bnx2x_print_adapter_info(struct bnx2x_softc *sc) int i = 0; __rte_unused uint32_t ext_phy_type; - PMD_INIT_FUNC_TRACE(); + PMD_INIT_FUNC_TRACE(sc); if (sc->link_vars.phy_flags & PHY_XGXS_FLAG) ext_phy_type = ELINK_XGXS_EXT_PHY_TYPE(REG_RD(sc, sc-> @@ -11713,97 +11794,102 @@ void bnx2x_print_adapter_info(struct bnx2x_softc *sc) dev_info.port_hw_config [0].external_phy_config))); - PMD_INIT_LOG(DEBUG, "\n\n===================================\n"); + PMD_DRV_LOG(INFO, sc, "\n\n===================================\n"); /* Hardware chip info. */ - PMD_INIT_LOG(DEBUG, "%12s : %#08x", "ASIC", sc->devinfo.chip_id); - PMD_INIT_LOG(DEBUG, "%12s : %c%d", "Rev", (CHIP_REV(sc) >> 12) + 'A', + PMD_DRV_LOG(INFO, sc, "%12s : %#08x", "ASIC", sc->devinfo.chip_id); + PMD_DRV_LOG(INFO, sc, "%12s : %c%d", "Rev", (CHIP_REV(sc) >> 12) + 'A', (CHIP_METAL(sc) >> 4)); /* Bus info. */ - PMD_INIT_LOG(DEBUG, "%12s : %d, ", "Bus PCIe", sc->devinfo.pcie_link_width); + PMD_DRV_LOG(INFO, sc, + "%12s : %d, ", "Bus PCIe", sc->devinfo.pcie_link_width); switch (sc->devinfo.pcie_link_speed) { case 1: - PMD_INIT_LOG(DEBUG, "%23s", "2.5 Gbps"); + PMD_DRV_LOG(INFO, sc, "%23s", "2.5 Gbps"); break; case 2: - PMD_INIT_LOG(DEBUG, "%21s", "5 Gbps"); + PMD_DRV_LOG(INFO, sc, "%21s", "5 Gbps"); break; case 4: - PMD_INIT_LOG(DEBUG, "%21s", "8 Gbps"); + PMD_DRV_LOG(INFO, sc, "%21s", "8 Gbps"); break; default: - PMD_INIT_LOG(DEBUG, "%33s", "Unknown link speed"); + PMD_DRV_LOG(INFO, sc, "%33s", "Unknown link speed"); } /* Device features. */ - PMD_INIT_LOG(DEBUG, "%12s : ", "Flags"); + PMD_DRV_LOG(INFO, sc, "%12s : ", "Flags"); /* Miscellaneous flags. */ if (sc->devinfo.pcie_cap_flags & BNX2X_MSI_CAPABLE_FLAG) { - PMD_INIT_LOG(DEBUG, "%18s", "MSI"); + PMD_DRV_LOG(INFO, sc, "%18s", "MSI"); i++; } if (sc->devinfo.pcie_cap_flags & BNX2X_MSIX_CAPABLE_FLAG) { if (i > 0) - PMD_INIT_LOG(DEBUG, "|"); - PMD_INIT_LOG(DEBUG, "%20s", "MSI-X"); + PMD_DRV_LOG(INFO, sc, "|"); + PMD_DRV_LOG(INFO, sc, "%20s", "MSI-X"); i++; } if (IS_PF(sc)) { - PMD_INIT_LOG(DEBUG, "%12s : ", "Queues"); + PMD_DRV_LOG(INFO, sc, "%12s : ", "Queues"); switch (sc->sp->rss_rdata.rss_mode) { case ETH_RSS_MODE_DISABLED: - PMD_INIT_LOG(DEBUG, "%19s", "None"); + PMD_DRV_LOG(INFO, sc, "%19s", "None"); break; case ETH_RSS_MODE_REGULAR: - PMD_INIT_LOG(DEBUG, "%18s : %d", "RSS", sc->num_queues); + PMD_DRV_LOG(INFO, sc, + "%18s : %d", "RSS", sc->num_queues); break; default: - PMD_INIT_LOG(DEBUG, "%22s", "Unknown"); + PMD_DRV_LOG(INFO, sc, "%22s", "Unknown"); break; } } /* RTE and Driver versions */ - PMD_INIT_LOG(DEBUG, "%12s : %s", "DPDK", - rte_version()); - PMD_INIT_LOG(DEBUG, "%12s : %s", "Driver", - bnx2x_pmd_version()); + PMD_DRV_LOG(INFO, sc, "%12s : %s", "DPDK", + rte_version()); + PMD_DRV_LOG(INFO, sc, "%12s : %s", "Driver", + bnx2x_pmd_version()); /* Firmware versions and device features. */ - PMD_INIT_LOG(DEBUG, "%12s : %d.%d.%d", + PMD_DRV_LOG(INFO, sc, "%12s : %d.%d.%d", "Firmware", BNX2X_5710_FW_MAJOR_VERSION, BNX2X_5710_FW_MINOR_VERSION, BNX2X_5710_FW_REVISION_VERSION); - PMD_INIT_LOG(DEBUG, "%12s : %s", + PMD_DRV_LOG(INFO, sc, "%12s : %s", "Bootcode", sc->devinfo.bc_ver_str); - PMD_INIT_LOG(DEBUG, "\n\n===================================\n"); - PMD_INIT_LOG(DEBUG, "%12s : %u", "Bnx2x Func", sc->pcie_func); - PMD_INIT_LOG(DEBUG, "%12s : %s", "Bnx2x Flags", get_bnx2x_flags(sc->flags)); - PMD_INIT_LOG(DEBUG, "%12s : %s", "DMAE Is", + PMD_DRV_LOG(INFO, sc, "\n\n===================================\n"); + PMD_DRV_LOG(INFO, sc, "%12s : %u", "Bnx2x Func", sc->pcie_func); + PMD_DRV_LOG(INFO, sc, + "%12s : %s", "Bnx2x Flags", get_bnx2x_flags(sc->flags)); + PMD_DRV_LOG(INFO, sc, "%12s : %s", "DMAE Is", (sc->dmae_ready ? "Ready" : "Not Ready")); - PMD_INIT_LOG(DEBUG, "%12s : %s", "OVLAN", (OVLAN(sc) ? "YES" : "NO")); - PMD_INIT_LOG(DEBUG, "%12s : %s", "MF", (IS_MF(sc) ? "YES" : "NO")); - PMD_INIT_LOG(DEBUG, "%12s : %u", "MTU", sc->mtu); - PMD_INIT_LOG(DEBUG, "%12s : %s", "PHY Type", get_ext_phy_type(ext_phy_type)); - PMD_INIT_LOG(DEBUG, "%12s : %x:%x:%x:%x:%x:%x", "MAC Addr", + PMD_DRV_LOG(INFO, sc, "%12s : %s", "OVLAN", (OVLAN(sc) ? "YES" : "NO")); + PMD_DRV_LOG(INFO, sc, "%12s : %s", "MF", (IS_MF(sc) ? "YES" : "NO")); + PMD_DRV_LOG(INFO, sc, "%12s : %u", "MTU", sc->mtu); + PMD_DRV_LOG(INFO, sc, + "%12s : %s", "PHY Type", get_ext_phy_type(ext_phy_type)); + PMD_DRV_LOG(INFO, sc, "%12s : %x:%x:%x:%x:%x:%x", "MAC Addr", sc->link_params.mac_addr[0], sc->link_params.mac_addr[1], sc->link_params.mac_addr[2], sc->link_params.mac_addr[3], sc->link_params.mac_addr[4], sc->link_params.mac_addr[5]); - PMD_INIT_LOG(DEBUG, "%12s : %s", "RX Mode", get_rx_mode(sc->rx_mode)); - PMD_INIT_LOG(DEBUG, "%12s : %s", "State", get_state(sc->state)); + PMD_DRV_LOG(INFO, sc, "%12s : %s", "RX Mode", get_rx_mode(sc->rx_mode)); + PMD_DRV_LOG(INFO, sc, "%12s : %s", "State", get_state(sc->state)); if (sc->recovery_state) - PMD_INIT_LOG(DEBUG, "%12s : %s", "Recovery", + PMD_DRV_LOG(INFO, sc, "%12s : %s", "Recovery", get_recovery_state(sc->recovery_state)); - PMD_INIT_LOG(DEBUG, "%12s : CQ = %lx, EQ = %lx", "SPQ Left", + PMD_DRV_LOG(INFO, sc, "%12s : CQ = %lx, EQ = %lx", "SPQ Left", sc->cq_spq_left, sc->eq_spq_left); - PMD_INIT_LOG(DEBUG, "%12s : %x", "Switch", sc->link_params.switch_cfg); - PMD_INIT_LOG(DEBUG, "\n\n===================================\n"); + PMD_DRV_LOG(INFO, sc, + "%12s : %x", "Switch", sc->link_params.switch_cfg); + PMD_DRV_LOG(INFO, sc, "\n\n===================================\n"); } |