summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/intel/i40e/i40e_main.c
diff options
context:
space:
mode:
authorJoe Damato <jdamato@fastly.com>2021-12-17 11:35:18 -0800
committerTony Nguyen <anthony.l.nguyen@intel.com>2022-02-08 08:21:52 -0800
commitcb963b989755ed49f002b7b7c8c7a9c744e21bb0 (patch)
treecbe8a1d8b09ee7c09fcf066cc8a1f4dfdee918f3 /drivers/net/ethernet/intel/i40e/i40e_main.c
parent453f8305483851c20a41b66719d5acdc945541ca (diff)
i40e: Add a stat for tracking pages waived
In some cases, pages can not be reused because they are not associated with the correct NUMA zone. Knowing how often pages are waived helps users to understand the interaction between the driver's memory usage and their system. Pass rx_stats through to i40e_can_reuse_rx_page to allow tracking when pages are waived. The page waive count is accessible via ethtool. Signed-off-by: Joe Damato <jdamato@fastly.com> Tested-by: Dave Switzer <david.switzer@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/i40e/i40e_main.c')
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_main.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 9d62f5875c305..385b241abf062 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -773,7 +773,7 @@ void i40e_update_veb_stats(struct i40e_veb *veb)
**/
static void i40e_update_vsi_stats(struct i40e_vsi *vsi)
{
- u64 rx_page, rx_buf, rx_reuse, rx_alloc;
+ u64 rx_page, rx_buf, rx_reuse, rx_alloc, rx_waive;
struct i40e_pf *pf = vsi->back;
struct rtnl_link_stats64 *ons;
struct rtnl_link_stats64 *ns; /* netdev stats */
@@ -808,6 +808,7 @@ static void i40e_update_vsi_stats(struct i40e_vsi *vsi)
rx_buf = 0;
rx_reuse = 0;
rx_alloc = 0;
+ rx_waive = 0;
rcu_read_lock();
for (q = 0; q < vsi->num_queue_pairs; q++) {
/* locate Tx ring */
@@ -843,6 +844,7 @@ static void i40e_update_vsi_stats(struct i40e_vsi *vsi)
rx_page += p->rx_stats.alloc_page_failed;
rx_reuse += p->rx_stats.page_reuse_count;
rx_alloc += p->rx_stats.page_alloc_count;
+ rx_waive += p->rx_stats.page_waive_count;
if (i40e_enabled_xdp_vsi(vsi)) {
/* locate XDP ring */
@@ -872,6 +874,7 @@ static void i40e_update_vsi_stats(struct i40e_vsi *vsi)
vsi->rx_buf_failed = rx_buf;
vsi->rx_page_reuse = rx_reuse;
vsi->rx_page_alloc = rx_alloc;
+ vsi->rx_page_waive = rx_waive;
ns->rx_packets = rx_p;
ns->rx_bytes = rx_b;