netprio_cgroup: don't allocate prio table when a device is registered

So we delay the allocation till the priority is set through cgroup,
and this makes skb_update_priority() faster when it's not set.

This also eliminates an off-by-one bug similar with the one fixed
in the previous patch.

Origionally-authored-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: "David S. Miller" <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Neil Horman 2012-02-10 05:43:37 +00:00 committed by David S. Miller
parent a87dfe14a7
commit f5c38208d3
1 changed files with 0 additions and 6 deletions

View File

@ -271,7 +271,6 @@ static int netprio_device_event(struct notifier_block *unused,
{ {
struct net_device *dev = ptr; struct net_device *dev = ptr;
struct netprio_map *old; struct netprio_map *old;
u32 max_len = atomic_read(&max_prioidx);
/* /*
* Note this is called with rtnl_lock held so we have update side * Note this is called with rtnl_lock held so we have update side
@ -279,11 +278,6 @@ static int netprio_device_event(struct notifier_block *unused,
*/ */
switch (event) { switch (event) {
case NETDEV_REGISTER:
if (max_len)
extend_netdev_table(dev, max_len);
break;
case NETDEV_UNREGISTER: case NETDEV_UNREGISTER:
old = rtnl_dereference(dev->priomap); old = rtnl_dereference(dev->priomap);
RCU_INIT_POINTER(dev->priomap, NULL); RCU_INIT_POINTER(dev->priomap, NULL);