mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-02 07:00:42 -04:00
eth: fbnic: fix saving stats from XDP_TX rings on close
When rings are freed - stats get added to the device level stat
structs. Save the stats from the XDP_TX ring just as Tx stats.
Previously they would be saved to Rx and Tx stats. So we'd not
see XDP_TX packets as Rx during runtime but after an down/up cycle
the packets would appear in stats.
Correct the helper used by ethtool code which does a runtime
config switch.
Reviewed-by: Simon Horman <horms@kernel.org>
Fixes: 5213ff0863 ("eth: fbnic: Collect packet statistics for XDP")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://patch.msgid.link/20251007232653.2099376-4-kuba@kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
613e9e8dcb
commit
858b78b24a
@@ -185,7 +185,7 @@ static void fbnic_aggregate_vector_counters(struct fbnic_net *fbn,
|
||||
|
||||
for (i = 0; i < nv->txt_count; i++) {
|
||||
fbnic_aggregate_ring_tx_counters(fbn, &nv->qt[i].sub0);
|
||||
fbnic_aggregate_ring_tx_counters(fbn, &nv->qt[i].sub1);
|
||||
fbnic_aggregate_ring_xdp_counters(fbn, &nv->qt[i].sub1);
|
||||
fbnic_aggregate_ring_tx_counters(fbn, &nv->qt[i].cmpl);
|
||||
}
|
||||
|
||||
|
||||
@@ -1433,8 +1433,8 @@ void fbnic_aggregate_ring_tx_counters(struct fbnic_net *fbn,
|
||||
BUILD_BUG_ON(sizeof(fbn->tx_stats.twq) / 8 != 6);
|
||||
}
|
||||
|
||||
static void fbnic_aggregate_ring_xdp_counters(struct fbnic_net *fbn,
|
||||
struct fbnic_ring *xdpr)
|
||||
void fbnic_aggregate_ring_xdp_counters(struct fbnic_net *fbn,
|
||||
struct fbnic_ring *xdpr)
|
||||
{
|
||||
struct fbnic_queue_stats *stats = &xdpr->stats;
|
||||
|
||||
@@ -1442,9 +1442,7 @@ static void fbnic_aggregate_ring_xdp_counters(struct fbnic_net *fbn,
|
||||
return;
|
||||
|
||||
/* Capture stats from queues before dissasociating them */
|
||||
fbn->rx_stats.bytes += stats->bytes;
|
||||
fbn->rx_stats.packets += stats->packets;
|
||||
fbn->rx_stats.dropped += stats->dropped;
|
||||
fbn->tx_stats.dropped += stats->dropped;
|
||||
fbn->tx_stats.bytes += stats->bytes;
|
||||
fbn->tx_stats.packets += stats->packets;
|
||||
}
|
||||
|
||||
@@ -167,6 +167,8 @@ void fbnic_aggregate_ring_rx_counters(struct fbnic_net *fbn,
|
||||
struct fbnic_ring *rxr);
|
||||
void fbnic_aggregate_ring_tx_counters(struct fbnic_net *fbn,
|
||||
struct fbnic_ring *txr);
|
||||
void fbnic_aggregate_ring_xdp_counters(struct fbnic_net *fbn,
|
||||
struct fbnic_ring *xdpr);
|
||||
|
||||
int fbnic_alloc_napi_vectors(struct fbnic_net *fbn);
|
||||
void fbnic_free_napi_vectors(struct fbnic_net *fbn);
|
||||
|
||||
Reference in New Issue
Block a user