On Tue, 4 Feb 2025 18:45:08 +0200 Tudor Cornea <tudor.cor...@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.cor...@gmail.com> Makes sense, applied to next-net