From: Stephen Hemminger <stephen@networkplumber.org>
To: Tudor Cornea <tudor.cornea@gmail.com>
Cc: dev@dpdk.org
Subject: Re: [PATCH] net/af_packet: fix socket close on device stop
Date: Thu, 6 Feb 2025 17:26:27 -0800 [thread overview]
Message-ID: <20250206172627.2d437e36@hermes.local> (raw)
In-Reply-To: <20250204164508.864080-1-tudor.cornea@gmail.com>
On Tue, 4 Feb 2025 18:45:08 +0200
Tudor Cornea <tudor.cornea@gmail.com> wrote:
> Currently, if we call rte_eth_dev_stop(), the sockets are closed.
> If we attempt to start the port again, socket related operations
> will not work correctly.
>
> This can be alleviated by closing the socket at the same place in
> which we currently free the memory, in eth_dev_close().
>
> If an application calls rte_eth_dev_stop() on a port managed
> by the af_packet PMD, the port becomes unusable. This is in contrast
> with ports managed by other drivers (e.g virtio).
>
> I also managed to reproduce the issue using testpmd.
>
> sudo ip link add test-veth0 type veth peer name test-veth1
>
> sudo ip link set test-veth0 up
> sudo ip link set test-veth1 up
>
> AF_PACKET_ARGS=\
> "blocksz=4096,framesz=2048,framecnt=512,qpairs=1,qdisc_bypass=0"
>
> sudo ./dpdk-testpmd \
> -l 0-3 \
> -m 1024 \
> --no-huge \
> --no-shconf \
> --no-pci \
> --vdev=net_af_packet0,iface=test-veth0,${AF_PACKET_ARGS} \
> --vdev=net_af_packet1,iface=test-veth1,${AF_PACKET_ARGS} \
> -- \
> -i
>
> testpmd> start tx_first
>
> Forwarding will start, and we will see traffic on the interfaces.
>
> testpmd> stop
> testpmd> port stop 0
> Stopping ports...
> Checking link statuses...
> Done
> testpmd> port stop 1
> Stopping ports...
> Checking link statuses...
> Done
>
> testpmd> port start 0
> AFPACKET: eth_dev_macaddr_set(): receive socket not found
> Port 0: CA:65:81:63:81:B2
> Checking link statuses...
> Done
> testpmd> port start 1
> AFPACKET: eth_dev_macaddr_set(): receive socket not found
> Port 1: CA:12:D0:BE:93:3F
> Checking link statuses...
> Done
>
> testpmd> start tx_first
>
> When we start forwarding again, we can see that there is no traffic
> on the interfaces. This does not happen when testing with other PMD
> drivers (e.g virtio).
>
> With the patch, the port should re-initialize correctly.
>
> testpmd> port start 0
> Port 0: CA:65:81:63:81:B2
> Checking link statuses...
> Done
>
> Fixes: 364e08f2bbc0 ("af_packet: add PMD for AF_PACKET-based virtual devices")
>
> Signed-off-by: Tudor Cornea <tudor.cornea@gmail.com>
Makes sense, applied to next-net
next prev parent reply other threads:[~2025-02-07 1:26 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-04 16:45 [PATCH] net/af_packet: fix socket close on device stop Tudor Cornea
2025-02-07 1:26 ` Stephen Hemminger [this message]
2025-02-07 17:57 ` Stephen Hemminger
2025-02-10 8:20 ` Tudor Cornea
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=20250206172627.2d437e36@hermes.local \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
--cc=tudor.cornea@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).