bridge: Simplify pvid checks.
Currently, if the pvid is not set, we return an illegal vlan value even though the pvid value is set to 0. Since pvid of 0 is currently invalid, just return 0 instead. This makes the current and future checks simpler. Signed-off-by: Vladislav Yasevich <vyasevic@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
96a20d9d7f
Коммит
3df6bf45ec
|
@ -643,11 +643,8 @@ static inline int br_vlan_get_tag(const struct sk_buff *skb, u16 *vid)
|
|||
|
||||
static inline u16 br_get_pvid(const struct net_port_vlans *v)
|
||||
{
|
||||
/* Return just the VID if it is set, or VLAN_N_VID (invalid vid) if
|
||||
* vid wasn't set
|
||||
*/
|
||||
smp_rmb();
|
||||
return v->pvid ?: VLAN_N_VID;
|
||||
return v->pvid;
|
||||
}
|
||||
|
||||
static inline int br_vlan_enabled(struct net_bridge *br)
|
||||
|
@ -746,7 +743,7 @@ static inline u16 br_vlan_get_tag(const struct sk_buff *skb, u16 *tag)
|
|||
}
|
||||
static inline u16 br_get_pvid(const struct net_port_vlans *v)
|
||||
{
|
||||
return VLAN_N_VID; /* Returns invalid vid */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int br_vlan_enabled(struct net_bridge *br)
|
||||
|
|
|
@ -223,7 +223,7 @@ bool br_allowed_ingress(struct net_bridge *br, struct net_port_vlans *v,
|
|||
* See if pvid is set on this port. That tells us which
|
||||
* vlan untagged or priority-tagged traffic belongs to.
|
||||
*/
|
||||
if (pvid == VLAN_N_VID)
|
||||
if (!pvid)
|
||||
goto drop;
|
||||
|
||||
/* PVID is set on this port. Any untagged or priority-tagged
|
||||
|
@ -292,7 +292,7 @@ bool br_should_learn(struct net_bridge_port *p, struct sk_buff *skb, u16 *vid)
|
|||
|
||||
if (!*vid) {
|
||||
*vid = br_get_pvid(v);
|
||||
if (*vid == VLAN_N_VID)
|
||||
if (!*vid)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
|
Загрузка…
Ссылка в новой задаче