Subject: Re: [PATCH net 3/4] bridge: Fix the way the PVID is referenced

From: Vlad Yasevich <[email-masked]>
Date: Tue, 10 Sep 2013 10:24:00 -0400

On 09/10/2013 06:37 AM, Toshiaki Makita wrote:
> We are using the VLAN_TAG_PRESENT bit to detect whether the PVID is
> set or not at br_get_pvid(), while we don't care about the bit in
> adding/deleting the PVID, which makes it impossible to forward any
> incomming untagged frame with vlan_filtering enabled.
>
> Since vid 0 cannot be used for the PVID, we can use vid 0 to indicate
> that the PVID is not set, which is slightly more efficient than using
> the VLAN_TAG_PRESENT.

Yes, that is simpler.
>
> Fix the problem by getting rid of using the VLAN_TAG_PRESENT.
>
> Signed-off-by: Toshiaki Makita <[email-masked]>

Reviewed-by: Vlad Yasevich <[email-masked]>

-vlad

> ---
>   net/bridge/br_private.h | 4 +---
>   1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
> index 598cb0b..435ca4d 100644
> --- a/net/bridge/br_private.h
> +++ b/net/bridge/br_private.h
> @@ -646,9 +646,7 @@ static inline u16 br_get_pvid(const struct net_port_vlans *v)
>   	 * vid wasn't set
>   	 */
>   	smp_rmb();
> -	return (v->pvid & VLAN_TAG_PRESENT) ?
> -			(v->pvid & ~VLAN_TAG_PRESENT) :
> -			VLAN_N_VID;
> +	return v->pvid ?: VLAN_N_VID;
>   }
>
>   #else
>