net: bridge: Extend br_vlan_get_pvid() for bridge ports
authorIdo Schimmel <idosch@mellanox.com>
Wed, 28 Nov 2018 20:06:58 +0000 (20:06 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 1 Dec 2018 01:06:28 +0000 (17:06 -0800)
Currently, the function only works for the bridge device itself, but
subsequent patches will need to be able to query the PVID of a given
bridge port, so extend the function.

Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Reviewed-by: Petr Machata <petrm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_vlan.c

index b21838b51220683e3e9ee4b0bf8d046429e389d3..48f50d7ac624eb5c4835145c45f819d742ff9675 100644 (file)
@@ -1217,9 +1217,13 @@ void br_vlan_get_stats(const struct net_bridge_vlan *v,
 int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid)
 {
        struct net_bridge_vlan_group *vg;
+       struct net_bridge_port *p;
 
        ASSERT_RTNL();
-       if (netif_is_bridge_master(dev))
+       p = br_port_get_check_rtnl(dev);
+       if (p)
+               vg = nbp_vlan_group(p);
+       else if (netif_is_bridge_master(dev))
                vg = br_vlan_group(netdev_priv(dev));
        else
                return -EINVAL;