* [PATCH v1] net/e1000: do not update link status in secondary process
@ 2024-07-12 11:30 Jun Wang
2024-07-12 17:17 ` Stephen Hemminger
2024-08-22 15:58 ` Bruce Richardson
0 siblings, 2 replies; 7+ messages in thread
From: Jun Wang @ 2024-07-12 11:30 UTC (permalink / raw)
To: dev
The code to update link status is not safe in secondary process.
If called from secondary it will crash, example from dumpcap:
eth_em_link_update
Signed-off-by: Jun Wang <junwang01@cestc.cn>
---
drivers/net/e1000/em_ethdev.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c
index c5a4dec..f6875b0 100644
--- a/drivers/net/e1000/em_ethdev.c
+++ b/drivers/net/e1000/em_ethdev.c
@@ -1136,6 +1136,9 @@ static int eth_em_pci_remove(struct rte_pci_device *pci_dev)
struct rte_eth_link link;
int link_up, count;
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ return -1;
+
link_up = 0;
hw->mac.get_link_status = 1;
--
1.8.3.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1] net/e1000: do not update link status in secondary process
2024-07-12 11:30 [PATCH v1] net/e1000: do not update link status in secondary process Jun Wang
@ 2024-07-12 17:17 ` Stephen Hemminger
2024-07-14 8:26 ` Jun Wang
2024-08-22 15:58 ` Bruce Richardson
1 sibling, 1 reply; 7+ messages in thread
From: Stephen Hemminger @ 2024-07-12 17:17 UTC (permalink / raw)
To: Jun Wang; +Cc: dev
On Fri, 12 Jul 2024 19:30:47 +0800
Jun Wang <junwang01@cestc.cn> wrote:
> The code to update link status is not safe in secondary process.
> If called from secondary it will crash, example from dumpcap:
> eth_em_link_update
>
> Signed-off-by: Jun Wang <junwang01@cestc.cn>
Wouldn't it be better to fix the code in e1000_check_link to work in
secondary process. There are network virtual appliances that use
secondary process for all processing.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1] net/e1000: do not update link status in secondary process
2024-07-12 17:17 ` Stephen Hemminger
@ 2024-07-14 8:26 ` Jun Wang
2024-07-22 17:08 ` Bruce Richardson
0 siblings, 1 reply; 7+ messages in thread
From: Jun Wang @ 2024-07-14 8:26 UTC (permalink / raw)
To: stephen; +Cc: dev
[-- Attachment #1: Type: text/plain, Size: 695 bytes --]
>> The code to update link status is not safe in secondary process.
>> If called from secondary it will crash, example from dumpcap:
>> eth_em_link_update
>>
>> Signed-off-by: Jun Wang <junwang01@cestc.cn>
>
> Wouldn't it be better to fix the code in e1000_check_link to work in
> secondary process. There are network virtual appliances that use
> secondary process for all processing.
Yes, the e1000 virtual network card currently does not work properly
in the secondary process. After skipping eth_em_link_update, I tested
the e1000 card and it was able to capture packets normally. For the
secondary process, I think eth_em_link_update is not necessary.
Jun Wang
[-- Attachment #2: Type: text/html, Size: 1853 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1] net/e1000: do not update link status in secondary process
2024-07-14 8:26 ` Jun Wang
@ 2024-07-22 17:08 ` Bruce Richardson
2024-07-23 2:07 ` Jun Wang
0 siblings, 1 reply; 7+ messages in thread
From: Bruce Richardson @ 2024-07-22 17:08 UTC (permalink / raw)
To: Jun Wang; +Cc: stephen, dev
On Sun, Jul 14, 2024 at 04:26:26PM +0800, Jun Wang wrote:
> >> The code to update link status is not safe in secondary process.
> >> If called from secondary it will crash, example from dumpcap:
> >> eth_em_link_update
> >>
> >> Signed-off-by: Jun Wang <junwang01@cestc.cn>
> >
> > Wouldn't it be better to fix the code in e1000_check_link to work in
> > secondary process. There are network virtual appliances that use
> > secondary process for all processing.
>
> Yes, the e1000 virtual network card currently does not work properly
>
> in the secondary process. After skipping eth_em_link_update, I tested
>
> the e1000 card and it was able to capture packets normally. For the
>
> secondary process, I think eth_em_link_update is not necessary.
> __________________________________________________________________
>
Hi Jun,
can you provide some instructions as to how I can go about reproducing the
issue? I used a VM with emulated e1000 NICs on it and was able to run
testpmd and dumpcap side by side. Similarly, I was able to run two
instances of the symmetric_mp app side by size without seeing any crashes.
I'd just like to verify the issue and confirm this fixes a problem before
merging.
Thanks,
/Bruce
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1] net/e1000: do not update link status in secondary process
2024-07-22 17:08 ` Bruce Richardson
@ 2024-07-23 2:07 ` Jun Wang
0 siblings, 0 replies; 7+ messages in thread
From: Jun Wang @ 2024-07-23 2:07 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Stephen Hemminger, dev
[-- Attachment #1: Type: text/plain, Size: 2737 bytes --]
I used the e1000 NIC with OVS-DPDK and experienced a failure when using the
/dpdk/app/dpdk-dumpcap command to capture packets. After making modifications,
it worked fine.
/dpdk/app/dpdk-dumpcap -i 0000:00:04.0
File: /tmp/dpdk-dumpcap_0_0000:00:04.0_20240723020203.pcapng
Segmentation fault (core dumped)
ovs-vsctl list open .
_uuid : 82223d04-0a60-44fe-83ac-398a01b0bca3
bridges : [8f188622-c17d-4d21-ad30-22c30860f050, ca88255e-54e5-4b06-aaff-fdde55018f35]
cur_cfg : 15
datapath_types : [netdev, system]
datapaths : {netdev=d801e891-7990-4f77-ae9a-c776ba4430a4, system=25e5a761-3160-4ea1-adab-b4cddd8309e4}
db_version : "8.3.0"
dpdk_initialized : true
dpdk_version : "DPDK 23.11.0"
external_ids : {hostname=cell1-xgw-dpdk, ovn-bridge-datapath-type=netdev, ovn-bridge-mappings="external:br-tun,share:br-tun,direct-connect:br-tun", ovn-encap-ip="172.16.0.13", ovn-encap-tos=inherit, ovn-encap-type=geneve, ovn-remote="tcp:[192.168.122.171]:6642", ovn-set-local-ip="true", rundir="/var/run/openvswitch", system-id=cell1-xgw-dpdk}
iface_types : [bareudp, dpdk, dpdkvhostuser, dpdkvhostuserclient, erspan, geneve, gre, gtpu, internal, ip6erspan, ip6gre, lisp, patch, stt, system, tap, vxlan]
manager_options : []
next_cfg : 15
other_config : {dpdk-extra=" -a 0000:00:04.0" , dpdk-init="true", pmd-perf-metrics="false", vlan-limit="0"}
ovs_version : "2.17.5"
ssl : []
statistics : {}
system_type : cclinux
system_version : "22.09.2"
status : {bus_info="bus_name=pci, vendor_id=8086, device_id=100e", driver_name=net_e1000_em, if_descr="DPDK 23.11.0 net_e1000_em", if_type="6", link_speed="1Gbps", max_hash_mac_addrs="0", max_mac_addrs="15", max_rx_pktlen="1518", max_rx_queues="2", max_tx_queues="2", max_vfs="0", max_vmdq_pools="0", min_rx_bufsize="256", n_rxq="1", n_txq="2", numa_id="-1", port_no="0", rx-steering=rss, rx_csum_offload="true", tx_geneve_tso_offload="false", tx_ip_csum_offload="true", tx_out_ip_csum_offload="false", tx_out_udp_csum_offload="false", tx_sctp_csum_offload="false", tx_tcp_csum_offload="true", tx_tcp_seg_offload="false", tx_udp_csum_offload="true", tx_vxlan_tso_offload="false"}
/usr/local/bin/dpdk-devbind.py --status
Network devices using DPDK-compatible driver
============================================
0000:00:04.0 '82540EM Gigabit Ethernet Controller 100e' drv=uio_pci_generic unused=
Network devices using kernel driver
===================================
0000:00:03.0 '82540EM Gigabit Ethernet Controller 100e' if=eth0 drv=e1000 unused=uio_pci_generic *Active*
Jun Wang
[-- Attachment #2: Type: text/html, Size: 10356 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1] net/e1000: do not update link status in secondary process
2024-07-12 11:30 [PATCH v1] net/e1000: do not update link status in secondary process Jun Wang
2024-07-12 17:17 ` Stephen Hemminger
@ 2024-08-22 15:58 ` Bruce Richardson
2024-08-22 16:02 ` Bruce Richardson
1 sibling, 1 reply; 7+ messages in thread
From: Bruce Richardson @ 2024-08-22 15:58 UTC (permalink / raw)
To: Jun Wang; +Cc: dev
On Fri, Jul 12, 2024 at 07:30:47PM +0800, Jun Wang wrote:
> The code to update link status is not safe in secondary process.
> If called from secondary it will crash, example from dumpcap:
> eth_em_link_update
>
> Signed-off-by: Jun Wang <junwang01@cestc.cn>
> ---
> drivers/net/e1000/em_ethdev.c | 3 +++
> 1 file changed, 3 insertions(+)
>
Given this is fixing an issue experienced in the real-world I think we
should take this patch. As Stephen says, a better solution would be to have
the whole function work properly in secondary, but I'd rather avoid crashes
as a priority.
Fixes: 805803445a02 ("e1000: support EM devices (also known as e1000/e1000e)")
Cc: stable@dpdk.org
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1] net/e1000: do not update link status in secondary process
2024-08-22 15:58 ` Bruce Richardson
@ 2024-08-22 16:02 ` Bruce Richardson
0 siblings, 0 replies; 7+ messages in thread
From: Bruce Richardson @ 2024-08-22 16:02 UTC (permalink / raw)
To: Jun Wang; +Cc: dev
On Thu, Aug 22, 2024 at 04:58:59PM +0100, Bruce Richardson wrote:
> On Fri, Jul 12, 2024 at 07:30:47PM +0800, Jun Wang wrote:
> > The code to update link status is not safe in secondary process.
> > If called from secondary it will crash, example from dumpcap:
> > eth_em_link_update
> >
> > Signed-off-by: Jun Wang <junwang01@cestc.cn>
> > ---
> > drivers/net/e1000/em_ethdev.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
>
> Given this is fixing an issue experienced in the real-world I think we
> should take this patch. As Stephen says, a better solution would be to have
> the whole function work properly in secondary, but I'd rather avoid crashes
> as a priority.
>
> Fixes: 805803445a02 ("e1000: support EM devices (also known as e1000/e1000e)")
> Cc: stable@dpdk.org
>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Applied to dpdk-next-net-intel.
Thanks,
/Bruce
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-08-22 16:02 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-12 11:30 [PATCH v1] net/e1000: do not update link status in secondary process Jun Wang
2024-07-12 17:17 ` Stephen Hemminger
2024-07-14 8:26 ` Jun Wang
2024-07-22 17:08 ` Bruce Richardson
2024-07-23 2:07 ` Jun Wang
2024-08-22 15:58 ` Bruce Richardson
2024-08-22 16:02 ` Bruce Richardson
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).