diff options
Diffstat (limited to 'net/dcb')
| -rw-r--r-- | net/dcb/dcbnl.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/net/dcb/dcbnl.c b/net/dcb/dcbnl.c index 36f37af63bf2..8dfa1da7c40d 100644 --- a/net/dcb/dcbnl.c +++ b/net/dcb/dcbnl.c | |||
| @@ -178,6 +178,7 @@ static const struct nla_policy dcbnl_ieee_policy[DCB_ATTR_IEEE_MAX + 1] = { | |||
| 178 | [DCB_ATTR_IEEE_ETS] = {.len = sizeof(struct ieee_ets)}, | 178 | [DCB_ATTR_IEEE_ETS] = {.len = sizeof(struct ieee_ets)}, |
| 179 | [DCB_ATTR_IEEE_PFC] = {.len = sizeof(struct ieee_pfc)}, | 179 | [DCB_ATTR_IEEE_PFC] = {.len = sizeof(struct ieee_pfc)}, |
| 180 | [DCB_ATTR_IEEE_APP_TABLE] = {.type = NLA_NESTED}, | 180 | [DCB_ATTR_IEEE_APP_TABLE] = {.type = NLA_NESTED}, |
| 181 | [DCB_ATTR_IEEE_MAXRATE] = {.len = sizeof(struct ieee_maxrate)}, | ||
| 181 | }; | 182 | }; |
| 182 | 183 | ||
| 183 | static const struct nla_policy dcbnl_ieee_app[DCB_ATTR_IEEE_APP_MAX + 1] = { | 184 | static const struct nla_policy dcbnl_ieee_app[DCB_ATTR_IEEE_APP_MAX + 1] = { |
| @@ -1246,6 +1247,17 @@ static int dcbnl_ieee_fill(struct sk_buff *skb, struct net_device *netdev) | |||
| 1246 | goto nla_put_failure; | 1247 | goto nla_put_failure; |
| 1247 | } | 1248 | } |
| 1248 | 1249 | ||
| 1250 | if (ops->ieee_getmaxrate) { | ||
| 1251 | struct ieee_maxrate maxrate; | ||
| 1252 | err = ops->ieee_getmaxrate(netdev, &maxrate); | ||
| 1253 | if (!err) { | ||
| 1254 | err = nla_put(skb, DCB_ATTR_IEEE_MAXRATE, | ||
| 1255 | sizeof(maxrate), &maxrate); | ||
| 1256 | if (err) | ||
| 1257 | goto nla_put_failure; | ||
| 1258 | } | ||
| 1259 | } | ||
| 1260 | |||
| 1249 | if (ops->ieee_getpfc) { | 1261 | if (ops->ieee_getpfc) { |
| 1250 | struct ieee_pfc pfc; | 1262 | struct ieee_pfc pfc; |
| 1251 | err = ops->ieee_getpfc(netdev, &pfc); | 1263 | err = ops->ieee_getpfc(netdev, &pfc); |
| @@ -1601,6 +1613,14 @@ static int dcbnl_ieee_set(struct net_device *netdev, struct nlattr **tb, | |||
| 1601 | goto err; | 1613 | goto err; |
| 1602 | } | 1614 | } |
| 1603 | 1615 | ||
| 1616 | if (ieee[DCB_ATTR_IEEE_MAXRATE] && ops->ieee_setmaxrate) { | ||
| 1617 | struct ieee_maxrate *maxrate = | ||
| 1618 | nla_data(ieee[DCB_ATTR_IEEE_MAXRATE]); | ||
| 1619 | err = ops->ieee_setmaxrate(netdev, maxrate); | ||
| 1620 | if (err) | ||
| 1621 | goto err; | ||
| 1622 | } | ||
| 1623 | |||
| 1604 | if (ieee[DCB_ATTR_IEEE_PFC] && ops->ieee_setpfc) { | 1624 | if (ieee[DCB_ATTR_IEEE_PFC] && ops->ieee_setpfc) { |
| 1605 | struct ieee_pfc *pfc = nla_data(ieee[DCB_ATTR_IEEE_PFC]); | 1625 | struct ieee_pfc *pfc = nla_data(ieee[DCB_ATTR_IEEE_PFC]); |
| 1606 | err = ops->ieee_setpfc(netdev, pfc); | 1626 | err = ops->ieee_setpfc(netdev, pfc); |
