Commit e290ed81 authored by Mark Rustad's avatar Mark Rustad Committed by David S. Miller

dcb: Use ifindex instead of ifname

Use ifindex instead of ifname in the DCB app ring. This makes for a smaller
data structure and faster comparisons. It also avoids possible issues when
a net device is renamed.
Signed-off-by: default avatarMark Rustad <mark.d.rustad@intel.com>
Signed-off-by: default avatarJohn Fastabend <john.r.fastabend@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e878d78b
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#include <linux/dcbnl.h> #include <linux/dcbnl.h>
struct dcb_app_type { struct dcb_app_type {
char name[IFNAMSIZ]; int ifindex;
struct dcb_app app; struct dcb_app app;
struct list_head list; struct list_head list;
}; };
......
...@@ -1255,7 +1255,7 @@ static int dcbnl_ieee_fill(struct sk_buff *skb, struct net_device *netdev) ...@@ -1255,7 +1255,7 @@ static int dcbnl_ieee_fill(struct sk_buff *skb, struct net_device *netdev)
spin_lock(&dcb_lock); spin_lock(&dcb_lock);
list_for_each_entry(itr, &dcb_app_list, list) { list_for_each_entry(itr, &dcb_app_list, list) {
if (strncmp(itr->name, netdev->name, IFNAMSIZ) == 0) { if (itr->ifindex == netdev->ifindex) {
err = nla_put(skb, DCB_ATTR_IEEE_APP, sizeof(itr->app), err = nla_put(skb, DCB_ATTR_IEEE_APP, sizeof(itr->app),
&itr->app); &itr->app);
if (err) { if (err) {
...@@ -1412,7 +1412,7 @@ static int dcbnl_cee_fill(struct sk_buff *skb, struct net_device *netdev) ...@@ -1412,7 +1412,7 @@ static int dcbnl_cee_fill(struct sk_buff *skb, struct net_device *netdev)
goto dcb_unlock; goto dcb_unlock;
list_for_each_entry(itr, &dcb_app_list, list) { list_for_each_entry(itr, &dcb_app_list, list) {
if (strncmp(itr->name, netdev->name, IFNAMSIZ) == 0) { if (itr->ifindex == netdev->ifindex) {
struct nlattr *app_nest = nla_nest_start(skb, struct nlattr *app_nest = nla_nest_start(skb,
DCB_ATTR_APP); DCB_ATTR_APP);
if (!app_nest) if (!app_nest)
...@@ -2050,7 +2050,7 @@ u8 dcb_getapp(struct net_device *dev, struct dcb_app *app) ...@@ -2050,7 +2050,7 @@ u8 dcb_getapp(struct net_device *dev, struct dcb_app *app)
list_for_each_entry(itr, &dcb_app_list, list) { list_for_each_entry(itr, &dcb_app_list, list) {
if (itr->app.selector == app->selector && if (itr->app.selector == app->selector &&
itr->app.protocol == app->protocol && itr->app.protocol == app->protocol &&
(strncmp(itr->name, dev->name, IFNAMSIZ) == 0)) { itr->ifindex == dev->ifindex) {
prio = itr->app.priority; prio = itr->app.priority;
break; break;
} }
...@@ -2073,7 +2073,7 @@ int dcb_setapp(struct net_device *dev, struct dcb_app *new) ...@@ -2073,7 +2073,7 @@ int dcb_setapp(struct net_device *dev, struct dcb_app *new)
struct dcb_app_type *itr; struct dcb_app_type *itr;
struct dcb_app_type event; struct dcb_app_type event;
memcpy(&event.name, dev->name, sizeof(event.name)); event.ifindex = dev->ifindex;
memcpy(&event.app, new, sizeof(event.app)); memcpy(&event.app, new, sizeof(event.app));
spin_lock(&dcb_lock); spin_lock(&dcb_lock);
...@@ -2081,7 +2081,7 @@ int dcb_setapp(struct net_device *dev, struct dcb_app *new) ...@@ -2081,7 +2081,7 @@ int dcb_setapp(struct net_device *dev, struct dcb_app *new)
list_for_each_entry(itr, &dcb_app_list, list) { list_for_each_entry(itr, &dcb_app_list, list) {
if (itr->app.selector == new->selector && if (itr->app.selector == new->selector &&
itr->app.protocol == new->protocol && itr->app.protocol == new->protocol &&
(strncmp(itr->name, dev->name, IFNAMSIZ) == 0)) { itr->ifindex == dev->ifindex) {
if (new->priority) if (new->priority)
itr->app.priority = new->priority; itr->app.priority = new->priority;
else { else {
...@@ -2101,7 +2101,7 @@ int dcb_setapp(struct net_device *dev, struct dcb_app *new) ...@@ -2101,7 +2101,7 @@ int dcb_setapp(struct net_device *dev, struct dcb_app *new)
} }
memcpy(&entry->app, new, sizeof(*new)); memcpy(&entry->app, new, sizeof(*new));
strncpy(entry->name, dev->name, IFNAMSIZ); entry->ifindex = dev->ifindex;
list_add(&entry->list, &dcb_app_list); list_add(&entry->list, &dcb_app_list);
} }
out: out:
...@@ -2127,7 +2127,7 @@ u8 dcb_ieee_getapp_mask(struct net_device *dev, struct dcb_app *app) ...@@ -2127,7 +2127,7 @@ u8 dcb_ieee_getapp_mask(struct net_device *dev, struct dcb_app *app)
list_for_each_entry(itr, &dcb_app_list, list) { list_for_each_entry(itr, &dcb_app_list, list) {
if (itr->app.selector == app->selector && if (itr->app.selector == app->selector &&
itr->app.protocol == app->protocol && itr->app.protocol == app->protocol &&
(strncmp(itr->name, dev->name, IFNAMSIZ) == 0)) { itr->ifindex == dev->ifindex) {
prio |= 1 << itr->app.priority; prio |= 1 << itr->app.priority;
} }
} }
...@@ -2150,7 +2150,7 @@ int dcb_ieee_setapp(struct net_device *dev, struct dcb_app *new) ...@@ -2150,7 +2150,7 @@ int dcb_ieee_setapp(struct net_device *dev, struct dcb_app *new)
struct dcb_app_type event; struct dcb_app_type event;
int err = 0; int err = 0;
memcpy(&event.name, dev->name, sizeof(event.name)); event.ifindex = dev->ifindex;
memcpy(&event.app, new, sizeof(event.app)); memcpy(&event.app, new, sizeof(event.app));
spin_lock(&dcb_lock); spin_lock(&dcb_lock);
...@@ -2159,7 +2159,7 @@ int dcb_ieee_setapp(struct net_device *dev, struct dcb_app *new) ...@@ -2159,7 +2159,7 @@ int dcb_ieee_setapp(struct net_device *dev, struct dcb_app *new)
if (itr->app.selector == new->selector && if (itr->app.selector == new->selector &&
itr->app.protocol == new->protocol && itr->app.protocol == new->protocol &&
itr->app.priority == new->priority && itr->app.priority == new->priority &&
(strncmp(itr->name, dev->name, IFNAMSIZ) == 0)) { itr->ifindex == dev->ifindex) {
err = -EEXIST; err = -EEXIST;
goto out; goto out;
} }
...@@ -2173,7 +2173,7 @@ int dcb_ieee_setapp(struct net_device *dev, struct dcb_app *new) ...@@ -2173,7 +2173,7 @@ int dcb_ieee_setapp(struct net_device *dev, struct dcb_app *new)
} }
memcpy(&entry->app, new, sizeof(*new)); memcpy(&entry->app, new, sizeof(*new));
strncpy(entry->name, dev->name, IFNAMSIZ); entry->ifindex = dev->ifindex;
list_add(&entry->list, &dcb_app_list); list_add(&entry->list, &dcb_app_list);
out: out:
spin_unlock(&dcb_lock); spin_unlock(&dcb_lock);
...@@ -2194,7 +2194,7 @@ int dcb_ieee_delapp(struct net_device *dev, struct dcb_app *del) ...@@ -2194,7 +2194,7 @@ int dcb_ieee_delapp(struct net_device *dev, struct dcb_app *del)
struct dcb_app_type event; struct dcb_app_type event;
int err = -ENOENT; int err = -ENOENT;
memcpy(&event.name, dev->name, sizeof(event.name)); event.ifindex = dev->ifindex;
memcpy(&event.app, del, sizeof(event.app)); memcpy(&event.app, del, sizeof(event.app));
spin_lock(&dcb_lock); spin_lock(&dcb_lock);
...@@ -2203,7 +2203,7 @@ int dcb_ieee_delapp(struct net_device *dev, struct dcb_app *del) ...@@ -2203,7 +2203,7 @@ int dcb_ieee_delapp(struct net_device *dev, struct dcb_app *del)
if (itr->app.selector == del->selector && if (itr->app.selector == del->selector &&
itr->app.protocol == del->protocol && itr->app.protocol == del->protocol &&
itr->app.priority == del->priority && itr->app.priority == del->priority &&
(strncmp(itr->name, dev->name, IFNAMSIZ) == 0)) { itr->ifindex == dev->ifindex) {
list_del(&itr->list); list_del(&itr->list);
kfree(itr); kfree(itr);
err = 0; err = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment