> -----Original Message----- > From: dev <dev-boun...@dpdk.org> On Behalf Of dirk > Sent: Tuesday, August 27, 2019 6:03 PM > To: dev@dpdk.org > Subject: [dpdk-dev] [PATCH 1/1] net/enic: enic driver doesn't work with 2nd > process > > net/enic: enic driver doesn't work with 2nd process. the problem is that the > private data structure enic uses pointers to rte_eth_dev and rte_pci_device > which are overwritten when a 2nd process starts using this device. > given patch removes these two pointers from the private data and uses the > correct pointers. For us the given patch works fine on a cisco rack. > (we used three processes working concurrently) > > Signed-off-by: dirk <dirk.l...@ng4t.com> > --- > drivers/net/enic/enic.h | 36 ++++--- > drivers/net/enic/enic_clsf.c | 5 +- > drivers/net/enic/enic_ethdev.c | 79 ++++++--------- > drivers/net/enic/enic_main.c | 177 +++++++++++++++++++-------------- > - > drivers/net/enic/enic_res.c | 7 +- > drivers/net/enic/enic_res.h | 6 +- > drivers/net/enic/enic_rxtx_vec_avx2.c | 5 +- > 7 files changed, 156 insertions(+), 159 deletions(-) >
Hi, Thanks for the patch and reporting the bug! Yes, enic->rte_dev and enic->pdev are supposed to be set and used only by the primary. I can reproduce the crash by running two different executables as primary and secondary. Using different executables so that primary and secondary processes load rte_eth_devices at different addresses. I see other related issues including... - eth_enicpmd_dev_init overwriting primary's fields in struct enic, other than rte_dev and pdev. - Secondary not setting optimal rx/tx handlers. - RSS update handlers (e.g. rss_hash_update) not checking for primary I will send a patch series with Reported-by: Dirk Lenz. And you can try it out and add Tested-by on that series. Are you okay with this plan? Did I get your name right? Thanks a lot. -Hyong