From patchwork Sat Aug 19 04:40:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 13358503 X-Patchwork-Delegate: kuba@kernel.org Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3E6D81116 for ; Sat, 19 Aug 2023 04:41:04 +0000 (UTC) Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D2A7F3A8D for ; Fri, 18 Aug 2023 21:41:03 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-589c6dc8670so23748557b3.0 for ; Fri, 18 Aug 2023 21:41:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1692420063; x=1693024863; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=fSxmFrETHZdMSsZVnmVqMvzUJ3x3I7xJZUq6yH0zcxk=; b=P8RQiGZTbVibQQ099gxdPh1MMWKvlWijdNBq+uhYgc0V1U1dUhMvVOet7C7otVWybv pN/3awBT7gK0FwSyjop9PtRs0rgH9EYLG9qAJt4TfTBSt/JGP8rkdqNGv10VK0W+PT64 JoM9Ladnxjtgkhb1nsLqlkeTY8X9s/GMKmTV9sjgnHAtvATjVrhbB4tu+AStyEfOI/a4 j6lGfA8lU+Hq71ZRpXm7qSUVP2UzhPluTYkJ1UCJ9/7uTFKLgzuCIVyezlpE5p99GeTb rEuqkVFwTAndzjSkil8pT9I5ctNeAH34kwQnRpyMFKEBkWzzYu7MVn+QcSCYLQ/o/oTG NQeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692420063; x=1693024863; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=fSxmFrETHZdMSsZVnmVqMvzUJ3x3I7xJZUq6yH0zcxk=; b=dKMjTk/FD/k84Rt+F2fNqidkAFn5dPhYtGsBkYIkbGVhH2GUcX4QhB2iAxug3iaDKz JtvKxvrJkOhXVufgwT5ILs/KVWeSdmbbjQN+yt2s4XjDDGIq09uA4ei9VLLvRY6WPA/S NvlSMWz2u+xsIpxkPV/UH8FaxnUsb6j2bQOV4jQ0y3Q5q7o4/MYrnpneFF1uv6VSsYoN yDqmRiN6R+7gC+KEGeaHVaZCP2eyzwvYf0pnK63iNEJXUgW60TAgQqPvMubiuzqctbVL S43+DochP4kql90dyWewxiJMoqk5B3y2dpdqDTTH9s3WV4v2XgebS8QiYqiGmH5nZGmC 2P8A== X-Gm-Message-State: AOJu0YylLCIC+ZYyojEujN6GVODFKyJtyXn683glFIIDEeW2W0GyZpCr q4fIo2+43h+EiBu1hT9MKRoO18J8tqxCvA== X-Google-Smtp-Source: AGHT+IHGA04kTbuZkJzQQDJnphILlspczQxaF4vqESXPuSm1d4CJ8TurMZC1jp1ULS8GIbuD1u+0adqASFjM/g== X-Received: from edumazet1.c.googlers.com ([fda3:e722:ac3:cc00:2b:7d90:c0a8:395a]) (user=edumazet job=sendgmr) by 2002:a81:ae56:0:b0:58f:b749:a50b with SMTP id g22-20020a81ae56000000b0058fb749a50bmr5666ywk.4.1692420063132; Fri, 18 Aug 2023 21:41:03 -0700 (PDT) Date: Sat, 19 Aug 2023 04:40:57 +0000 In-Reply-To: <20230819044059.833749-1-edumazet@google.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20230819044059.833749-1-edumazet@google.com> X-Mailer: git-send-email 2.42.0.rc1.204.g551eb34607-goog Message-ID: <20230819044059.833749-2-edumazet@google.com> Subject: [PATCH net-next 1/3] net: add DEV_STATS_READ() helper From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski , Paolo Abeni Cc: "Michael S . Tsirkin" , Jason Wang , Xuan Zhuo , netdev@vger.kernel.org, eric.dumazet@gmail.com, Eric Dumazet X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net X-Patchwork-Delegate: kuba@kernel.org Companion of DEV_STATS_INC() & DEV_STATS_ADD(). This is going to be used in the series. Use it in macsec_get_stats64(). Signed-off-by: Eric Dumazet --- drivers/net/macsec.c | 6 +++--- include/linux/netdevice.h | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index ae60817ec5c2db004768448cd57fa91ad61966d1..ff5533e96bbb1705857565f9eab400e93aa39af9 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -3656,9 +3656,9 @@ static void macsec_get_stats64(struct net_device *dev, dev_fetch_sw_netstats(s, dev->tstats); - s->rx_dropped = atomic_long_read(&dev->stats.__rx_dropped); - s->tx_dropped = atomic_long_read(&dev->stats.__tx_dropped); - s->rx_errors = atomic_long_read(&dev->stats.__rx_errors); + s->rx_dropped = DEV_STATS_READ(dev, rx_dropped); + s->tx_dropped = DEV_STATS_READ(dev, tx_dropped); + s->rx_errors = DEV_STATS_READ(dev, rx_errors); } static int macsec_get_iflink(const struct net_device *dev) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 0896aaa91dd7bfe387cb67c43d49d5632d4b655a..b646609f09c051fe7c1da80a438701256241ccde 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -5214,5 +5214,6 @@ extern struct net_device *blackhole_netdev; #define DEV_STATS_INC(DEV, FIELD) atomic_long_inc(&(DEV)->stats.__##FIELD) #define DEV_STATS_ADD(DEV, FIELD, VAL) \ atomic_long_add((VAL), &(DEV)->stats.__##FIELD) +#define DEV_STATS_READ(DEV, FIELD) atomic_long_read(&(DEV)->stats.__##FIELD) #endif /* _LINUX_NETDEVICE_H */ From patchwork Sat Aug 19 04:40:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 13358504 X-Patchwork-Delegate: kuba@kernel.org Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 116161858 for ; Sat, 19 Aug 2023 04:41:07 +0000 (UTC) Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CADB1A7 for ; Fri, 18 Aug 2023 21:41:05 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-d73db0a7e03so2242096276.2 for ; Fri, 18 Aug 2023 21:41:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1692420065; x=1693024865; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=6Yzqiom9eaEF1INfhowiJaKJJqohj5QTaU6lO3aCBxU=; b=GBbSqTBLoecv/xjNFmP1jqbTjUR9ci2KHs6HJp/Pa6N+dUVszHdztvHKlncOi1aJUZ aHsWzHTsUlhQNy/ysdM2cQlCXF2IUkTw3BKgNhEXdDnIFfU5WcBpirDgC8X4vqm1DW/3 XdMeEF/aJAMD4g9A97WTutqztlbfUdWJF8uI3yG/zcGQLLhHlL//LSFLb0S+ETyxYrOK yZowM2XiS+6nlR0oazxBgM6dTC0sG9RLBZDjCCpfUS2BbnRYa5PMJ7nQ4MOkigtvpKu2 GI/xvp/ETGmJz1oKFrVwMElKqOmS5q5pSJbzk9femdfeKWDmNA83gUGybErWcGkA8T+n kGMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692420065; x=1693024865; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6Yzqiom9eaEF1INfhowiJaKJJqohj5QTaU6lO3aCBxU=; b=dWD6Xx+NB7vSTieOHma/m+Xn/U5IGCvTyBFbHhM3+EdTcI5L5rpv/h5YcrDhJwxYEU Qv7l9doqEdEeQYKD3GYvYTFezPUpgGpcGLOQTJsvvPqdCN91nu3lb8C85G/juxIQNJaP DZB79Nbf0kqm8Wb4avVFAzpjuGvirBsUokj95pd85v3wdkxsbIrLbVgQfPLvuZtFBdYl QnHse+lrjY+i5mu803ov86+xtT7R6rlpmwlLHQyHrdJII1nNYOEFa/feRzDuoWV5ysL2 JDGO8Ugy0jUA89fs3rSg1XLNIPYLeAnm+ljo+XuQ3BzUI7L00/oBdEcNDGJ3alHwMW18 Fm2w== X-Gm-Message-State: AOJu0YywhdoVlf+FIgPfQA4Q+I9ifW5WZ5fzeZ4YySSpHXEEP/pi1PoJ voFoPNIfw2Pwck8ZZmp5wHiwk395AYjbkw== X-Google-Smtp-Source: AGHT+IG/ITKm2AZrrrMcVDbiyN7rrueQ8HCzG3OwBp78CvAaOlG16IMe6JztZlxRgw6dpabegRU29TsHLLJb3g== X-Received: from edumazet1.c.googlers.com ([fda3:e722:ac3:cc00:2b:7d90:c0a8:395a]) (user=edumazet job=sendgmr) by 2002:a25:add5:0:b0:d46:45a1:b775 with SMTP id d21-20020a25add5000000b00d4645a1b775mr9583ybe.3.1692420064934; Fri, 18 Aug 2023 21:41:04 -0700 (PDT) Date: Sat, 19 Aug 2023 04:40:58 +0000 In-Reply-To: <20230819044059.833749-1-edumazet@google.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20230819044059.833749-1-edumazet@google.com> X-Mailer: git-send-email 2.42.0.rc1.204.g551eb34607-goog Message-ID: <20230819044059.833749-3-edumazet@google.com> Subject: [PATCH net-next 2/3] virtio_net: avoid data-races on dev->stats fields From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski , Paolo Abeni Cc: "Michael S . Tsirkin" , Jason Wang , Xuan Zhuo , netdev@vger.kernel.org, eric.dumazet@gmail.com, Eric Dumazet , syzbot X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net X-Patchwork-Delegate: kuba@kernel.org Use DEV_STATS_INC() and DEV_STATS_READ() which provide atomicity on paths that can be used concurrently. Reported-by: syzbot Signed-off-by: Eric Dumazet Cc: "Michael S. Tsirkin" Cc: Jason Wang Cc: Xuan Zhuo Reviewed-by: Xuan Zhuo --- drivers/net/virtio_net.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 494242bb9cf60cfd54381f12eef338711a558483..d0570de1b0b47ee585ff8945a438e7cd2e1a7de5 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -1085,7 +1085,7 @@ static struct sk_buff *receive_small(struct net_device *dev, if (unlikely(len > GOOD_PACKET_LEN)) { pr_debug("%s: rx error: len %u exceeds max size %d\n", dev->name, len, GOOD_PACKET_LEN); - dev->stats.rx_length_errors++; + DEV_STATS_INC(dev, rx_length_errors); goto err; } @@ -1150,7 +1150,7 @@ static void mergeable_buf_free(struct receive_queue *rq, int num_buf, if (unlikely(!buf)) { pr_debug("%s: rx error: %d buffers missing\n", dev->name, num_buf); - dev->stats.rx_length_errors++; + DEV_STATS_INC(dev, rx_length_errors); break; } stats->bytes += len; @@ -1259,7 +1259,7 @@ static int virtnet_build_xdp_buff_mrg(struct net_device *dev, pr_debug("%s: rx error: %d buffers out of %d missing\n", dev->name, *num_buf, virtio16_to_cpu(vi->vdev, hdr->num_buffers)); - dev->stats.rx_length_errors++; + DEV_STATS_INC(dev, rx_length_errors); goto err; } @@ -1278,7 +1278,7 @@ static int virtnet_build_xdp_buff_mrg(struct net_device *dev, put_page(page); pr_debug("%s: rx error: len %u exceeds truesize %lu\n", dev->name, len, (unsigned long)(truesize - room)); - dev->stats.rx_length_errors++; + DEV_STATS_INC(dev, rx_length_errors); goto err; } @@ -1457,7 +1457,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev, if (unlikely(len > truesize - room)) { pr_debug("%s: rx error: len %u exceeds truesize %lu\n", dev->name, len, (unsigned long)(truesize - room)); - dev->stats.rx_length_errors++; + DEV_STATS_INC(dev, rx_length_errors); goto err_skb; } @@ -1489,7 +1489,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev, dev->name, num_buf, virtio16_to_cpu(vi->vdev, hdr->num_buffers)); - dev->stats.rx_length_errors++; + DEV_STATS_INC(dev, rx_length_errors); goto err_buf; } @@ -1503,7 +1503,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev, if (unlikely(len > truesize - room)) { pr_debug("%s: rx error: len %u exceeds truesize %lu\n", dev->name, len, (unsigned long)(truesize - room)); - dev->stats.rx_length_errors++; + DEV_STATS_INC(dev, rx_length_errors); goto err_skb; } @@ -1590,7 +1590,7 @@ static void receive_buf(struct virtnet_info *vi, struct receive_queue *rq, if (unlikely(len < vi->hdr_len + ETH_HLEN)) { pr_debug("%s: short packet %i\n", dev->name, len); - dev->stats.rx_length_errors++; + DEV_STATS_INC(dev, rx_length_errors); virtnet_rq_free_unused_buf(rq->vq, buf); return; } @@ -1630,7 +1630,7 @@ static void receive_buf(struct virtnet_info *vi, struct receive_queue *rq, return; frame_err: - dev->stats.rx_frame_errors++; + DEV_STATS_INC(dev, rx_frame_errors); dev_kfree_skb(skb); } @@ -2170,12 +2170,12 @@ static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev) /* This should not happen! */ if (unlikely(err)) { - dev->stats.tx_fifo_errors++; + DEV_STATS_INC(dev, tx_fifo_errors); if (net_ratelimit()) dev_warn(&dev->dev, "Unexpected TXQ (%d) queue failure: %d\n", qnum, err); - dev->stats.tx_dropped++; + DEV_STATS_INC(dev, tx_dropped); dev_kfree_skb_any(skb); return NETDEV_TX_OK; } @@ -2394,10 +2394,10 @@ static void virtnet_stats(struct net_device *dev, tot->tx_errors += terrors; } - tot->tx_dropped = dev->stats.tx_dropped; - tot->tx_fifo_errors = dev->stats.tx_fifo_errors; - tot->rx_length_errors = dev->stats.rx_length_errors; - tot->rx_frame_errors = dev->stats.rx_frame_errors; + tot->tx_dropped = DEV_STATS_READ(dev, tx_dropped); + tot->tx_fifo_errors = DEV_STATS_READ(dev, tx_fifo_errors); + tot->rx_length_errors = DEV_STATS_READ(dev, rx_length_errors); + tot->rx_frame_errors = DEV_STATS_READ(dev, rx_frame_errors); } static void virtnet_ack_link_announce(struct virtnet_info *vi) From patchwork Sat Aug 19 04:40:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 13358505 X-Patchwork-Delegate: kuba@kernel.org Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 732851C3A for ; Sat, 19 Aug 2023 04:41:09 +0000 (UTC) Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 17B793A8D for ; Fri, 18 Aug 2023 21:41:08 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-58fbfcb8d90so152217b3.1 for ; Fri, 18 Aug 2023 21:41:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1692420067; x=1693024867; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=ET2lSiBST0i4cjsbmnEL0JJvkPhDEBJ5nZ7MevLc9ak=; b=nhHeqzeE2oUZSc2DjLKHEgYSuWAM6GERuMyBopg7wslXedCG3Uv8pgWsGwlBHOy4ew Am9JhgM/5rGUL0nW/J/72lAw9rkebCfBcV1WscXvGBohx8UXNRlPr0IyOqcO/8aGvTNH mBJFC8IIXwzBNndOc3T/SFLHYQcwio9B0E0pA/M/HiwesjNFlQVONURGU74tl/sFAMDR p6MNWDqPScGWb/fbedR+VOdAICRwbohCaiaTy34sJM1bd5hn1C7LH/Ig2a0qiL18rwqy tbTbhjDyR3IRYnTUGdLtYdKiVB1GT9USDLblZwyr8xjNrKW++WiJdWgB/FokUnMXu+J+ E8xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692420067; x=1693024867; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ET2lSiBST0i4cjsbmnEL0JJvkPhDEBJ5nZ7MevLc9ak=; b=WDWwY3pcJjFp/8DMsetPZfJaJ5qmCOX95q3x+pzNLRkdt2wArV6it6EqE3bY10ToZ/ n/7esYVNUZcbVmD/YjBqfmgChtDiVn6O607J4AO4Rrn4ho0I1zKqM9dausuQTyU/dKl3 L1/FCZ589bxuSCXDPOxUY4YpPwSj7F4UMBlaMBzDfvy01nEjVdkRBsL7OZK8QPU7rA1Q f5srsfUoUgrO+VSL9DcsQbPgs4lptOVvif/1uaU9Gbs2/KoRQa1NSHbPdLYuzBdXD9xH 16ZQq6bLlcqxlVXI8tiejNmiHP74iafQx5WSyEHR+M6DHIyxEc6+xDSh0oWgywEEjbkr QcdA== X-Gm-Message-State: AOJu0YxeYlLAxxC+00cAzY0yvQBYXTfzj1VgyGsk4zUO4wra/pSY7gJ4 9F0dkqKkiIy6NVXWgA+/kymnG2GJf54gBg== X-Google-Smtp-Source: AGHT+IGjCmI70mt4EGbGigYAb9zWc4UdOCNGQKVtaZBHiRG/Fk51c9A5mZrD5gzB8zTgAPHnD8phYedYqROA9A== X-Received: from edumazet1.c.googlers.com ([fda3:e722:ac3:cc00:2b:7d90:c0a8:395a]) (user=edumazet job=sendgmr) by 2002:a81:a845:0:b0:58c:b5a4:8e1f with SMTP id f66-20020a81a845000000b0058cb5a48e1fmr12629ywh.3.1692420067024; Fri, 18 Aug 2023 21:41:07 -0700 (PDT) Date: Sat, 19 Aug 2023 04:40:59 +0000 In-Reply-To: <20230819044059.833749-1-edumazet@google.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20230819044059.833749-1-edumazet@google.com> X-Mailer: git-send-email 2.42.0.rc1.204.g551eb34607-goog Message-ID: <20230819044059.833749-4-edumazet@google.com> Subject: [PATCH net-next 3/3] net: l2tp_eth: use generic dev->stats fields From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski , Paolo Abeni Cc: "Michael S . Tsirkin" , Jason Wang , Xuan Zhuo , netdev@vger.kernel.org, eric.dumazet@gmail.com, Eric Dumazet X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net X-Patchwork-Delegate: kuba@kernel.org Core networking has opt-in atomic variant of dev->stats, simply use DEV_STATS_INC(), DEV_STATS_ADD() and DEV_STATS_READ(). Signed-off-by: Eric Dumazet --- net/l2tp/l2tp_eth.c | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c index f2ae03c404736d826fd7dc327b1567eac1c8651a..897f6d0283d839ee210df8c31e1b9e60bc3ff6e6 100644 --- a/net/l2tp/l2tp_eth.c +++ b/net/l2tp/l2tp_eth.c @@ -37,12 +37,6 @@ /* via netdev_priv() */ struct l2tp_eth { struct l2tp_session *session; - atomic_long_t tx_bytes; - atomic_long_t tx_packets; - atomic_long_t tx_dropped; - atomic_long_t rx_bytes; - atomic_long_t rx_packets; - atomic_long_t rx_errors; }; /* via l2tp_session_priv() */ @@ -79,10 +73,10 @@ static netdev_tx_t l2tp_eth_dev_xmit(struct sk_buff *skb, struct net_device *dev int ret = l2tp_xmit_skb(session, skb); if (likely(ret == NET_XMIT_SUCCESS)) { - atomic_long_add(len, &priv->tx_bytes); - atomic_long_inc(&priv->tx_packets); + DEV_STATS_ADD(dev, tx_bytes, len); + DEV_STATS_INC(dev, tx_packets); } else { - atomic_long_inc(&priv->tx_dropped); + DEV_STATS_INC(dev, tx_dropped); } return NETDEV_TX_OK; } @@ -90,14 +84,12 @@ static netdev_tx_t l2tp_eth_dev_xmit(struct sk_buff *skb, struct net_device *dev static void l2tp_eth_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) { - struct l2tp_eth *priv = netdev_priv(dev); - - stats->tx_bytes = (unsigned long)atomic_long_read(&priv->tx_bytes); - stats->tx_packets = (unsigned long)atomic_long_read(&priv->tx_packets); - stats->tx_dropped = (unsigned long)atomic_long_read(&priv->tx_dropped); - stats->rx_bytes = (unsigned long)atomic_long_read(&priv->rx_bytes); - stats->rx_packets = (unsigned long)atomic_long_read(&priv->rx_packets); - stats->rx_errors = (unsigned long)atomic_long_read(&priv->rx_errors); + stats->tx_bytes = DEV_STATS_READ(dev, tx_bytes); + stats->tx_packets = DEV_STATS_READ(dev, tx_packets); + stats->tx_dropped = DEV_STATS_READ(dev, tx_dropped); + stats->rx_bytes = DEV_STATS_READ(dev, rx_bytes); + stats->rx_packets = DEV_STATS_READ(dev, rx_packets); + stats->rx_errors = DEV_STATS_READ(dev, rx_errors); } static const struct net_device_ops l2tp_eth_netdev_ops = { @@ -146,10 +138,10 @@ static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb, priv = netdev_priv(dev); if (dev_forward_skb(dev, skb) == NET_RX_SUCCESS) { - atomic_long_inc(&priv->rx_packets); - atomic_long_add(data_len, &priv->rx_bytes); + DEV_STATS_INC(dev, rx_packets); + DEV_STATS_ADD(dev, rx_bytes, data_len); } else { - atomic_long_inc(&priv->rx_errors); + DEV_STATS_INC(dev, rx_errors); } rcu_read_unlock();