diff options
4 files changed, 17 insertions, 4 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c index e95174d451a5..5e07aa5e1aea 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | |||
| @@ -3127,11 +3127,16 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 3127 | BDS_PER_TX_PKT + | 3127 | BDS_PER_TX_PKT + |
| 3128 | NEXT_CNT_PER_TX_PKT(MAX_BDS_PER_TX_PKT))) { | 3128 | NEXT_CNT_PER_TX_PKT(MAX_BDS_PER_TX_PKT))) { |
| 3129 | /* Handle special storage cases separately */ | 3129 | /* Handle special storage cases separately */ |
| 3130 | if (txdata->tx_ring_size != 0) { | 3130 | if (txdata->tx_ring_size == 0) { |
| 3131 | BNX2X_ERR("BUG! Tx ring full when queue awake!\n"); | 3131 | struct bnx2x_eth_q_stats *q_stats = |
| 3132 | bnx2x_fp_qstats(bp, txdata->parent_fp); | ||
| 3133 | q_stats->driver_filtered_tx_pkt++; | ||
| 3134 | dev_kfree_skb(skb); | ||
| 3135 | return NETDEV_TX_OK; | ||
| 3136 | } | ||
| 3132 | bnx2x_fp_qstats(bp, txdata->parent_fp)->driver_xoff++; | 3137 | bnx2x_fp_qstats(bp, txdata->parent_fp)->driver_xoff++; |
| 3133 | netif_tx_stop_queue(txq); | 3138 | netif_tx_stop_queue(txq); |
| 3134 | } | 3139 | BNX2X_ERR("BUG! Tx ring full when queue awake!\n"); |
| 3135 | 3140 | ||
| 3136 | return NETDEV_TX_BUSY; | 3141 | return NETDEV_TX_BUSY; |
| 3137 | } | 3142 | } |
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c index e05f981398be..c7270c082ad6 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | |||
| @@ -62,7 +62,9 @@ static const struct { | |||
| 62 | 8, "[%s]: tpa_aggregations" }, | 62 | 8, "[%s]: tpa_aggregations" }, |
| 63 | { Q_STATS_OFFSET32(total_tpa_aggregated_frames_hi), | 63 | { Q_STATS_OFFSET32(total_tpa_aggregated_frames_hi), |
| 64 | 8, "[%s]: tpa_aggregated_frames"}, | 64 | 8, "[%s]: tpa_aggregated_frames"}, |
| 65 | { Q_STATS_OFFSET32(total_tpa_bytes_hi), 8, "[%s]: tpa_bytes"} | 65 | { Q_STATS_OFFSET32(total_tpa_bytes_hi), 8, "[%s]: tpa_bytes"}, |
| 66 | { Q_STATS_OFFSET32(driver_filtered_tx_pkt), | ||
| 67 | 4, "[%s]: driver_filtered_tx_pkt" } | ||
| 66 | }; | 68 | }; |
| 67 | 69 | ||
| 68 | #define BNX2X_NUM_Q_STATS ARRAY_SIZE(bnx2x_q_stats_arr) | 70 | #define BNX2X_NUM_Q_STATS ARRAY_SIZE(bnx2x_q_stats_arr) |
| @@ -177,6 +179,8 @@ static const struct { | |||
| 177 | 4, STATS_FLAGS_FUNC, "recoverable_errors" }, | 179 | 4, STATS_FLAGS_FUNC, "recoverable_errors" }, |
| 178 | { STATS_OFFSET32(unrecoverable_error), | 180 | { STATS_OFFSET32(unrecoverable_error), |
| 179 | 4, STATS_FLAGS_FUNC, "unrecoverable_errors" }, | 181 | 4, STATS_FLAGS_FUNC, "unrecoverable_errors" }, |
| 182 | { STATS_OFFSET32(driver_filtered_tx_pkt), | ||
| 183 | 4, STATS_FLAGS_FUNC, "driver_filtered_tx_pkt" }, | ||
| 180 | { STATS_OFFSET32(eee_tx_lpi), | 184 | { STATS_OFFSET32(eee_tx_lpi), |
| 181 | 4, STATS_FLAGS_PORT, "Tx LPI entry count"} | 185 | 4, STATS_FLAGS_PORT, "Tx LPI entry count"} |
| 182 | }; | 186 | }; |
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c index 348ed02d3c69..89ec0667140a 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c | |||
| @@ -1149,6 +1149,7 @@ static void bnx2x_drv_stats_update(struct bnx2x *bp) | |||
| 1149 | UPDATE_ESTAT_QSTAT(rx_err_discard_pkt); | 1149 | UPDATE_ESTAT_QSTAT(rx_err_discard_pkt); |
| 1150 | UPDATE_ESTAT_QSTAT(rx_skb_alloc_failed); | 1150 | UPDATE_ESTAT_QSTAT(rx_skb_alloc_failed); |
| 1151 | UPDATE_ESTAT_QSTAT(hw_csum_err); | 1151 | UPDATE_ESTAT_QSTAT(hw_csum_err); |
| 1152 | UPDATE_ESTAT_QSTAT(driver_filtered_tx_pkt); | ||
| 1152 | } | 1153 | } |
| 1153 | } | 1154 | } |
| 1154 | 1155 | ||
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h index 24b8e505b60c..b4d7b26c7fe7 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h | |||
| @@ -203,6 +203,7 @@ struct bnx2x_eth_stats { | |||
| 203 | /* Recovery */ | 203 | /* Recovery */ |
| 204 | u32 recoverable_error; | 204 | u32 recoverable_error; |
| 205 | u32 unrecoverable_error; | 205 | u32 unrecoverable_error; |
| 206 | u32 driver_filtered_tx_pkt; | ||
| 206 | /* src: Clear-on-Read register; Will not survive PMF Migration */ | 207 | /* src: Clear-on-Read register; Will not survive PMF Migration */ |
| 207 | u32 eee_tx_lpi; | 208 | u32 eee_tx_lpi; |
| 208 | }; | 209 | }; |
| @@ -264,6 +265,7 @@ struct bnx2x_eth_q_stats { | |||
| 264 | u32 total_tpa_aggregated_frames_lo; | 265 | u32 total_tpa_aggregated_frames_lo; |
| 265 | u32 total_tpa_bytes_hi; | 266 | u32 total_tpa_bytes_hi; |
| 266 | u32 total_tpa_bytes_lo; | 267 | u32 total_tpa_bytes_lo; |
| 268 | u32 driver_filtered_tx_pkt; | ||
| 267 | }; | 269 | }; |
| 268 | 270 | ||
| 269 | struct bnx2x_eth_stats_old { | 271 | struct bnx2x_eth_stats_old { |
| @@ -315,6 +317,7 @@ struct bnx2x_eth_q_stats_old { | |||
| 315 | u32 rx_err_discard_pkt_old; | 317 | u32 rx_err_discard_pkt_old; |
| 316 | u32 rx_skb_alloc_failed_old; | 318 | u32 rx_skb_alloc_failed_old; |
| 317 | u32 hw_csum_err_old; | 319 | u32 hw_csum_err_old; |
| 320 | u32 driver_filtered_tx_pkt_old; | ||
| 318 | }; | 321 | }; |
| 319 | 322 | ||
| 320 | struct bnx2x_net_stats_old { | 323 | struct bnx2x_net_stats_old { |
