[dpdk-dev] [PATCH] app/testpmd:vlan filter fail

Wu, Yanglong yanglong.wu at intel.com
Fri Feb 2 04:37:17 CET 2018


Hi,
This patch is wrong, but there is bug absolutely. 
The problem can be stated as following:
in your patch(0074d02fc),
@@ -2224,7 +2221,7 @@ init_port_dcb_config(portid_t pid,
        retval = get_eth_dcb_conf(&port_conf, dcb_mode, num_tcs, pfc_en);
        if (retval < 0)
                return retval;
-       port_conf.rxmode.hw_vlan_filter = 1;
+       port_conf.rxmode.offloads |= DEV_RX_OFFLOAD_VLAN_FILTER;
You remove out port_conf.rxmode.hw_vlan_filter = 1 and assign port_conf.rxmode.offloads directly, so here port_conf.rxmode.hw_vlan_filter will equal to 0 and port_conf.rxmode.offloads will equal to DEV_RX_OFFLOAD_VLAN_FILTER, right?
 
But next in the function rte_eth_dev_configure(pid, 0, 0, &port_conf)  --> rte_eth_convert_rx_offload_bitfield , it will assign port_conf.rxmode.offloads  according to value of port_conf.rxmode.hw_vlan_filter again. As you remove out port_conf.rxmode.hw_vlan_filter = 1 and it equal to 0 now,  port_conf.rxmode.offloads is assigned as 0 again. So it will always lead to fail for vlan filter setting.

So I think port_Conf.rxmode.hw_vlan_filter should equeal to 1 and removing out  port_conf.rxmode.hw_vlan_filter = 1 will leads it assigning as a wrong number and vlan filter failing. So port_conf.rxmode.hw_vlan_filter = 1 shouldn’t be removed out, do you think so? 
I will add this line and  sent patch again

Wu yanglong
-----Original Message-----
From: Shahaf Shuler [mailto:shahafs at mellanox.com] 
Sent: Thursday, February 1, 2018 1:58 PM
To: Wu, Yanglong <yanglong.wu at intel.com>; dev at dpdk.org
Cc: Lu, Wenzhuo <wenzhuo.lu at intel.com>
Subject: RE: [PATCH] app/testpmd:vlan filter fail

Thursday, February 1, 2018 3:27 AM, Yanglong Wu:
> And-operartion with a constant will
> always lead to fail for vlan filter.

It will work after  dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_VLAN_FILTER , right?

I don't understand what this patch tries to fix. 

> 
> fix:0074d02fc(convert to new Rx offloads API)
> Signed-off-by: Yanglong Wu <yanglong.wu at intel.com>
> ---
>  lib/librte_ether/rte_ethdev.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/librte_ether/rte_ethdev.c 
> b/lib/librte_ether/rte_ethdev.c index f285ba278..d468bb4a1 100644
> --- a/lib/librte_ether/rte_ethdev.c
> +++ b/lib/librte_ether/rte_ethdev.c
> @@ -2288,7 +2288,7 @@ rte_eth_dev_vlan_filter(uint16_t port_id, 
> uint16_t vlan_id, int on)
> 
>  	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
>  	dev = &rte_eth_devices[port_id];
> -	if (!(dev->data->dev_conf.rxmode.offloads &
> +	if (!(dev->data->dev_conf.rxmode.offloads ||
>  	      DEV_RX_OFFLOAD_VLAN_FILTER)) {
>  		RTE_PMD_DEBUG_TRACE("port %d: vlan-filtering disabled\n", port_id);
>  		return -ENOSYS;
> --
> 2.11.0



More information about the dev mailing list