Skip to content

Commit c77192f

Browse files
Michael Chandavem330
authored andcommitted
bnxt_en: Add PFC statistics.
Report PFC statistics to ethtool -S and DCBNL. Signed-off-by: Michael Chan <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 7df4ae9 commit c77192f

File tree

3 files changed

+36
-8
lines changed

3 files changed

+36
-8
lines changed

drivers/net/ethernet/broadcom/bnxt/bnxt.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,6 +1124,13 @@ struct bnxt {
11241124
u32 lpi_tmr_hi;
11251125
};
11261126

1127+
#define BNXT_RX_STATS_OFFSET(counter) \
1128+
(offsetof(struct rx_port_stats, counter) / 8)
1129+
1130+
#define BNXT_TX_STATS_OFFSET(counter) \
1131+
((offsetof(struct tx_port_stats, counter) + \
1132+
sizeof(struct rx_port_stats) + 512) / 8)
1133+
11271134
#ifdef CONFIG_NET_RX_BUSY_POLL
11281135
static inline void bnxt_enable_poll(struct bnxt_napi *bnapi)
11291136
{

drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,8 +347,10 @@ static int bnxt_dcbnl_ieee_setets(struct net_device *dev, struct ieee_ets *ets)
347347
static int bnxt_dcbnl_ieee_getpfc(struct net_device *dev, struct ieee_pfc *pfc)
348348
{
349349
struct bnxt *bp = netdev_priv(dev);
350+
__le64 *stats = (__le64 *)bp->hw_rx_port_stats;
350351
struct ieee_pfc *my_pfc = bp->ieee_pfc;
351-
int rc;
352+
long rx_off, tx_off;
353+
int i, rc;
352354

353355
pfc->pfc_cap = bp->max_lltc;
354356

@@ -369,6 +371,16 @@ static int bnxt_dcbnl_ieee_getpfc(struct net_device *dev, struct ieee_pfc *pfc)
369371
pfc->mbc = my_pfc->mbc;
370372
pfc->delay = my_pfc->delay;
371373

374+
if (!stats)
375+
return 0;
376+
377+
rx_off = BNXT_RX_STATS_OFFSET(rx_pfc_ena_frames_pri0);
378+
tx_off = BNXT_TX_STATS_OFFSET(tx_pfc_ena_frames_pri0);
379+
for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++, rx_off++, tx_off++) {
380+
pfc->requests[i] = le64_to_cpu(*(stats + tx_off));
381+
pfc->indications[i] = le64_to_cpu(*(stats + rx_off));
382+
}
383+
372384
return 0;
373385
}
374386

drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,16 +107,9 @@ static int bnxt_set_coalesce(struct net_device *dev,
107107

108108
#define BNXT_NUM_STATS 21
109109

110-
#define BNXT_RX_STATS_OFFSET(counter) \
111-
(offsetof(struct rx_port_stats, counter) / 8)
112-
113110
#define BNXT_RX_STATS_ENTRY(counter) \
114111
{ BNXT_RX_STATS_OFFSET(counter), __stringify(counter) }
115112

116-
#define BNXT_TX_STATS_OFFSET(counter) \
117-
((offsetof(struct tx_port_stats, counter) + \
118-
sizeof(struct rx_port_stats) + 512) / 8)
119-
120113
#define BNXT_TX_STATS_ENTRY(counter) \
121114
{ BNXT_TX_STATS_OFFSET(counter), __stringify(counter) }
122115

@@ -150,6 +143,14 @@ static const struct {
150143
BNXT_RX_STATS_ENTRY(rx_tagged_frames),
151144
BNXT_RX_STATS_ENTRY(rx_double_tagged_frames),
152145
BNXT_RX_STATS_ENTRY(rx_good_frames),
146+
BNXT_RX_STATS_ENTRY(rx_pfc_ena_frames_pri0),
147+
BNXT_RX_STATS_ENTRY(rx_pfc_ena_frames_pri1),
148+
BNXT_RX_STATS_ENTRY(rx_pfc_ena_frames_pri2),
149+
BNXT_RX_STATS_ENTRY(rx_pfc_ena_frames_pri3),
150+
BNXT_RX_STATS_ENTRY(rx_pfc_ena_frames_pri4),
151+
BNXT_RX_STATS_ENTRY(rx_pfc_ena_frames_pri5),
152+
BNXT_RX_STATS_ENTRY(rx_pfc_ena_frames_pri6),
153+
BNXT_RX_STATS_ENTRY(rx_pfc_ena_frames_pri7),
153154
BNXT_RX_STATS_ENTRY(rx_undrsz_frames),
154155
BNXT_RX_STATS_ENTRY(rx_eee_lpi_events),
155156
BNXT_RX_STATS_ENTRY(rx_eee_lpi_duration),
@@ -179,6 +180,14 @@ static const struct {
179180
BNXT_TX_STATS_ENTRY(tx_fcs_err_frames),
180181
BNXT_TX_STATS_ENTRY(tx_err),
181182
BNXT_TX_STATS_ENTRY(tx_fifo_underruns),
183+
BNXT_TX_STATS_ENTRY(tx_pfc_ena_frames_pri0),
184+
BNXT_TX_STATS_ENTRY(tx_pfc_ena_frames_pri1),
185+
BNXT_TX_STATS_ENTRY(tx_pfc_ena_frames_pri2),
186+
BNXT_TX_STATS_ENTRY(tx_pfc_ena_frames_pri3),
187+
BNXT_TX_STATS_ENTRY(tx_pfc_ena_frames_pri4),
188+
BNXT_TX_STATS_ENTRY(tx_pfc_ena_frames_pri5),
189+
BNXT_TX_STATS_ENTRY(tx_pfc_ena_frames_pri6),
190+
BNXT_TX_STATS_ENTRY(tx_pfc_ena_frames_pri7),
182191
BNXT_TX_STATS_ENTRY(tx_eee_lpi_events),
183192
BNXT_TX_STATS_ENTRY(tx_eee_lpi_duration),
184193
BNXT_TX_STATS_ENTRY(tx_total_collisions),

0 commit comments

Comments
 (0)