[dpdk-dev,1/5] bnx2x: SR-IOV VF driver changes to support OOB PF driver

Message ID 1442018576-19981-2-git-send-email-rasesh.mody@qlogic.com (mailing list archive)
State Changes Requested, archived
Headers

Commit Message

Rasesh Mody Sept. 12, 2015, 12:42 a.m. UTC
  From: Harish Patil <harish.patil@qlogic.com>

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
---
 drivers/net/bnx2x/bnx2x_vfpf.c |   11 +++++++++--
 drivers/net/bnx2x/bnx2x_vfpf.h |   15 +++++++++++++++
 2 files changed, 24 insertions(+), 2 deletions(-)
  

Comments

Thomas Monjalon Oct. 20, 2015, 4:10 p.m. UTC | #1
2015-09-11 17:42, Rasesh Mody:
> From: Harish Patil <harish.patil@qlogic.com>
> 
> Signed-off-by: Harish Patil <harish.patil@qlogic.com>

Please explain your change a bit more.
  
Harish Patil Oct. 21, 2015, 3:24 p.m. UTC | #2
>

>2015-09-11 17:42, Rasesh Mody:

>> From: Harish Patil <harish.patil@qlogic.com>

>>

>> Signed-off-by: Harish Patil <harish.patil@qlogic.com>

>

>Please explain your change a bit more.

>

>


SR-IOV is supported using bnx2x poll mode driver running as VF driver and
native linux driver running as PF (in host/hypervisor). There is no issue
while running with the PF driver which is at the base version as that of
PMD. However, there is a compatibility issue between newer out-of-box PF
drivers with older VF driver. So the newer VFs would also need to send
BNX2X_VF_TLV_PHYS_PORT_ID (among other TLVs) to differentiate between
newer and older VFs.

Thanks,
Harish


________________________________

This message and any attached documents contain information from the sending company or its parent company(s), subsidiaries, divisions or branch offices that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message.
  
Thomas Monjalon Oct. 21, 2015, 3:34 p.m. UTC | #3
2015-10-21 15:24, Harish Patil:
> >
> >2015-09-11 17:42, Rasesh Mody:
> >> From: Harish Patil <harish.patil@qlogic.com>
> >>
> >> Signed-off-by: Harish Patil <harish.patil@qlogic.com>
> >
> >Please explain your change a bit more.
> >
> >
> 
> SR-IOV is supported using bnx2x poll mode driver running as VF driver and
> native linux driver running as PF (in host/hypervisor). There is no issue
> while running with the PF driver which is at the base version as that of
> PMD. However, there is a compatibility issue between newer out-of-box PF
> drivers with older VF driver. So the newer VFs would also need to send
> BNX2X_VF_TLV_PHYS_PORT_ID (among other TLVs) to differentiate between
> newer and older VFs.

So the title should be "update VF to support new PF drivers".
Please put the detailed explanation in the commit message.
  
Harish Patil Oct. 21, 2015, 3:42 p.m. UTC | #4
>

>2015-10-21 15:24, Harish Patil:

>> >

>> >2015-09-11 17:42, Rasesh Mody:

>> >> From: Harish Patil <harish.patil@qlogic.com>

>> >>

>> >> Signed-off-by: Harish Patil <harish.patil@qlogic.com>

>> >

>> >Please explain your change a bit more.

>> >

>> >

>>

>> SR-IOV is supported using bnx2x poll mode driver running as VF driver

>>and

>> native linux driver running as PF (in host/hypervisor). There is no

>>issue

>> while running with the PF driver which is at the base version as that of

>> PMD. However, there is a compatibility issue between newer out-of-box PF

>> drivers with older VF driver. So the newer VFs would also need to send

>> BNX2X_VF_TLV_PHYS_PORT_ID (among other TLVs) to differentiate between

>> newer and older VFs.

>

>So the title should be "update VF to support new PF drivers".

>Please put the detailed explanation in the commit message.

>


Agree, shall do.

Thanks,
Harish


________________________________

This message and any attached documents contain information from the sending company or its parent company(s), subsidiaries, divisions or branch offices that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message.
  

Patch

diff --git a/drivers/net/bnx2x/bnx2x_vfpf.c b/drivers/net/bnx2x/bnx2x_vfpf.c
index 661f0a5..39fd59a 100644
--- a/drivers/net/bnx2x/bnx2x_vfpf.c
+++ b/drivers/net/bnx2x/bnx2x_vfpf.c
@@ -257,8 +257,15 @@  int bnx2x_vf_get_resources(struct bnx2x_softc *sc, uint8_t tx_count, uint8_t rx_
 
 	acq->bulletin_addr = sc->pf2vf_bulletin_mapping.paddr;
 
-	BNX2X_TLV_APPEND(acq, acq->first_tlv.length, BNX2X_VF_TLV_LIST_END,
-			sizeof(struct channel_list_end_tlv));
+	/* Request physical port identifier */
+	BNX2X_TLV_APPEND(acq, acq->first_tlv.length,
+			 BNX2X_VF_TLV_PHYS_PORT_ID,
+			 sizeof(struct channel_tlv));
+
+	BNX2X_TLV_APPEND(acq,
+			 (acq->first_tlv.length + sizeof(struct channel_tlv)),
+			 BNX2X_VF_TLV_LIST_END,
+			 sizeof(struct channel_list_end_tlv));
 
 	/* requesting the resources in loop */
 	obtain_status = bnx2x_loop_obtain_resources(sc);
diff --git a/drivers/net/bnx2x/bnx2x_vfpf.h b/drivers/net/bnx2x/bnx2x_vfpf.h
index 94ce9f0..4f25321 100644
--- a/drivers/net/bnx2x/bnx2x_vfpf.h
+++ b/drivers/net/bnx2x/bnx2x_vfpf.h
@@ -34,12 +34,24 @@  struct vf_resource_query {
 #define	BNX2X_VF_Q_FLAG_DHC             0x0200
 #define	BNX2X_VF_Q_FLAG_LEADING_RSS     0x0400
 
+#define TLV_BUFFER_SIZE			1024
+
+/* general tlv header (used for both vf->pf request and pf->vf response) */
+struct channel_tlv {
+	uint16_t type;
+	uint16_t length;
+};
+
 struct vf_first_tlv {
 	uint16_t type;
 	uint16_t length;
 	uint32_t reply_offset;
 };
 
+struct tlv_buffer_size {
+	uint8_t tlv_buffer[TLV_BUFFER_SIZE];
+};
+
 /* tlv struct for all PF replies except acquire */
 struct vf_common_reply_tlv {
 	uint16_t type;
@@ -244,12 +256,14 @@  union query_tlvs {
 	struct vf_release_tlv		release;
 	struct vf_rss_tlv		update_rss;
 	struct channel_list_end_tlv     list_end;
+	struct tlv_buffer_size		tlv_buf_size;
 };
 
 union resp_tlvs {
 	struct vf_common_reply_tlv	common_reply;
 	struct vf_acquire_resp_tlv	acquire_resp;
 	struct channel_list_end_tlv	list_end;
+	struct tlv_buffer_size		tlv_buf_size;
 };
 
 /* struct allocated by VF driver, PF sends updates to VF via bulletin */
@@ -300,6 +314,7 @@  enum channel_tlvs {
 	BNX2X_VF_TLV_PF_SET_MAC,
 	BNX2X_VF_TLV_PF_SET_VLAN,
 	BNX2X_VF_TLV_UPDATE_RSS,
+	BNX2X_VF_TLV_PHYS_PORT_ID,
 	BNX2X_VF_TLV_MAX
 };