aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c11
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c6
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c1
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h3
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
269struct bnx2x_eth_stats_old { 271struct 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
320struct bnx2x_net_stats_old { 323struct bnx2x_net_stats_old {