Message ID | 20210310090052.4762-2-lingshan.zhu@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | vDPA/ifcvf: enables Intel C5000X-PL virtio-net | expand |
On 2021/3/10 5:00 下午, Zhu Lingshan wrote: > In this commit, ifcvf_get_vendor_id() will return > a device specific vendor id of the probed pci device > than a hard code. > > Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> > --- > drivers/vdpa/ifcvf/ifcvf_main.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c b/drivers/vdpa/ifcvf/ifcvf_main.c > index fa1af301cf55..e501ee07de17 100644 > --- a/drivers/vdpa/ifcvf/ifcvf_main.c > +++ b/drivers/vdpa/ifcvf/ifcvf_main.c > @@ -324,7 +324,10 @@ static u32 ifcvf_vdpa_get_device_id(struct vdpa_device *vdpa_dev) > > static u32 ifcvf_vdpa_get_vendor_id(struct vdpa_device *vdpa_dev) > { > - return IFCVF_SUBSYS_VENDOR_ID; > + struct ifcvf_adapter *adapter = vdpa_to_adapter(vdpa_dev); > + struct pci_dev *pdev = adapter->pdev; > + > + return pdev->subsystem_vendor; > } While at this, I wonder if we can do something similar in get_device_id() if it could be simple deduced from some simple math from the pci device id? Thanks > > static u32 ifcvf_vdpa_get_vq_align(struct vdpa_device *vdpa_dev)
On 3/11/2021 11:23 AM, Jason Wang wrote: > > On 2021/3/10 5:00 下午, Zhu Lingshan wrote: >> In this commit, ifcvf_get_vendor_id() will return >> a device specific vendor id of the probed pci device >> than a hard code. >> >> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> >> --- >> drivers/vdpa/ifcvf/ifcvf_main.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c >> b/drivers/vdpa/ifcvf/ifcvf_main.c >> index fa1af301cf55..e501ee07de17 100644 >> --- a/drivers/vdpa/ifcvf/ifcvf_main.c >> +++ b/drivers/vdpa/ifcvf/ifcvf_main.c >> @@ -324,7 +324,10 @@ static u32 ifcvf_vdpa_get_device_id(struct >> vdpa_device *vdpa_dev) >> static u32 ifcvf_vdpa_get_vendor_id(struct vdpa_device *vdpa_dev) >> { >> - return IFCVF_SUBSYS_VENDOR_ID; >> + struct ifcvf_adapter *adapter = vdpa_to_adapter(vdpa_dev); >> + struct pci_dev *pdev = adapter->pdev; >> + >> + return pdev->subsystem_vendor; >> } > > > While at this, I wonder if we can do something similar in > get_device_id() if it could be simple deduced from some simple math > from the pci device id? > > Thanks Hi Jason, IMHO, this implementation is just some memory read ops, I think other implementations may not save many cpu cycles, an if cost at least three cpu cycles. Thanks! > > >> static u32 ifcvf_vdpa_get_vq_align(struct vdpa_device *vdpa_dev) >
On 2021/3/11 12:21 下午, Zhu Lingshan wrote: > > > On 3/11/2021 11:23 AM, Jason Wang wrote: >> >> On 2021/3/10 5:00 下午, Zhu Lingshan wrote: >>> In this commit, ifcvf_get_vendor_id() will return >>> a device specific vendor id of the probed pci device >>> than a hard code. >>> >>> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> >>> --- >>> drivers/vdpa/ifcvf/ifcvf_main.c | 5 ++++- >>> 1 file changed, 4 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c >>> b/drivers/vdpa/ifcvf/ifcvf_main.c >>> index fa1af301cf55..e501ee07de17 100644 >>> --- a/drivers/vdpa/ifcvf/ifcvf_main.c >>> +++ b/drivers/vdpa/ifcvf/ifcvf_main.c >>> @@ -324,7 +324,10 @@ static u32 ifcvf_vdpa_get_device_id(struct >>> vdpa_device *vdpa_dev) >>> static u32 ifcvf_vdpa_get_vendor_id(struct vdpa_device *vdpa_dev) >>> { >>> - return IFCVF_SUBSYS_VENDOR_ID; >>> + struct ifcvf_adapter *adapter = vdpa_to_adapter(vdpa_dev); >>> + struct pci_dev *pdev = adapter->pdev; >>> + >>> + return pdev->subsystem_vendor; >>> } >> >> >> While at this, I wonder if we can do something similar in >> get_device_id() if it could be simple deduced from some simple math >> from the pci device id? >> >> Thanks > Hi Jason, > > IMHO, this implementation is just some memory read ops, I think other > implementations may not save many cpu cycles, an if cost at least > three cpu cycles. > > Thanks! Well, I meant whehter you can deduce virtio device id from pdev->subsystem_device. Thanks >> >> >>> static u32 ifcvf_vdpa_get_vq_align(struct vdpa_device *vdpa_dev) >> >
On 3/11/2021 2:13 PM, Jason Wang wrote: > > On 2021/3/11 12:21 下午, Zhu Lingshan wrote: >> >> >> On 3/11/2021 11:23 AM, Jason Wang wrote: >>> >>> On 2021/3/10 5:00 下午, Zhu Lingshan wrote: >>>> In this commit, ifcvf_get_vendor_id() will return >>>> a device specific vendor id of the probed pci device >>>> than a hard code. >>>> >>>> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> >>>> --- >>>> drivers/vdpa/ifcvf/ifcvf_main.c | 5 ++++- >>>> 1 file changed, 4 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c >>>> b/drivers/vdpa/ifcvf/ifcvf_main.c >>>> index fa1af301cf55..e501ee07de17 100644 >>>> --- a/drivers/vdpa/ifcvf/ifcvf_main.c >>>> +++ b/drivers/vdpa/ifcvf/ifcvf_main.c >>>> @@ -324,7 +324,10 @@ static u32 ifcvf_vdpa_get_device_id(struct >>>> vdpa_device *vdpa_dev) >>>> static u32 ifcvf_vdpa_get_vendor_id(struct vdpa_device *vdpa_dev) >>>> { >>>> - return IFCVF_SUBSYS_VENDOR_ID; >>>> + struct ifcvf_adapter *adapter = vdpa_to_adapter(vdpa_dev); >>>> + struct pci_dev *pdev = adapter->pdev; >>>> + >>>> + return pdev->subsystem_vendor; >>>> } >>> >>> >>> While at this, I wonder if we can do something similar in >>> get_device_id() if it could be simple deduced from some simple math >>> from the pci device id? >>> >>> Thanks >> Hi Jason, >> >> IMHO, this implementation is just some memory read ops, I think other >> implementations may not save many cpu cycles, an if cost at least >> three cpu cycles. >> >> Thanks! > > > Well, I meant whehter you can deduce virtio device id from > pdev->subsystem_device. > > Thanks Oh, sure, I get you > > >>> >>> >>>> static u32 ifcvf_vdpa_get_vq_align(struct vdpa_device *vdpa_dev) >>> >> >
diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c b/drivers/vdpa/ifcvf/ifcvf_main.c index fa1af301cf55..e501ee07de17 100644 --- a/drivers/vdpa/ifcvf/ifcvf_main.c +++ b/drivers/vdpa/ifcvf/ifcvf_main.c @@ -324,7 +324,10 @@ static u32 ifcvf_vdpa_get_device_id(struct vdpa_device *vdpa_dev) static u32 ifcvf_vdpa_get_vendor_id(struct vdpa_device *vdpa_dev) { - return IFCVF_SUBSYS_VENDOR_ID; + struct ifcvf_adapter *adapter = vdpa_to_adapter(vdpa_dev); + struct pci_dev *pdev = adapter->pdev; + + return pdev->subsystem_vendor; } static u32 ifcvf_vdpa_get_vq_align(struct vdpa_device *vdpa_dev)
In this commit, ifcvf_get_vendor_id() will return a device specific vendor id of the probed pci device than a hard code. Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> --- drivers/vdpa/ifcvf/ifcvf_main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)