On Wed, 26 Jun 2019 03:48:12 +0000 Vamsi Krishna Attunuru <vattun...@marvell.com> wrote:
> ________________________________ > From: Stephen Hemminger <step...@networkplumber.org> > Sent: Tuesday, June 25, 2019 11:11 PM > To: Vamsi Krishna Attunuru > Cc: dev@dpdk.org; ferruh.yi...@intel.com; olivier.m...@6wind.com; > arybche...@solarflare.com > Subject: [EXT] Re: [dpdk-dev] [PATCH v6 2/4] lib/kni: add PCI related > information > > External Email > > ---------------------------------------------------------------------- > On Tue, 25 Jun 2019 09:26:58 +0530 > <vattun...@marvell.com> wrote: > > > From: Vamsi Attunuru <vattun...@marvell.com> > > > > PCI related information is needed in KNI kernel module, > > since it requires iommu domain info for address > > translations(using iommu_iova_to_phys() call) when > > KNI runs in IOVA = VA mode. > > > > Signed-off-by: Vamsi Attunuru <vattun...@marvell.com> > > --- > > lib/librte_eal/linux/eal/include/rte_kni_common.h | 7 +++++++ > > lib/librte_kni/rte_kni.c | 5 +++++ > > 2 files changed, 12 insertions(+) > > > > diff --git a/lib/librte_eal/linux/eal/include/rte_kni_common.h > > b/lib/librte_eal/linux/eal/include/rte_kni_common.h > > index 91a1c14..5db5a13 100644 > > --- a/lib/librte_eal/linux/eal/include/rte_kni_common.h > > +++ b/lib/librte_eal/linux/eal/include/rte_kni_common.h > > @@ -111,6 +111,13 @@ struct rte_kni_device_info { > > void * mbuf_va; > > phys_addr_t mbuf_phys; > > > > + /* PCI info */ > > + uint16_t vendor_id; /**< Vendor ID or PCI_ANY_ID. */ > > + uint16_t device_id; /**< Device ID or PCI_ANY_ID. */ > > + uint8_t bus; /**< Device bus */ > > + uint8_t devid; /**< Device ID */ > > + uint8_t function; /**< Device function. */ > > + > > uint16_t group_id; /**< Group ID */ > > uint32_t core_id; /**< core ID to bind for kernel thread > > */ > > > > diff --git a/lib/librte_kni/rte_kni.c b/lib/librte_kni/rte_kni.c > > index e29d0cc..99c4bf5 100644 > > --- a/lib/librte_kni/rte_kni.c > > +++ b/lib/librte_kni/rte_kni.c > > @@ -242,6 +242,11 @@ rte_kni_alloc(struct rte_mempool *pktmbuf_pool, > > kni->ops.port_id = UINT16_MAX; > > > > memset(&dev_info, 0, sizeof(dev_info)); > > + dev_info.bus = conf->addr.bus; > > + dev_info.devid = conf->addr.devid; > > + dev_info.function = conf->addr.function; > > + dev_info.vendor_id = conf->id.vendor_id; > > + dev_info.device_id = conf->id.device_id; > > dev_info.core_id = conf->core_id; > > dev_info.force_bind = conf->force_bind; > > dev_info.group_id = conf->group_id; > > > NAK > > Why is PCI info part of KNI. KNI can be used with non-PCI devices now > > Kernel KNI module needs device info(PCI in this case) to figure out iommu > domain details to work with IOVA=VA mode and the struct rte_kni_device_info > only carries KNI device info to the kernel module, if not here, where do you > suggest me to put this info. The kernel KNI driver works as is with netvsc PMD (which is vmbus). Your code may break that. If needs to work for both.