There are many registeres in x550 support stats of
flow director filters, for example the number of added
or removed rules and the number match or miss match packet
count for this for port, all these important information
can be read form registeres in x550 and display with command
xstats.

Signed-off-by: Wei Zhao <wei.zh...@intel.com>
---

v2:
-add mac type check for this register read.

---
 drivers/net/ixgbe/ixgbe_ethdev.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 87d2ad0..a3ddfe2 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -3120,9 +3120,18 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
        }
 
        /* Flow Director Stats registers */
-       hw_stats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH);
-       hw_stats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS);
-
+       if (hw->mac.type != ixgbe_mac_82598EB) {
+               hw_stats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH);
+               hw_stats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS);
+               hw_stats->fdirustat_add += IXGBE_READ_REG(hw,
+                                       IXGBE_FDIRUSTAT) & 0xFFFF;
+               hw_stats->fdirustat_remove += (IXGBE_READ_REG(hw,
+                                       IXGBE_FDIRUSTAT) >> 16) & 0xFFFF;
+               hw_stats->fdirfstat_fadd += IXGBE_READ_REG(hw,
+                                       IXGBE_FDIRFSTAT) & 0xFFFF;
+               hw_stats->fdirfstat_fremove += (IXGBE_READ_REG(hw,
+                                       IXGBE_FDIRFSTAT) >> 16) & 0xFFFF;
+       }
        /* MACsec Stats registers */
        macsec_stats->out_pkts_untagged += IXGBE_READ_REG(hw, IXGBE_LSECTXUT);
        macsec_stats->out_pkts_encrypted +=
-- 
2.7.5

Reply via email to