diff mbox series

[V3,3/3] vDPA/ifcvf: get_config_size should return dev specific config size

Message ID 20210416071628.4984-4-lingshan.zhu@intel.com
State Superseded
Headers show
Series vDPA/ifcvf: enables Intel C5000X-PL virtio-blk | expand

Commit Message

Zhu Lingshan April 16, 2021, 7:16 a.m. UTC
get_config_size() should return the size based on the decected
device type.

Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com>
---
 drivers/vdpa/ifcvf/ifcvf_main.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

Comments

Stefano Garzarella April 16, 2021, 8:47 a.m. UTC | #1
On Fri, Apr 16, 2021 at 03:16:28PM +0800, Zhu Lingshan wrote:
>get_config_size() should return the size based on the decected
>device type.
>
>Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com>
>---
> drivers/vdpa/ifcvf/ifcvf_main.c | 19 ++++++++++++++++++-
> 1 file changed, 18 insertions(+), 1 deletion(-)

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>

>
>diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c b/drivers/vdpa/ifcvf/ifcvf_main.c
>index 376b2014916a..3b6f7862dbb8 100644
>--- a/drivers/vdpa/ifcvf/ifcvf_main.c
>+++ b/drivers/vdpa/ifcvf/ifcvf_main.c
>@@ -356,7 +356,24 @@ static u32 ifcvf_vdpa_get_vq_align(struct vdpa_device *vdpa_dev)
>
> static size_t ifcvf_vdpa_get_config_size(struct vdpa_device *vdpa_dev)
> {
>-	return sizeof(struct virtio_net_config);
>+	struct ifcvf_adapter *adapter = vdpa_to_adapter(vdpa_dev);
>+	struct ifcvf_hw *vf = vdpa_to_vf(vdpa_dev);
>+	struct pci_dev *pdev = adapter->pdev;
>+	size_t size;
>+
>+	switch (vf->dev_type) {
>+	case VIRTIO_ID_NET:
>+		size = sizeof(struct virtio_net_config);
>+		break;
>+	case VIRTIO_ID_BLOCK:
>+		size = sizeof(struct virtio_blk_config);
>+		break;
>+	default:
>+		size = 0;
>+		IFCVF_ERR(pdev, "VIRTIO ID %u not supported\n", vf->dev_type);
>+	}
>+
>+	return size;
> }
>
> static void ifcvf_vdpa_get_config(struct vdpa_device *vdpa_dev,
>-- 
>2.27.0
>
Jason Wang April 19, 2021, 3:17 a.m. UTC | #2
在 2021/4/16 下午3:16, Zhu Lingshan 写道:
> get_config_size() should return the size based on the decected

> device type.

>

> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com>



Acked-by: Jason Wang <jasowang@redhat.com>



> ---

>   drivers/vdpa/ifcvf/ifcvf_main.c | 19 ++++++++++++++++++-

>   1 file changed, 18 insertions(+), 1 deletion(-)

>

> diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c b/drivers/vdpa/ifcvf/ifcvf_main.c

> index 376b2014916a..3b6f7862dbb8 100644

> --- a/drivers/vdpa/ifcvf/ifcvf_main.c

> +++ b/drivers/vdpa/ifcvf/ifcvf_main.c

> @@ -356,7 +356,24 @@ static u32 ifcvf_vdpa_get_vq_align(struct vdpa_device *vdpa_dev)

>   

>   static size_t ifcvf_vdpa_get_config_size(struct vdpa_device *vdpa_dev)

>   {

> -	return sizeof(struct virtio_net_config);

> +	struct ifcvf_adapter *adapter = vdpa_to_adapter(vdpa_dev);

> +	struct ifcvf_hw *vf = vdpa_to_vf(vdpa_dev);

> +	struct pci_dev *pdev = adapter->pdev;

> +	size_t size;

> +

> +	switch (vf->dev_type) {

> +	case VIRTIO_ID_NET:

> +		size = sizeof(struct virtio_net_config);

> +		break;

> +	case VIRTIO_ID_BLOCK:

> +		size = sizeof(struct virtio_blk_config);

> +		break;

> +	default:

> +		size = 0;

> +		IFCVF_ERR(pdev, "VIRTIO ID %u not supported\n", vf->dev_type);

> +	}

> +

> +	return size;

>   }

>   

>   static void ifcvf_vdpa_get_config(struct vdpa_device *vdpa_dev,
diff mbox series

Patch

diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c b/drivers/vdpa/ifcvf/ifcvf_main.c
index 376b2014916a..3b6f7862dbb8 100644
--- a/drivers/vdpa/ifcvf/ifcvf_main.c
+++ b/drivers/vdpa/ifcvf/ifcvf_main.c
@@ -356,7 +356,24 @@  static u32 ifcvf_vdpa_get_vq_align(struct vdpa_device *vdpa_dev)
 
 static size_t ifcvf_vdpa_get_config_size(struct vdpa_device *vdpa_dev)
 {
-	return sizeof(struct virtio_net_config);
+	struct ifcvf_adapter *adapter = vdpa_to_adapter(vdpa_dev);
+	struct ifcvf_hw *vf = vdpa_to_vf(vdpa_dev);
+	struct pci_dev *pdev = adapter->pdev;
+	size_t size;
+
+	switch (vf->dev_type) {
+	case VIRTIO_ID_NET:
+		size = sizeof(struct virtio_net_config);
+		break;
+	case VIRTIO_ID_BLOCK:
+		size = sizeof(struct virtio_blk_config);
+		break;
+	default:
+		size = 0;
+		IFCVF_ERR(pdev, "VIRTIO ID %u not supported\n", vf->dev_type);
+	}
+
+	return size;
 }
 
 static void ifcvf_vdpa_get_config(struct vdpa_device *vdpa_dev,