From: Dmitry Sinyavin <sinyavin@gmail.com>
To: Stephan Gerhold <stephan@gerhold.net>
Cc: Stephan Gerhold <stephan.gerhold@linaro.org>,
Loic Poulain <loic.poulain@oss.qualcomm.com>,
Sergey Ryazanov <ryazanov.s.a@gmail.com>,
Johannes Berg <johannes@sipsolutions.net>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH net v3] net: wwan: qcom_bam_dmux: account network packets
Date: Thu, 3 Sep 2026 10:27:15 +0200 [thread overview]
Message-ID: <c9cc4753-dcb5-4983-9cff-45135d8b3022@gmail.com> (raw)
In-Reply-To: <20260902124506.363174-1-sinyavin@gmail.com>
The delayed Sashiko review of v2 identified a valid teardown race that
also affects v3. I will address it in v4.
pw-bot: changes-requested
02.09.2026 14:45, Dmitry Sinyavin wrote:
> The BAM-DMUX data path does not update the network device packet and byte
> counters. As a result, userspace sees zero traffic even while packets are
> being transferred.
>
> Use the standard per-CPU software statistics helpers. Account transmitted
> packets after their DMA completion and received packets after removing the
> BAM-DMUX header and padding.
>
> Fixes: 21a0ffd9b38c ("net: wwan: Add Qualcomm BAM-DMUX WWAN network driver")
> Signed-off-by: Dmitry Sinyavin <sinyavin@gmail.com>
> Reviewed-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
> ---
> v3:
> - Count packets discarded by the transmit error path.
>
> v2:
> - Read the TX payload length after unmapping the DMA buffer and combine the
> network-device checks.
>
> v2: https://lore.kernel.org/netdev/20260831181006.1382372-1-sinyavin@gmail.com/
> v1: https://lore.kernel.org/netdev/20260830085400.2542956-1-sinyavin@gmail.com/
>
> Build-tested for ARM with Clang and W=1 using allmodconfig and allyesconfig.
> Hardware-tested on an MDM9607-based device: three 32-byte ICMP probes completed
> without loss, and the RX and TX counters each advanced by three packets and
> 180 bytes.
>
> drivers/net/wwan/qcom_bam_dmux.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/net/wwan/qcom_bam_dmux.c b/drivers/net/wwan/qcom_bam_dmux.c
> index cc6ace8d6437..ef3356200b3e 100644
> --- a/drivers/net/wwan/qcom_bam_dmux.c
> +++ b/drivers/net/wwan/qcom_bam_dmux.c
> @@ -177,8 +177,12 @@ static void bam_dmux_tx_callback(void *data)
> {
> struct bam_dmux_skb_dma *skb_dma = data;
> struct sk_buff *skb = skb_dma->skb;
> + struct net_device *netdev = skb->dev;
>
> bam_dmux_tx_done(skb_dma);
> + if (netdev)
> + dev_sw_netstats_tx_add(netdev, 1,
> + ((struct bam_dmux_hdr *)skb->data)->len);
> dev_consume_skb_any(skb);
> }
>
> @@ -368,6 +372,7 @@ static netdev_tx_t bam_dmux_netdev_start_xmit(struct sk_buff *skb,
>
> drop:
> bam_dmux_tx_done(skb_dma);
> + dev_core_stats_tx_dropped_inc(netdev);
> dev_kfree_skb_any(skb);
> return NETDEV_TX_OK;
> }
> @@ -402,6 +407,7 @@ static const struct net_device_ops bam_dmux_ops = {
> .ndo_open = bam_dmux_netdev_open,
> .ndo_stop = bam_dmux_netdev_stop,
> .ndo_start_xmit = bam_dmux_netdev_start_xmit,
> + .ndo_get_stats64 = dev_get_tstats64,
> };
>
> static const struct device_type wwan_type = {
> @@ -421,6 +427,7 @@ static void bam_dmux_netdev_setup(struct net_device *dev)
> dev->needed_headroom = sizeof(struct bam_dmux_hdr);
> dev->needed_tailroom = sizeof(u32); /* word-aligned */
> dev->tx_queue_len = DEFAULT_TX_QUEUE_LEN;
> + dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
>
> /* This perm addr will be used as interface identifier by IPv6 */
> dev->addr_assign_type = NET_ADDR_RANDOM;
> @@ -533,6 +540,7 @@ static void bam_dmux_cmd_data(struct bam_dmux_skb_dma *skb_dma)
> break;
> }
>
> + dev_sw_netstats_rx_add(netdev, skb->len);
> netif_receive_skb(skb);
> }
>
>
> base-commit: 2188569e7e1b0bc3f3b557dc97ab7a02befc11c8
next prev parent reply other threads:[~2026-09-03 8:27 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-02 12:45 [PATCH net v3] net: wwan: qcom_bam_dmux: account network packets Dmitry Sinyavin
2026-09-03 8:27 ` Dmitry Sinyavin [this message]
2026-09-06 15:00 ` netdev-bot+sashiko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c9cc4753-dcb5-4983-9cff-45135d8b3022@gmail.com \
--to=sinyavin@gmail.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=johannes@sipsolutions.net \
--cc=kuba@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=loic.poulain@oss.qualcomm.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=ryazanov.s.a@gmail.com \
--cc=stephan.gerhold@linaro.org \
--cc=stephan@gerhold.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.