Skip to content

Commit 8a9f82f

Browse files
rogerqkuba-moo
authored andcommitted
net: ethernet: ti: am65-cpsw: fix RX & TX statistics for XDP_TX case
For successful XDP_TX and XDP_REDIRECT cases, the packet was received successfully so update RX statistics. Use original received packet length for that. TX packets statistics are incremented on TX completion so don't update it while TX queueing. If xdp_convert_buff_to_frame() fails, increment tx_dropped. Signed-off-by: Roger Quadros <[email protected]> Fixes: 8acacc4 ("net: ethernet: ti: am65-cpsw: Add minimal XDP support") Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 5db8432 commit 8a9f82f

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

drivers/net/ethernet/ti/am65-cpsw-nuss.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1170,9 +1170,11 @@ static int am65_cpsw_run_xdp(struct am65_cpsw_rx_flow *flow,
11701170
struct xdp_frame *xdpf;
11711171
struct bpf_prog *prog;
11721172
struct page *page;
1173+
int pkt_len;
11731174
u32 act;
11741175
int err;
11751176

1177+
pkt_len = *len;
11761178
prog = READ_ONCE(port->xdp_prog);
11771179
if (!prog)
11781180
return AM65_CPSW_XDP_PASS;
@@ -1190,8 +1192,10 @@ static int am65_cpsw_run_xdp(struct am65_cpsw_rx_flow *flow,
11901192
netif_txq = netdev_get_tx_queue(ndev, tx_chn->id);
11911193

11921194
xdpf = xdp_convert_buff_to_frame(xdp);
1193-
if (unlikely(!xdpf))
1195+
if (unlikely(!xdpf)) {
1196+
ndev->stats.tx_dropped++;
11941197
goto drop;
1198+
}
11951199

11961200
__netif_tx_lock(netif_txq, cpu);
11971201
err = am65_cpsw_xdp_tx_frame(ndev, tx_chn, xdpf,
@@ -1200,14 +1204,14 @@ static int am65_cpsw_run_xdp(struct am65_cpsw_rx_flow *flow,
12001204
if (err)
12011205
goto drop;
12021206

1203-
dev_sw_netstats_tx_add(ndev, 1, *len);
1207+
dev_sw_netstats_rx_add(ndev, pkt_len);
12041208
ret = AM65_CPSW_XDP_CONSUMED;
12051209
goto out;
12061210
case XDP_REDIRECT:
12071211
if (unlikely(xdp_do_redirect(ndev, xdp, prog)))
12081212
goto drop;
12091213

1210-
dev_sw_netstats_rx_add(ndev, *len);
1214+
dev_sw_netstats_rx_add(ndev, pkt_len);
12111215
ret = AM65_CPSW_XDP_REDIRECT;
12121216
goto out;
12131217
default:

0 commit comments

Comments
 (0)