Expose PFC statistics in xstats.

Signed-off-by: Vladimir Medvedkin <vladimir.medved...@intel.com>
---
 drivers/net/intel/ice/ice_ethdev.c | 63 ++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

diff --git a/drivers/net/intel/ice/ice_ethdev.c 
b/drivers/net/intel/ice/ice_ethdev.c
index b3be2e7c7e..7ac1c0872a 100644
--- a/drivers/net/intel/ice/ice_ethdev.c
+++ b/drivers/net/intel/ice/ice_ethdev.c
@@ -380,6 +380,46 @@ static const struct ice_xstats_name_off 
ice_hw_port_strings[] = {
        {"rx_xon_packets", offsetof(struct ice_hw_port_stats, link_xon_rx)},
        {"tx_xoff_packets", offsetof(struct ice_hw_port_stats, link_xoff_tx)},
        {"rx_xoff_packets", offsetof(struct ice_hw_port_stats, link_xoff_rx)},
+       {"priority_xon_rx_tc0", offsetof(struct ice_hw_port_stats, 
priority_xon_rx[0])},
+       {"priority_xon_rx_tc1", offsetof(struct ice_hw_port_stats, 
priority_xon_rx[1])},
+       {"priority_xon_rx_tc2", offsetof(struct ice_hw_port_stats, 
priority_xon_rx[2])},
+       {"priority_xon_rx_tc3", offsetof(struct ice_hw_port_stats, 
priority_xon_rx[3])},
+       {"priority_xon_rx_tc4", offsetof(struct ice_hw_port_stats, 
priority_xon_rx[4])},
+       {"priority_xon_rx_tc5", offsetof(struct ice_hw_port_stats, 
priority_xon_rx[5])},
+       {"priority_xon_rx_tc6", offsetof(struct ice_hw_port_stats, 
priority_xon_rx[6])},
+       {"priority_xon_rx_tc7", offsetof(struct ice_hw_port_stats, 
priority_xon_rx[7])},
+       {"priority_xoff_rx_tc0", offsetof(struct ice_hw_port_stats, 
priority_xoff_rx[0])},
+       {"priority_xoff_rx_tc1", offsetof(struct ice_hw_port_stats, 
priority_xoff_rx[1])},
+       {"priority_xoff_rx_tc2", offsetof(struct ice_hw_port_stats, 
priority_xoff_rx[2])},
+       {"priority_xoff_rx_tc3", offsetof(struct ice_hw_port_stats, 
priority_xoff_rx[3])},
+       {"priority_xoff_rx_tc4", offsetof(struct ice_hw_port_stats, 
priority_xoff_rx[4])},
+       {"priority_xoff_rx_tc5", offsetof(struct ice_hw_port_stats, 
priority_xoff_rx[5])},
+       {"priority_xoff_rx_tc6", offsetof(struct ice_hw_port_stats, 
priority_xoff_rx[6])},
+       {"priority_xoff_rx_tc7", offsetof(struct ice_hw_port_stats, 
priority_xoff_rx[7])},
+       {"priority_xon_tx_tc0", offsetof(struct ice_hw_port_stats, 
priority_xon_tx[0])},
+       {"priority_xon_tx_tc1", offsetof(struct ice_hw_port_stats, 
priority_xon_tx[1])},
+       {"priority_xon_tx_tc2", offsetof(struct ice_hw_port_stats, 
priority_xon_tx[2])},
+       {"priority_xon_tx_tc3", offsetof(struct ice_hw_port_stats, 
priority_xon_tx[3])},
+       {"priority_xon_tx_tc4", offsetof(struct ice_hw_port_stats, 
priority_xon_tx[4])},
+       {"priority_xon_tx_tc5", offsetof(struct ice_hw_port_stats, 
priority_xon_tx[5])},
+       {"priority_xon_tx_tc6", offsetof(struct ice_hw_port_stats, 
priority_xon_tx[6])},
+       {"priority_xon_tx_tc7", offsetof(struct ice_hw_port_stats, 
priority_xon_tx[7])},
+       {"priority_xoff_tx_tc0", offsetof(struct ice_hw_port_stats, 
priority_xoff_tx[0])},
+       {"priority_xoff_tx_tc1", offsetof(struct ice_hw_port_stats, 
priority_xoff_tx[1])},
+       {"priority_xoff_tx_tc2", offsetof(struct ice_hw_port_stats, 
priority_xoff_tx[2])},
+       {"priority_xoff_tx_tc3", offsetof(struct ice_hw_port_stats, 
priority_xoff_tx[3])},
+       {"priority_xoff_tx_tc4", offsetof(struct ice_hw_port_stats, 
priority_xoff_tx[4])},
+       {"priority_xoff_tx_tc5", offsetof(struct ice_hw_port_stats, 
priority_xoff_tx[5])},
+       {"priority_xoff_tx_tc6", offsetof(struct ice_hw_port_stats, 
priority_xoff_tx[6])},
+       {"priority_xoff_tx_tc7", offsetof(struct ice_hw_port_stats, 
priority_xoff_tx[7])},
+       {"priority_xon_2_xoff_tc0", offsetof(struct ice_hw_port_stats, 
priority_xon_2_xoff[0])},
+       {"priority_xon_2_xoff_tc1", offsetof(struct ice_hw_port_stats, 
priority_xon_2_xoff[0])},
+       {"priority_xon_2_xoff_tc2", offsetof(struct ice_hw_port_stats, 
priority_xon_2_xoff[0])},
+       {"priority_xon_2_xoff_tc3", offsetof(struct ice_hw_port_stats, 
priority_xon_2_xoff[0])},
+       {"priority_xon_2_xoff_tc4", offsetof(struct ice_hw_port_stats, 
priority_xon_2_xoff[0])},
+       {"priority_xon_2_xoff_tc5", offsetof(struct ice_hw_port_stats, 
priority_xon_2_xoff[0])},
+       {"priority_xon_2_xoff_tc6", offsetof(struct ice_hw_port_stats, 
priority_xon_2_xoff[0])},
+       {"priority_xon_2_xoff_tc7", offsetof(struct ice_hw_port_stats, 
priority_xon_2_xoff[0])},
        {"rx_size_64_packets", offsetof(struct ice_hw_port_stats, rx_size_64)},
        {"rx_size_65_to_127_packets", offsetof(struct ice_hw_port_stats,
                rx_size_127)},
@@ -6669,6 +6709,29 @@ ice_read_stats_registers(struct ice_pf *pf, struct 
ice_hw *hw)
        /* GLPRT_MSPDC not supported */
        /* GLPRT_XEC not supported */
 
+       for (int i = 0; i < ICE_MAX_TRAFFIC_CLASS; i++) {
+               ice_stat_update_40(hw, GLPRT_PXONRXC_H(hw->port_info->lport, i),
+                          GLPRT_PXONRXC(hw->port_info->lport, i),
+                          pf->offset_loaded, &os->priority_xon_rx[i],
+                          &ns->priority_xon_rx[i]);
+               ice_stat_update_40(hw, GLPRT_PXONTXC_H(hw->port_info->lport, i),
+                          GLPRT_PXONTXC(hw->port_info->lport, i),
+                          pf->offset_loaded, &os->priority_xon_tx[i],
+                          &ns->priority_xon_tx[i]);
+               ice_stat_update_40(hw, GLPRT_PXOFFRXC_H(hw->port_info->lport, 
i),
+                          GLPRT_PXOFFRXC(hw->port_info->lport, i),
+                          pf->offset_loaded, &os->priority_xoff_rx[i],
+                          &ns->priority_xoff_rx[i]);
+               ice_stat_update_40(hw, GLPRT_PXOFFTXC_H(hw->port_info->lport, 
i),
+                          GLPRT_PXOFFTXC(hw->port_info->lport, i),
+                          pf->offset_loaded, &os->priority_xoff_tx[i],
+                          &ns->priority_xoff_tx[i]);
+               ice_stat_update_40(hw, 
GLPRT_RXON2OFFCNT_H(hw->port_info->lport, i),
+                          GLPRT_RXON2OFFCNT(hw->port_info->lport, i),
+                          pf->offset_loaded, &os->priority_xon_2_xoff[i],
+                          &ns->priority_xon_2_xoff[i]);
+       }
+
        pf->offset_loaded = true;
 
        if (pf->main_vsi)
-- 
2.43.0

Reply via email to