]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
dcb: Add DCBX capabilities bitmask to the get_ieee response
authorJohn Fastabend <john.r.fastabend@intel.com>
Tue, 21 Jun 2011 07:34:31 +0000 (07:34 +0000)
committerJoe Jin <joe.jin@oracle.com>
Wed, 16 May 2012 07:28:12 +0000 (15:28 +0800)
Adding the capabilities bitmask to the get_ieee response allows
user space to determine the current DCBX mode. Either CEE or IEEE
this is useful with devices that support switching between modes
where knowing the current state is relevant.

Derived from work by Mark Rustad

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit c7797baf9f3900996ca800ab6298f95957bb4606)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
net/dcb/dcbnl.c

index 3609eacaf4cedd332cf11e50a7af5096cc45bc26..d6a145c002341d295f08fd4af66832a4e9f6cbc5 100644 (file)
@@ -1288,6 +1288,7 @@ static int dcbnl_ieee_get(struct net_device *netdev, struct nlattr **tb,
        struct nlattr *ieee, *app;
        struct dcb_app_type *itr;
        const struct dcbnl_rtnl_ops *ops = netdev->dcbnl_ops;
+       int dcbx;
        int err;
 
        if (!ops)
@@ -1338,6 +1339,12 @@ static int dcbnl_ieee_get(struct net_device *netdev, struct nlattr **tb,
                        }
                }
        }
+
+       if (netdev->dcbnl_ops->getdcbx)
+               dcbx = netdev->dcbnl_ops->getdcbx(netdev);
+       else
+               dcbx = -EOPNOTSUPP;
+
        spin_unlock(&dcb_lock);
        nla_nest_end(skb, app);
 
@@ -1366,6 +1373,11 @@ static int dcbnl_ieee_get(struct net_device *netdev, struct nlattr **tb,
        }
 
        nla_nest_end(skb, ieee);
+       if (dcbx >= 0) {
+               err = nla_put_u8(skb, DCB_ATTR_DCBX, dcbx);
+               if (err)
+                       goto nla_put_failure;
+       }
        nlmsg_end(skb, nlh);
 
        return rtnl_unicast(skb, &init_net, pid);