[v2,11/12] net/bnxt: set VLAN strip mode before default vnic cfg

Message ID 20180922045559.27438-12-ajit.khaparde@broadcom.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers
Series bnxt patchset |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Ajit Khaparde Sept. 22, 2018, 4:55 a.m. UTC
  From: Bei Sun <bei.sun@broadcom.com>

Firmware sets pf pair in default vnic cfg. If the VLAN strip
setting is not available at this time, it will not be
configured correctly in the CFA.
Set the desired VLAN strip mode before default vnic configuration.

Signed-off-by: Bei Sun <bei.sun@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)
  

Comments

Ferruh Yigit Sept. 25, 2018, 11:34 a.m. UTC | #1
On 9/22/2018 5:55 AM, Ajit Khaparde wrote:
> From: Bei Sun <bei.sun@broadcom.com>
> 
> Firmware sets pf pair in default vnic cfg. If the VLAN strip
> setting is not available at this time, it will not be
> configured correctly in the CFA.
> Set the desired VLAN strip mode before default vnic configuration.

vnic used as uppercase in prev patch titles, can you please make usage consistent?

> 
> Signed-off-by: Bei Sun <bei.sun@broadcom.com>
> Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
> ---
>  drivers/net/bnxt/bnxt_ethdev.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
> index e1b684c2e..e605df424 100644
> --- a/drivers/net/bnxt/bnxt_ethdev.c
> +++ b/drivers/net/bnxt/bnxt_ethdev.c
> @@ -202,7 +202,9 @@ static int bnxt_init_chip(struct bnxt *bp)
>  	struct bnxt_rx_queue *rxq;
>  	struct rte_eth_link new;
>  	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(bp->eth_dev);
> +	struct rte_eth_conf *dev_conf = &bp->eth_dev->data->dev_conf;
>  	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
> +	uint64_t rx_offloads = dev_conf->rxmode.offloads;
>  	uint32_t intr_vector = 0;
>  	uint32_t queue_id, base = BNXT_MISC_VEC_ID;
>  	uint32_t vec = BNXT_MISC_VEC_ID;
> @@ -283,6 +285,16 @@ static int bnxt_init_chip(struct bnxt *bp)
>  			}
>  		}
>  
> +		/*
> +		 * Firmware sets pf pair in default vnic cfg. If the VLAN strip
> +		 * setting is not available at this time, it will not be
> +		 * configured correctly in the CFA.
> +		 */
> +		if (rx_offloads & DEV_RX_OFFLOAD_VLAN_STRIP)
> +			vnic->vlan_strip = true;
> +		else
> +			vnic->vlan_strip = false;
> +
>  		rc = bnxt_hwrm_vnic_cfg(bp, vnic);
>  		if (rc) {
>  			PMD_DRV_LOG(ERR, "HWRM vnic %d cfg failure rc: %x\n",
>
  

Patch

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index e1b684c2e..e605df424 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -202,7 +202,9 @@  static int bnxt_init_chip(struct bnxt *bp)
 	struct bnxt_rx_queue *rxq;
 	struct rte_eth_link new;
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(bp->eth_dev);
+	struct rte_eth_conf *dev_conf = &bp->eth_dev->data->dev_conf;
 	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
+	uint64_t rx_offloads = dev_conf->rxmode.offloads;
 	uint32_t intr_vector = 0;
 	uint32_t queue_id, base = BNXT_MISC_VEC_ID;
 	uint32_t vec = BNXT_MISC_VEC_ID;
@@ -283,6 +285,16 @@  static int bnxt_init_chip(struct bnxt *bp)
 			}
 		}
 
+		/*
+		 * Firmware sets pf pair in default vnic cfg. If the VLAN strip
+		 * setting is not available at this time, it will not be
+		 * configured correctly in the CFA.
+		 */
+		if (rx_offloads & DEV_RX_OFFLOAD_VLAN_STRIP)
+			vnic->vlan_strip = true;
+		else
+			vnic->vlan_strip = false;
+
 		rc = bnxt_hwrm_vnic_cfg(bp, vnic);
 		if (rc) {
 			PMD_DRV_LOG(ERR, "HWRM vnic %d cfg failure rc: %x\n",