]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
netdevsim: collect statistics at RX side
authorBreno Leitao <leitao@debian.org>
Wed, 18 Jun 2025 08:32:43 +0000 (01:32 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 19 Jun 2025 23:15:34 +0000 (16:15 -0700)
When the RX side of netdevsim was added, the RX statistics were missing,
making the driver unusable for GenerateTraffic() test framework.

This patch adds proper statistics tracking on RX side, complementing the
TX path.

Reviewed-by: Joe Damato <joe@dama.to>
Signed-off-by: Breno Leitao <leitao@debian.org>
Link: https://patch.msgid.link/20250618-netdevsim_stat-v4-2-19fe0d35e28e@debian.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/netdevsim/netdev.c

index 5010d8eefc8548b2afcbf8f2ebe6a9f80fba3c4c..3ea14f5c5e0cf1c7333005b8f6d38e5c6eeb8519 100644 (file)
@@ -331,16 +331,24 @@ static int nsim_get_iflink(const struct net_device *dev)
 
 static int nsim_rcv(struct nsim_rq *rq, int budget)
 {
+       struct net_device *dev = rq->napi.dev;
        struct sk_buff *skb;
-       int i;
+       unsigned int skblen;
+       int i, ret;
 
        for (i = 0; i < budget; i++) {
                if (skb_queue_empty(&rq->skb_queue))
                        break;
 
                skb = skb_dequeue(&rq->skb_queue);
+               /* skb might be discard at netif_receive_skb, save the len */
+               skblen = skb->len;
                skb_mark_napi_id(skb, &rq->napi);
-               netif_receive_skb(skb);
+               ret = netif_receive_skb(skb);
+               if (ret == NET_RX_SUCCESS)
+                       dev_dstats_rx_add(dev, skblen);
+               else
+                       dev_dstats_rx_dropped(dev);
        }
 
        return i;