Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[platform/kernel/linux-starfive.git] / drivers / net / ethernet / microsoft / mana / mana_ethtool.c
index e13f245..c530db7 100644 (file)
@@ -23,7 +23,7 @@ static int mana_get_sset_count(struct net_device *ndev, int stringset)
        if (stringset != ETH_SS_STATS)
                return -EINVAL;
 
-       return ARRAY_SIZE(mana_eth_stats) + num_queues * 6;
+       return ARRAY_SIZE(mana_eth_stats) + num_queues * 8;
 }
 
 static void mana_get_strings(struct net_device *ndev, u32 stringset, u8 *data)
@@ -50,6 +50,8 @@ static void mana_get_strings(struct net_device *ndev, u32 stringset, u8 *data)
                p += ETH_GSTRING_LEN;
                sprintf(p, "rx_%d_xdp_tx", i);
                p += ETH_GSTRING_LEN;
+               sprintf(p, "rx_%d_xdp_redirect", i);
+               p += ETH_GSTRING_LEN;
        }
 
        for (i = 0; i < num_queues; i++) {
@@ -57,6 +59,8 @@ static void mana_get_strings(struct net_device *ndev, u32 stringset, u8 *data)
                p += ETH_GSTRING_LEN;
                sprintf(p, "tx_%d_bytes", i);
                p += ETH_GSTRING_LEN;
+               sprintf(p, "tx_%d_xdp_xmit", i);
+               p += ETH_GSTRING_LEN;
        }
 }
 
@@ -70,6 +74,8 @@ static void mana_get_ethtool_stats(struct net_device *ndev,
        struct mana_stats_tx *tx_stats;
        unsigned int start;
        u64 packets, bytes;
+       u64 xdp_redirect;
+       u64 xdp_xmit;
        u64 xdp_drop;
        u64 xdp_tx;
        int q, i = 0;
@@ -89,12 +95,14 @@ static void mana_get_ethtool_stats(struct net_device *ndev,
                        bytes = rx_stats->bytes;
                        xdp_drop = rx_stats->xdp_drop;
                        xdp_tx = rx_stats->xdp_tx;
+                       xdp_redirect = rx_stats->xdp_redirect;
                } while (u64_stats_fetch_retry_irq(&rx_stats->syncp, start));
 
                data[i++] = packets;
                data[i++] = bytes;
                data[i++] = xdp_drop;
                data[i++] = xdp_tx;
+               data[i++] = xdp_redirect;
        }
 
        for (q = 0; q < num_queues; q++) {
@@ -104,10 +112,12 @@ static void mana_get_ethtool_stats(struct net_device *ndev,
                        start = u64_stats_fetch_begin_irq(&tx_stats->syncp);
                        packets = tx_stats->packets;
                        bytes = tx_stats->bytes;
+                       xdp_xmit = tx_stats->xdp_xmit;
                } while (u64_stats_fetch_retry_irq(&tx_stats->syncp, start));
 
                data[i++] = packets;
                data[i++] = bytes;
+               data[i++] = xdp_xmit;
        }
 }