Commit 51c1a580 authored by Merav Sicron's avatar Merav Sicron Committed by David S. Miller

bnx2x: revised driver prints

We've revised driver prints, changing the mask of existing prints
to allow better control over the debug messages, added prints to
error scenarios, removed unnecessary prints and corrected some spelling.
Please note that this patch contains lines with over 80 characters,
as string messages were kept in a single line.
Signed-off-by: default avatarMerav Sicron <meravs@broadcom.com>
Signed-off-by: default avatarYuval Mintz <yuvalmin@broadcom.com>
Signed-off-by: default avatarEilon Greenstein <eilong@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d8290ae5
...@@ -58,18 +58,22 @@ ...@@ -58,18 +58,22 @@
#define DRV_MODULE_NAME "bnx2x" #define DRV_MODULE_NAME "bnx2x"
/* for messages that are currently off */ /* for messages that are currently off */
#define BNX2X_MSG_OFF 0 #define BNX2X_MSG_OFF 0x0
#define BNX2X_MSG_MCP 0x010000 /* was: NETIF_MSG_HW */ #define BNX2X_MSG_MCP 0x0010000 /* was: NETIF_MSG_HW */
#define BNX2X_MSG_STATS 0x020000 /* was: NETIF_MSG_TIMER */ #define BNX2X_MSG_STATS 0x0020000 /* was: NETIF_MSG_TIMER */
#define BNX2X_MSG_NVM 0x040000 /* was: NETIF_MSG_HW */ #define BNX2X_MSG_NVM 0x0040000 /* was: NETIF_MSG_HW */
#define BNX2X_MSG_DMAE 0x080000 /* was: NETIF_MSG_HW */ #define BNX2X_MSG_DMAE 0x0080000 /* was: NETIF_MSG_HW */
#define BNX2X_MSG_SP 0x100000 /* was: NETIF_MSG_INTR */ #define BNX2X_MSG_SP 0x0100000 /* was: NETIF_MSG_INTR */
#define BNX2X_MSG_FP 0x200000 /* was: NETIF_MSG_INTR */ #define BNX2X_MSG_FP 0x0200000 /* was: NETIF_MSG_INTR */
#define BNX2X_MSG_IOV 0x0800000
#define BNX2X_MSG_IDLE 0x2000000 /* used for idle check*/
#define BNX2X_MSG_ETHTOOL 0x4000000
#define BNX2X_MSG_DCB 0x8000000
/* regular debug print */ /* regular debug print */
#define DP(__mask, fmt, ...) \ #define DP(__mask, fmt, ...) \
do { \ do { \
if (bp->msg_enable & (__mask)) \ if (unlikely(bp->msg_enable & (__mask))) \
pr_notice("[%s:%d(%s)]" fmt, \ pr_notice("[%s:%d(%s)]" fmt, \
__func__, __LINE__, \ __func__, __LINE__, \
bp->dev ? (bp->dev->name) : "?", \ bp->dev ? (bp->dev->name) : "?", \
...@@ -78,14 +82,14 @@ do { \ ...@@ -78,14 +82,14 @@ do { \
#define DP_CONT(__mask, fmt, ...) \ #define DP_CONT(__mask, fmt, ...) \
do { \ do { \
if (bp->msg_enable & (__mask)) \ if (unlikely(bp->msg_enable & (__mask))) \
pr_cont(fmt, ##__VA_ARGS__); \ pr_cont(fmt, ##__VA_ARGS__); \
} while (0) } while (0)
/* errors debug print */ /* errors debug print */
#define BNX2X_DBG_ERR(fmt, ...) \ #define BNX2X_DBG_ERR(fmt, ...) \
do { \ do { \
if (netif_msg_probe(bp)) \ if (unlikely(netif_msg_probe(bp))) \
pr_err("[%s:%d(%s)]" fmt, \ pr_err("[%s:%d(%s)]" fmt, \
__func__, __LINE__, \ __func__, __LINE__, \
bp->dev ? (bp->dev->name) : "?", \ bp->dev ? (bp->dev->name) : "?", \
...@@ -108,7 +112,7 @@ do { \ ...@@ -108,7 +112,7 @@ do { \
/* before we have a dev->name use dev_info() */ /* before we have a dev->name use dev_info() */
#define BNX2X_DEV_INFO(fmt, ...) \ #define BNX2X_DEV_INFO(fmt, ...) \
do { \ do { \
if (netif_msg_probe(bp)) \ if (unlikely(netif_msg_probe(bp))) \
dev_info(&bp->pdev->dev, fmt, ##__VA_ARGS__); \ dev_info(&bp->pdev->dev, fmt, ##__VA_ARGS__); \
} while (0) } while (0)
......
...@@ -598,7 +598,7 @@ static inline void bnx2x_igu_ack_sb_gen(struct bnx2x *bp, u8 igu_sb_id, ...@@ -598,7 +598,7 @@ static inline void bnx2x_igu_ack_sb_gen(struct bnx2x *bp, u8 igu_sb_id,
(update << IGU_REGULAR_BUPDATE_SHIFT) | (update << IGU_REGULAR_BUPDATE_SHIFT) |
(op << IGU_REGULAR_ENABLE_INT_SHIFT)); (op << IGU_REGULAR_ENABLE_INT_SHIFT));
DP(NETIF_MSG_HW, "write 0x%08x to IGU addr 0x%x\n", DP(NETIF_MSG_INTR, "write 0x%08x to IGU addr 0x%x\n",
cmd_data.sb_id_and_flags, igu_addr); cmd_data.sb_id_and_flags, igu_addr);
REG_WR(bp, igu_addr, cmd_data.sb_id_and_flags); REG_WR(bp, igu_addr, cmd_data.sb_id_and_flags);
...@@ -648,8 +648,8 @@ static inline void bnx2x_igu_clear_sb_gen(struct bnx2x *bp, u8 func, ...@@ -648,8 +648,8 @@ static inline void bnx2x_igu_clear_sb_gen(struct bnx2x *bp, u8 func,
if (!(REG_RD(bp, igu_addr_ack) & sb_bit)) { if (!(REG_RD(bp, igu_addr_ack) & sb_bit)) {
DP(NETIF_MSG_HW, "Unable to finish IGU cleanup: " DP(NETIF_MSG_HW,
"idu_sb_id %d offset %d bit %d (cnt %d)\n", "Unable to finish IGU cleanup: idu_sb_id %d offset %d bit %d (cnt %d)\n",
idu_sb_id, idu_sb_id/32, idu_sb_id%32, cnt); idu_sb_id, idu_sb_id/32, idu_sb_id%32, cnt);
} }
} }
...@@ -668,8 +668,6 @@ static inline void bnx2x_hc_ack_sb(struct bnx2x *bp, u8 sb_id, ...@@ -668,8 +668,6 @@ static inline void bnx2x_hc_ack_sb(struct bnx2x *bp, u8 sb_id,
(update << IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT) | (update << IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT) |
(op << IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT)); (op << IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT));
DP(BNX2X_MSG_OFF, "write 0x%08x to HC addr 0x%x\n",
(*(u32 *)&igu_ack), hc_addr);
REG_WR(bp, hc_addr, (*(u32 *)&igu_ack)); REG_WR(bp, hc_addr, (*(u32 *)&igu_ack));
/* Make sure that ACK is written */ /* Make sure that ACK is written */
...@@ -703,9 +701,6 @@ static inline u16 bnx2x_hc_ack_int(struct bnx2x *bp) ...@@ -703,9 +701,6 @@ static inline u16 bnx2x_hc_ack_int(struct bnx2x *bp)
COMMAND_REG_SIMD_MASK); COMMAND_REG_SIMD_MASK);
u32 result = REG_RD(bp, hc_addr); u32 result = REG_RD(bp, hc_addr);
DP(BNX2X_MSG_OFF, "read 0x%08x from HC addr 0x%x\n",
result, hc_addr);
barrier(); barrier();
return result; return result;
} }
...@@ -715,7 +710,7 @@ static inline u16 bnx2x_igu_ack_int(struct bnx2x *bp) ...@@ -715,7 +710,7 @@ static inline u16 bnx2x_igu_ack_int(struct bnx2x *bp)
u32 igu_addr = (BAR_IGU_INTMEM + IGU_REG_SISR_MDPC_WMASK_LSB_UPPER*8); u32 igu_addr = (BAR_IGU_INTMEM + IGU_REG_SISR_MDPC_WMASK_LSB_UPPER*8);
u32 result = REG_RD(bp, igu_addr); u32 result = REG_RD(bp, igu_addr);
DP(NETIF_MSG_HW, "read 0x%08x from IGU addr 0x%x\n", DP(NETIF_MSG_INTR, "read 0x%08x from IGU addr 0x%x\n",
result, igu_addr); result, igu_addr);
barrier(); barrier();
...@@ -893,13 +888,16 @@ static inline int bnx2x_alloc_rx_sge(struct bnx2x *bp, ...@@ -893,13 +888,16 @@ static inline int bnx2x_alloc_rx_sge(struct bnx2x *bp,
struct eth_rx_sge *sge = &fp->rx_sge_ring[index]; struct eth_rx_sge *sge = &fp->rx_sge_ring[index];
dma_addr_t mapping; dma_addr_t mapping;
if (unlikely(page == NULL)) if (unlikely(page == NULL)) {
BNX2X_ERR("Can't alloc sge\n");
return -ENOMEM; return -ENOMEM;
}
mapping = dma_map_page(&bp->pdev->dev, page, 0, mapping = dma_map_page(&bp->pdev->dev, page, 0,
SGE_PAGE_SIZE*PAGES_PER_SGE, DMA_FROM_DEVICE); SGE_PAGE_SIZE*PAGES_PER_SGE, DMA_FROM_DEVICE);
if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) { if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) {
__free_pages(page, PAGES_PER_SGE_SHIFT); __free_pages(page, PAGES_PER_SGE_SHIFT);
BNX2X_ERR("Can't map sge\n");
return -ENOMEM; return -ENOMEM;
} }
...@@ -929,6 +927,7 @@ static inline int bnx2x_alloc_rx_data(struct bnx2x *bp, ...@@ -929,6 +927,7 @@ static inline int bnx2x_alloc_rx_data(struct bnx2x *bp,
DMA_FROM_DEVICE); DMA_FROM_DEVICE);
if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) { if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) {
kfree(data); kfree(data);
BNX2X_ERR("Can't map rx data\n");
return -ENOMEM; return -ENOMEM;
} }
...@@ -1299,7 +1298,7 @@ static inline void bnx2x_init_txdata(struct bnx2x *bp, ...@@ -1299,7 +1298,7 @@ static inline void bnx2x_init_txdata(struct bnx2x *bp,
txdata->txq_index = txq_index; txdata->txq_index = txq_index;
txdata->tx_cons_sb = tx_cons_sb; txdata->tx_cons_sb = tx_cons_sb;
DP(BNX2X_MSG_SP, "created tx data cid %d, txq %d\n", DP(NETIF_MSG_IFUP, "created tx data cid %d, txq %d\n",
txdata->cid, txdata->txq_index); txdata->cid, txdata->txq_index);
} }
...@@ -1344,7 +1343,7 @@ static inline void bnx2x_init_fcoe_fp(struct bnx2x *bp) ...@@ -1344,7 +1343,7 @@ static inline void bnx2x_init_fcoe_fp(struct bnx2x *bp)
bnx2x_init_txdata(bp, &bnx2x_fcoe(bp, txdata[0]), bnx2x_init_txdata(bp, &bnx2x_fcoe(bp, txdata[0]),
fp->cid, FCOE_TXQ_IDX(bp), BNX2X_FCOE_L2_TX_INDEX); fp->cid, FCOE_TXQ_IDX(bp), BNX2X_FCOE_L2_TX_INDEX);
DP(BNX2X_MSG_SP, "created fcoe tx data (fp index %d)\n", fp->index); DP(NETIF_MSG_IFUP, "created fcoe tx data (fp index %d)\n", fp->index);
/* qZone id equals to FW (per path) client id */ /* qZone id equals to FW (per path) client id */
bnx2x_fcoe(bp, cl_qzone_id) = bnx2x_fp_qzone_id(fp); bnx2x_fcoe(bp, cl_qzone_id) = bnx2x_fp_qzone_id(fp);
...@@ -1363,8 +1362,8 @@ static inline void bnx2x_init_fcoe_fp(struct bnx2x *bp) ...@@ -1363,8 +1362,8 @@ static inline void bnx2x_init_fcoe_fp(struct bnx2x *bp)
BP_FUNC(bp), bnx2x_sp(bp, q_rdata), BP_FUNC(bp), bnx2x_sp(bp, q_rdata),
bnx2x_sp_mapping(bp, q_rdata), q_type); bnx2x_sp_mapping(bp, q_rdata), q_type);
DP(NETIF_MSG_IFUP, "queue[%d]: bnx2x_init_sb(%p,%p) cl_id %d fw_sb %d " DP(NETIF_MSG_IFUP,
"igu_sb %d\n", "queue[%d]: bnx2x_init_sb(%p,%p) cl_id %d fw_sb %d igu_sb %d\n",
fp->index, bp, fp->status_blk.e2_sb, fp->cl_id, fp->fw_sb_id, fp->index, bp, fp->status_blk.e2_sb, fp->cl_id, fp->fw_sb_id,
fp->igu_sb_id); fp->igu_sb_id);
} }
...@@ -1377,8 +1376,7 @@ static inline int bnx2x_clean_tx_queue(struct bnx2x *bp, ...@@ -1377,8 +1376,7 @@ static inline int bnx2x_clean_tx_queue(struct bnx2x *bp,
while (bnx2x_has_tx_work_unload(txdata)) { while (bnx2x_has_tx_work_unload(txdata)) {
if (!cnt) { if (!cnt) {
BNX2X_ERR("timeout waiting for queue[%d]: " BNX2X_ERR("timeout waiting for queue[%d]: txdata->tx_pkt_prod(%d) != txdata->tx_pkt_cons(%d)\n",
"txdata->tx_pkt_prod(%d) != txdata->tx_pkt_cons(%d)\n",
txdata->txq_index, txdata->tx_pkt_prod, txdata->txq_index, txdata->tx_pkt_prod,
txdata->tx_pkt_cons); txdata->tx_pkt_cons);
#ifdef BNX2X_STOP_ON_ERROR #ifdef BNX2X_STOP_ON_ERROR
...@@ -1455,8 +1453,8 @@ static inline bool bnx2x_wait_sp_comp(struct bnx2x *bp, unsigned long mask) ...@@ -1455,8 +1453,8 @@ static inline bool bnx2x_wait_sp_comp(struct bnx2x *bp, unsigned long mask)
netif_addr_lock_bh(bp->dev); netif_addr_lock_bh(bp->dev);
if (bp->sp_state & mask) { if (bp->sp_state & mask) {
BNX2X_ERR("Filtering completion timed out. sp_state 0x%lx, " BNX2X_ERR("Filtering completion timed out. sp_state 0x%lx, mask 0x%lx\n",
"mask 0x%lx\n", bp->sp_state, mask); bp->sp_state, mask);
netif_addr_unlock_bh(bp->dev); netif_addr_unlock_bh(bp->dev);
return false; return false;
} }
...@@ -1492,7 +1490,7 @@ static inline u16 bnx2x_extract_max_cfg(struct bnx2x *bp, u32 mf_cfg) ...@@ -1492,7 +1490,7 @@ static inline u16 bnx2x_extract_max_cfg(struct bnx2x *bp, u32 mf_cfg)
u16 max_cfg = (mf_cfg & FUNC_MF_CFG_MAX_BW_MASK) >> u16 max_cfg = (mf_cfg & FUNC_MF_CFG_MAX_BW_MASK) >>
FUNC_MF_CFG_MAX_BW_SHIFT; FUNC_MF_CFG_MAX_BW_SHIFT;
if (!max_cfg) { if (!max_cfg) {
DP(NETIF_MSG_LINK, DP(NETIF_MSG_IFUP | BNX2X_MSG_ETHTOOL,
"Max BW configured to 0 - using 100 instead\n"); "Max BW configured to 0 - using 100 instead\n");
max_cfg = 100; max_cfg = 100;
} }
...@@ -1655,7 +1653,7 @@ static inline void bnx2x_update_drv_flags(struct bnx2x *bp, u32 flags, u32 set) ...@@ -1655,7 +1653,7 @@ static inline void bnx2x_update_drv_flags(struct bnx2x *bp, u32 flags, u32 set)
RESET_FLAGS(drv_flags, flags); RESET_FLAGS(drv_flags, flags);
SHMEM2_WR(bp, drv_flags, drv_flags); SHMEM2_WR(bp, drv_flags, drv_flags);
DP(NETIF_MSG_HW, "drv_flags 0x%08x\n", drv_flags); DP(NETIF_MSG_IFUP, "drv_flags 0x%08x\n", drv_flags);
bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_DRV_FLAGS); bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_DRV_FLAGS);
} }
} }
......
...@@ -315,7 +315,8 @@ struct bnx2x_vlan_mac_obj { ...@@ -315,7 +315,8 @@ struct bnx2x_vlan_mac_obj {
* @return zero if the element may be added * @return zero if the element may be added
*/ */
int (*check_add)(struct bnx2x_vlan_mac_obj *o, int (*check_add)(struct bnx2x *bp,
struct bnx2x_vlan_mac_obj *o,
union bnx2x_classification_ramrod_data *data); union bnx2x_classification_ramrod_data *data);
/** /**
...@@ -324,7 +325,8 @@ struct bnx2x_vlan_mac_obj { ...@@ -324,7 +325,8 @@ struct bnx2x_vlan_mac_obj {
* @return true if the element may be deleted * @return true if the element may be deleted
*/ */
struct bnx2x_vlan_mac_registry_elem * struct bnx2x_vlan_mac_registry_elem *
(*check_del)(struct bnx2x_vlan_mac_obj *o, (*check_del)(struct bnx2x *bp,
struct bnx2x_vlan_mac_obj *o,
union bnx2x_classification_ramrod_data *data); union bnx2x_classification_ramrod_data *data);
/** /**
...@@ -332,7 +334,8 @@ struct bnx2x_vlan_mac_obj { ...@@ -332,7 +334,8 @@ struct bnx2x_vlan_mac_obj {
* *
* @return true if the element may be deleted * @return true if the element may be deleted
*/ */
bool (*check_move)(struct bnx2x_vlan_mac_obj *src_o, bool (*check_move)(struct bnx2x *bp,
struct bnx2x_vlan_mac_obj *src_o,
struct bnx2x_vlan_mac_obj *dst_o, struct bnx2x_vlan_mac_obj *dst_o,
union bnx2x_classification_ramrod_data *data); union bnx2x_classification_ramrod_data *data);
......
...@@ -75,7 +75,7 @@ static void bnx2x_storm_stats_post(struct bnx2x *bp) ...@@ -75,7 +75,7 @@ static void bnx2x_storm_stats_post(struct bnx2x *bp)
bp->fw_stats_req->hdr.drv_stats_counter = bp->fw_stats_req->hdr.drv_stats_counter =
cpu_to_le16(bp->stats_counter++); cpu_to_le16(bp->stats_counter++);
DP(NETIF_MSG_TIMER, "Sending statistics ramrod %d\n", DP(BNX2X_MSG_STATS, "Sending statistics ramrod %d\n",
bp->fw_stats_req->hdr.drv_stats_counter); bp->fw_stats_req->hdr.drv_stats_counter);
...@@ -818,29 +818,29 @@ static int bnx2x_storm_stats_update(struct bnx2x *bp) ...@@ -818,29 +818,29 @@ static int bnx2x_storm_stats_update(struct bnx2x *bp)
/* are storm stats valid? */ /* are storm stats valid? */
if (le16_to_cpu(counters->xstats_counter) != cur_stats_counter) { if (le16_to_cpu(counters->xstats_counter) != cur_stats_counter) {
DP(BNX2X_MSG_STATS, "stats not updated by xstorm" DP(BNX2X_MSG_STATS,
" xstorm counter (0x%x) != stats_counter (0x%x)\n", "stats not updated by xstorm xstorm counter (0x%x) != stats_counter (0x%x)\n",
le16_to_cpu(counters->xstats_counter), bp->stats_counter); le16_to_cpu(counters->xstats_counter), bp->stats_counter);
return -EAGAIN; return -EAGAIN;
} }
if (le16_to_cpu(counters->ustats_counter) != cur_stats_counter) { if (le16_to_cpu(counters->ustats_counter) != cur_stats_counter) {
DP(BNX2X_MSG_STATS, "stats not updated by ustorm" DP(BNX2X_MSG_STATS,
" ustorm counter (0x%x) != stats_counter (0x%x)\n", "stats not updated by ustorm ustorm counter (0x%x) != stats_counter (0x%x)\n",
le16_to_cpu(counters->ustats_counter), bp->stats_counter); le16_to_cpu(counters->ustats_counter), bp->stats_counter);
return -EAGAIN; return -EAGAIN;
} }
if (le16_to_cpu(counters->cstats_counter) != cur_stats_counter) { if (le16_to_cpu(counters->cstats_counter) != cur_stats_counter) {
DP(BNX2X_MSG_STATS, "stats not updated by cstorm" DP(BNX2X_MSG_STATS,
" cstorm counter (0x%x) != stats_counter (0x%x)\n", "stats not updated by cstorm cstorm counter (0x%x) != stats_counter (0x%x)\n",
le16_to_cpu(counters->cstats_counter), bp->stats_counter); le16_to_cpu(counters->cstats_counter), bp->stats_counter);
return -EAGAIN; return -EAGAIN;
} }
if (le16_to_cpu(counters->tstats_counter) != cur_stats_counter) { if (le16_to_cpu(counters->tstats_counter) != cur_stats_counter) {
DP(BNX2X_MSG_STATS, "stats not updated by tstorm" DP(BNX2X_MSG_STATS,
" tstorm counter (0x%x) != stats_counter (0x%x)\n", "stats not updated by tstorm tstorm counter (0x%x) != stats_counter (0x%x)\n",
le16_to_cpu(counters->tstats_counter), bp->stats_counter); le16_to_cpu(counters->tstats_counter), bp->stats_counter);
return -EAGAIN; return -EAGAIN;
} }
...@@ -867,8 +867,7 @@ static int bnx2x_storm_stats_update(struct bnx2x *bp) ...@@ -867,8 +867,7 @@ static int bnx2x_storm_stats_update(struct bnx2x *bp)
u32 diff; u32 diff;
DP(BNX2X_MSG_STATS, "queue[%d]: ucast_sent 0x%x, " DP(BNX2X_MSG_STATS, "queue[%d]: ucast_sent 0x%x, bcast_sent 0x%x mcast_sent 0x%x\n",
"bcast_sent 0x%x mcast_sent 0x%x\n",
i, xclient->ucast_pkts_sent, i, xclient->ucast_pkts_sent,
xclient->bcast_pkts_sent, xclient->mcast_pkts_sent); xclient->bcast_pkts_sent, xclient->mcast_pkts_sent);
...@@ -1147,51 +1146,9 @@ static void bnx2x_stats_update(struct bnx2x *bp) ...@@ -1147,51 +1146,9 @@ static void bnx2x_stats_update(struct bnx2x *bp)
if (netif_msg_timer(bp)) { if (netif_msg_timer(bp)) {
struct bnx2x_eth_stats *estats = &bp->eth_stats; struct bnx2x_eth_stats *estats = &bp->eth_stats;
int i, cos;
netdev_dbg(bp->dev, "brb drops %u brb truncate %u\n", netdev_dbg(bp->dev, "brb drops %u brb truncate %u\n",
estats->brb_drop_lo, estats->brb_truncate_lo); estats->brb_drop_lo, estats->brb_truncate_lo);
for_each_eth_queue(bp, i) {
struct bnx2x_fastpath *fp = &bp->fp[i];
struct bnx2x_eth_q_stats *qstats = &fp->eth_q_stats;
pr_debug("%s: rx usage(%4u) *rx_cons_sb(%u) rx pkt(%lu) rx calls(%lu %lu)\n",
fp->name, (le16_to_cpu(*fp->rx_cons_sb) -
fp->rx_comp_cons),
le16_to_cpu(*fp->rx_cons_sb),
bnx2x_hilo(&qstats->
total_unicast_packets_received_hi),
fp->rx_calls, fp->rx_pkt);
}
for_each_eth_queue(bp, i) {
struct bnx2x_fastpath *fp = &bp->fp[i];
struct bnx2x_fp_txdata *txdata;
struct bnx2x_eth_q_stats *qstats = &fp->eth_q_stats;
struct netdev_queue *txq;
pr_debug("%s: tx pkt(%lu) (Xoff events %u)",
fp->name,
bnx2x_hilo(
&qstats->total_unicast_packets_transmitted_hi),
qstats->driver_xoff);
for_each_cos_in_tx_queue(fp, cos) {
txdata = &fp->txdata[cos];
txq = netdev_get_tx_queue(bp->dev,
FP_COS_TO_TXQ(fp, cos));
pr_debug("%d: tx avail(%4u) *tx_cons_sb(%u) tx calls (%lu) %s\n",
cos,
bnx2x_tx_avail(bp, txdata),
le16_to_cpu(*txdata->tx_cons_sb),
txdata->tx_pkt,
(netif_tx_queue_stopped(txq) ?
"Xoff" : "Xon")
);
}
}
} }
bnx2x_hw_stats_post(bp); bnx2x_hw_stats_post(bp);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment