[PATCH] net/af_packet: fix socket close on device stop
Stephen Hemminger
stephen at networkplumber.org
Fri Feb 7 18:57:19 CET 2025
On Tue, 4 Feb 2025 18:45:08 +0200
Tudor Cornea <tudor.cornea at 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 at gmail.com>
Applied to next-net
Should this go to stable as well
More information about the dev
mailing list