[dpdk-dev,3/3] fm10k: update VLAN offload features

Message ID 1433213937-21690-4-git-send-email-shaopeng.he@intel.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

He, Shaopeng June 2, 2015, 2:58 a.m. UTC
  Fm10k PF/VF does not support QinQ; VLAN strip and filter are always on
for PF/VF ports.

Signed-off-by: Shaopeng He <shaopeng.he@intel.com>
---
 drivers/net/fm10k/fm10k_ethdev.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
  

Comments

Chen, Jing D June 9, 2015, 3:27 a.m. UTC | #1
Hi,


> -----Original Message-----
> From: He, Shaopeng
> Sent: Tuesday, June 02, 2015 10:59 AM
> To: dev@dpdk.org
> Cc: Chen, Jing D; Qiu, Michael; He, Shaopeng
> Subject: [PATCH 3/3] fm10k: update VLAN offload features
> 
> Fm10k PF/VF does not support QinQ; VLAN strip and filter are always on
> for PF/VF ports.
> 
> Signed-off-by: Shaopeng He <shaopeng.he@intel.com>
> ---
>  drivers/net/fm10k/fm10k_ethdev.c | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
> 
> diff --git a/drivers/net/fm10k/fm10k_ethdev.c
> b/drivers/net/fm10k/fm10k_ethdev.c
> index 4f23bf1..9b198a7 100644
> --- a/drivers/net/fm10k/fm10k_ethdev.c
> +++ b/drivers/net/fm10k/fm10k_ethdev.c
> @@ -884,6 +884,27 @@ fm10k_vlan_filter_set(struct rte_eth_dev *dev,
> uint16_t vlan_id, int on)
>  		return (-EIO);
>  }
> 
> +static void
> +fm10k_vlan_offload_set(__rte_unused struct rte_eth_dev *dev, int mask)
> +{
> +	if (mask & ETH_VLAN_STRIP_MASK) {
> +		if (!dev->data->dev_conf.rxmode.hw_vlan_strip)
> +			PMD_INIT_LOG(ERR, "VLAN stripping is "
> +					"always on in fm10k");
> +	}
> +
> +	if (mask & ETH_VLAN_EXTEND_MASK) {
> +		if (dev->data->dev_conf.rxmode.hw_vlan_extend)
> +			PMD_INIT_LOG(ERR, "VLAN QinQ is not "
> +					"supported in fm10k");
> +	}
> +
> +	if (mask & ETH_VLAN_FILTER_MASK) {
> +		if (!dev->data->dev_conf.rxmode.hw_vlan_filter)
> +			PMD_INIT_LOG(ERR, "VLAN filter is always on in
> fm10k");
> +	}
> +}
> +

Update fm10k_dev_infos_get() to configure above options to expected values?

>  /* Add/Remove a MAC address, and update filters */
>  static void
>  fm10k_MAC_filter_set(struct rte_eth_dev *dev, const u8 *mac, bool add)
> @@ -1801,6 +1822,7 @@ static const struct eth_dev_ops
> fm10k_eth_dev_ops = {
>  	.link_update		= fm10k_link_update,
>  	.dev_infos_get		= fm10k_dev_infos_get,
>  	.vlan_filter_set	= fm10k_vlan_filter_set,
> +	.vlan_offload_set	= fm10k_vlan_offload_set,
>  	.mac_addr_add		= fm10k_macaddr_add,
>  	.mac_addr_remove	= fm10k_macaddr_remove,
>  	.rx_queue_start		= fm10k_dev_rx_queue_start,
> --
> 1.9.3
  
He, Shaopeng June 9, 2015, 8:55 a.m. UTC | #2
> -----Original Message-----
> From: Chen, Jing D
> Sent: Tuesday, June 09, 2015 11:27 AM
> To: He, Shaopeng; dev@dpdk.org
> Cc: Qiu, Michael
> Subject: RE: [PATCH 3/3] fm10k: update VLAN offload features
> 
> Hi,
> 
> 
> > -----Original Message-----
> > From: He, Shaopeng
> > Sent: Tuesday, June 02, 2015 10:59 AM
> > To: dev@dpdk.org
> > Cc: Chen, Jing D; Qiu, Michael; He, Shaopeng
> > Subject: [PATCH 3/3] fm10k: update VLAN offload features
> >
> > Fm10k PF/VF does not support QinQ; VLAN strip and filter are always on
> > for PF/VF ports.
> >
> > Signed-off-by: Shaopeng He <shaopeng.he@intel.com>
> > ---
> >  drivers/net/fm10k/fm10k_ethdev.c | 22 ++++++++++++++++++++++
> >  1 file changed, 22 insertions(+)
> >
> > diff --git a/drivers/net/fm10k/fm10k_ethdev.c
> > b/drivers/net/fm10k/fm10k_ethdev.c
> > index 4f23bf1..9b198a7 100644
> > --- a/drivers/net/fm10k/fm10k_ethdev.c
> > +++ b/drivers/net/fm10k/fm10k_ethdev.c
> > @@ -884,6 +884,27 @@ fm10k_vlan_filter_set(struct rte_eth_dev *dev,
> > uint16_t vlan_id, int on)
> >  		return (-EIO);
> >  }
> >
> > +static void
> > +fm10k_vlan_offload_set(__rte_unused struct rte_eth_dev *dev, int
> > +mask) {
> > +	if (mask & ETH_VLAN_STRIP_MASK) {
> > +		if (!dev->data->dev_conf.rxmode.hw_vlan_strip)
> > +			PMD_INIT_LOG(ERR, "VLAN stripping is "
> > +					"always on in fm10k");
> > +	}
> > +
> > +	if (mask & ETH_VLAN_EXTEND_MASK) {
> > +		if (dev->data->dev_conf.rxmode.hw_vlan_extend)
> > +			PMD_INIT_LOG(ERR, "VLAN QinQ is not "
> > +					"supported in fm10k");
> > +	}
> > +
> > +	if (mask & ETH_VLAN_FILTER_MASK) {
> > +		if (!dev->data->dev_conf.rxmode.hw_vlan_filter)
> > +			PMD_INIT_LOG(ERR, "VLAN filter is always on in
> > fm10k");
> > +	}
> > +}
> > +
> 
> Update fm10k_dev_infos_get() to configure above options to expected
> values?
Thank you for the reminder, I will update the value of rx_offload_capa 
and tx_offload_capa in fm10k_dev_infos_get() in the next version
  
Michael Qiu June 9, 2015, 3:40 p.m. UTC | #3
On 2015/6/9 11:27, Chen, Jing D wrote:
> Hi,
>
>
>> -----Original Message-----
>> From: He, Shaopeng
>> Sent: Tuesday, June 02, 2015 10:59 AM
>> To: dev@dpdk.org
>> Cc: Chen, Jing D; Qiu, Michael; He, Shaopeng
>> Subject: [PATCH 3/3] fm10k: update VLAN offload features
>>
>> Fm10k PF/VF does not support QinQ; VLAN strip and filter are always on
>> for PF/VF ports.
>>
>> Signed-off-by: Shaopeng He <shaopeng.he@intel.com>
>> ---
>>  drivers/net/fm10k/fm10k_ethdev.c | 22 ++++++++++++++++++++++
>>  1 file changed, 22 insertions(+)
>>
>> diff --git a/drivers/net/fm10k/fm10k_ethdev.c
>> b/drivers/net/fm10k/fm10k_ethdev.c
>> index 4f23bf1..9b198a7 100644
>> --- a/drivers/net/fm10k/fm10k_ethdev.c
>> +++ b/drivers/net/fm10k/fm10k_ethdev.c
>> @@ -884,6 +884,27 @@ fm10k_vlan_filter_set(struct rte_eth_dev *dev,
>> uint16_t vlan_id, int on)
>>  		return (-EIO);
>>  }
>>
>> +static void
>> +fm10k_vlan_offload_set(__rte_unused struct rte_eth_dev *dev, int mask)
>> +{
>> +	if (mask & ETH_VLAN_STRIP_MASK) {
>> +		if (!dev->data->dev_conf.rxmode.hw_vlan_strip)
>> +			PMD_INIT_LOG(ERR, "VLAN stripping is "
>> +					"always on in fm10k");
>> +	}
>> +
>> +	if (mask & ETH_VLAN_EXTEND_MASK) {
>> +		if (dev->data->dev_conf.rxmode.hw_vlan_extend)
>> +			PMD_INIT_LOG(ERR, "VLAN QinQ is not "
>> +					"supported in fm10k");
>> +	}
>> +
>> +	if (mask & ETH_VLAN_FILTER_MASK) {
>> +		if (!dev->data->dev_conf.rxmode.hw_vlan_filter)
>> +			PMD_INIT_LOG(ERR, "VLAN filter is always on in
>> fm10k");
>> +	}
>> +}
>> +
> Update fm10k_dev_infos_get() to configure above options to expected values?

Could it be better to add CRC strip options to expected values by
convenient?

Thanks,
Michael
>>  /* Add/Remove a MAC address, and update filters */
>>  static void
>>  fm10k_MAC_filter_set(struct rte_eth_dev *dev, const u8 *mac, bool add)
>> @@ -1801,6 +1822,7 @@ static const struct eth_dev_ops
>> fm10k_eth_dev_ops = {
>>  	.link_update		= fm10k_link_update,
>>  	.dev_infos_get		= fm10k_dev_infos_get,
>>  	.vlan_filter_set	= fm10k_vlan_filter_set,
>> +	.vlan_offload_set	= fm10k_vlan_offload_set,
>>  	.mac_addr_add		= fm10k_macaddr_add,
>>  	.mac_addr_remove	= fm10k_macaddr_remove,
>>  	.rx_queue_start		= fm10k_dev_rx_queue_start,
>> --
>> 1.9.3
>
  
He, Shaopeng June 10, 2015, 6:03 a.m. UTC | #4
> -----Original Message-----
> From: Qiu, Michael
> Sent: Tuesday, June 09, 2015 11:41 PM
> To: Chen, Jing D; He, Shaopeng; dev@dpdk.org
> Subject: Re: [PATCH 3/3] fm10k: update VLAN offload features
> 
> On 2015/6/9 11:27, Chen, Jing D wrote:
> > Hi,
> >
> >
> >> -----Original Message-----
> >> From: He, Shaopeng
> >> Sent: Tuesday, June 02, 2015 10:59 AM
> >> To: dev@dpdk.org
> >> Cc: Chen, Jing D; Qiu, Michael; He, Shaopeng
> >> Subject: [PATCH 3/3] fm10k: update VLAN offload features
> >>
> >> Fm10k PF/VF does not support QinQ; VLAN strip and filter are always
> >> on for PF/VF ports.
> >>
> >> Signed-off-by: Shaopeng He <shaopeng.he@intel.com>
> >> ---
> >>  drivers/net/fm10k/fm10k_ethdev.c | 22 ++++++++++++++++++++++
> >>  1 file changed, 22 insertions(+)
> >>
> >> diff --git a/drivers/net/fm10k/fm10k_ethdev.c
> >> b/drivers/net/fm10k/fm10k_ethdev.c
> >> index 4f23bf1..9b198a7 100644
> >> --- a/drivers/net/fm10k/fm10k_ethdev.c
> >> +++ b/drivers/net/fm10k/fm10k_ethdev.c
> >> @@ -884,6 +884,27 @@ fm10k_vlan_filter_set(struct rte_eth_dev *dev,
> >> uint16_t vlan_id, int on)
> >>  		return (-EIO);
> >>  }
> >>
> >> +static void
> >> +fm10k_vlan_offload_set(__rte_unused struct rte_eth_dev *dev, int
> >> +mask) {
> >> +	if (mask & ETH_VLAN_STRIP_MASK) {
> >> +		if (!dev->data->dev_conf.rxmode.hw_vlan_strip)
> >> +			PMD_INIT_LOG(ERR, "VLAN stripping is "
> >> +					"always on in fm10k");
> >> +	}
> >> +
> >> +	if (mask & ETH_VLAN_EXTEND_MASK) {
> >> +		if (dev->data->dev_conf.rxmode.hw_vlan_extend)
> >> +			PMD_INIT_LOG(ERR, "VLAN QinQ is not "
> >> +					"supported in fm10k");
> >> +	}
> >> +
> >> +	if (mask & ETH_VLAN_FILTER_MASK) {
> >> +		if (!dev->data->dev_conf.rxmode.hw_vlan_filter)
> >> +			PMD_INIT_LOG(ERR, "VLAN filter is always on in
> >> fm10k");
> >> +	}
> >> +}
> >> +
> > Update fm10k_dev_infos_get() to configure above options to expected
> values?
> 
> Could it be better to add CRC strip options to expected values by convenient?
Thanks for the comments; but this patch is for the VLAN offload, may not be good
place to fix other bugs. By the way, current struct rte_eth_dev_info 
which fm10k_dev_infos_get() returns does not have 
any setting for CRC strip options (please correct me if I am wrong).
  

Patch

diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c
index 4f23bf1..9b198a7 100644
--- a/drivers/net/fm10k/fm10k_ethdev.c
+++ b/drivers/net/fm10k/fm10k_ethdev.c
@@ -884,6 +884,27 @@  fm10k_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
 		return (-EIO);
 }
 
+static void
+fm10k_vlan_offload_set(__rte_unused struct rte_eth_dev *dev, int mask)
+{
+	if (mask & ETH_VLAN_STRIP_MASK) {
+		if (!dev->data->dev_conf.rxmode.hw_vlan_strip)
+			PMD_INIT_LOG(ERR, "VLAN stripping is "
+					"always on in fm10k");
+	}
+
+	if (mask & ETH_VLAN_EXTEND_MASK) {
+		if (dev->data->dev_conf.rxmode.hw_vlan_extend)
+			PMD_INIT_LOG(ERR, "VLAN QinQ is not "
+					"supported in fm10k");
+	}
+
+	if (mask & ETH_VLAN_FILTER_MASK) {
+		if (!dev->data->dev_conf.rxmode.hw_vlan_filter)
+			PMD_INIT_LOG(ERR, "VLAN filter is always on in fm10k");
+	}
+}
+
 /* Add/Remove a MAC address, and update filters */
 static void
 fm10k_MAC_filter_set(struct rte_eth_dev *dev, const u8 *mac, bool add)
@@ -1801,6 +1822,7 @@  static const struct eth_dev_ops fm10k_eth_dev_ops = {
 	.link_update		= fm10k_link_update,
 	.dev_infos_get		= fm10k_dev_infos_get,
 	.vlan_filter_set	= fm10k_vlan_filter_set,
+	.vlan_offload_set	= fm10k_vlan_offload_set,
 	.mac_addr_add		= fm10k_macaddr_add,
 	.mac_addr_remove	= fm10k_macaddr_remove,
 	.rx_queue_start		= fm10k_dev_rx_queue_start,