Skip to content

Commit

Permalink
bridge: Simplify pvid checks.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Vlad Yasevich authored and David S. Miller committed Oct 6, 2014
1 parent 96a20d9 commit 3df6bf4
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 7 deletions.
7 changes: 2 additions & 5 deletions net/bridge/br_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions net/bridge/br_vlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 3df6bf4

Please sign in to comment.