From: bugzilla@dpdk.org
To: dev@dpdk.org
Subject: [dpdk-dev] [Bug 339] net/af_packet: af_packet driver is leaving stale socket after device is removed
Date: Wed, 14 Aug 2019 10:38:54 +0000 [thread overview]
Message-ID: <bug-339-3@http.bugs.dpdk.org/> (raw)
https://bugs.dpdk.org/show_bug.cgi?id=339
Bug ID: 339
Summary: net/af_packet: af_packet driver is leaving stale
socket after device is removed
Product: DPDK
Version: 18.02
Hardware: x86
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: ethdev
Assignee: dev@dpdk.org
Reporter: abhishek.sachan@altran.com
CC: linville@tuxdriver.com
Target Milestone: ---
I am trying to use af_packet dpdk pmd driver in "ovs with dpdk".
Looks like af_packet driver is leaving stale sockets after device is removed.
The stale sockets can be confirmed by the output of "ss -0" command.
Kindly let me know if this is known/valid issue.
Have suggested a code change in dpdk net/af_packet to fix the issue, please
suggest if this is appropriate fix so that i can submit a patch.
Below is the output of "ss -0" after addition and deletion of port in ovs :
[1] Add port in ovs using command "ovs-vsctl add-port br0 wan -- set Interface
wan type=dpdk options:dpdk-devargs=eth_af_packet0,iface=veth0"
#ss -0
Netid Recv-Q Send-Q Local Address:Port
Peer Address:Port
p_raw 0 0 *:veth0
*
[2] Delete port in ovs using command "ovs-vsctl del-port br0 wan"
#ss -0
Netid Recv-Q Send-Q Local Address:Port
Peer Address:Port
p_raw 0 0 *:veth0
*
"ss -0" output keeps showing stale entry , and the stale entries keeps piling
up with multiple add/del triggered for same port in ovs.
All the entries gets removed only when ovs process is exited.
Went through dpdk net/af_packet code and below are the findings:-
[1] Ring buffers are memory mapped when device is added using rte_dev_probe
[2] There is no corresponding munmap call when device is removed/closed
[3] The issue is fixed by calling munmap from rte_pmd_af_packet_remove()
Patch for changes done to fix the issue :-
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -972,6 +972,7 @@
{
struct rte_eth_dev *eth_dev = NULL;
struct pmd_internals *internals;
+ struct tpacket_req *req;
unsigned q;
PMD_LOG(INFO, "Closing AF_PACKET ethdev on numa socket %u",
@@ -992,7 +993,10 @@
return rte_eth_dev_release_port(eth_dev);
internals = eth_dev->data->dev_private;
+ req = &(internals->req);
for (q = 0; q < internals->nb_queues; q++) {
+ munmap(internals->rx_queue[q].map,
+ 2 * req->tp_block_size * req->tp_block_nr);
rte_free(internals->rx_queue[q].rd);
rte_free(internals->tx_queue[q].rd);
}
--
You are receiving this mail because:
You are the assignee for the bug.
next reply other threads:[~2019-08-14 10:38 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-14 10:38 bugzilla [this message]
2019-08-19 8:08 ` [dpdk-dev] [Bug 339] net/af_packet: af_packet driver is leaving stale socket after device is removed bugzilla
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=bug-339-3@http.bugs.dpdk.org/ \
--to=bugzilla@dpdk.org \
--cc=dev@dpdk.org \
/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.