提交 4315d834 编写于 作者: T Tom Herbert 提交者: David S. Miller

net: Fix rxq ref counting

The rx->count reference is used to track reference counts to the
number of rx-queue kobjects created for the device.  This patch
eliminates initialization of the counter in netif_alloc_rx_queues
and instead increments the counter each time a kobject is created.
This is now symmetric with the decrement that is done when an object is
released.
Signed-off-by: NTom Herbert <therbert@google.com>
Acked-by: NEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 a131d822
...@@ -5024,7 +5024,6 @@ static int netif_alloc_rx_queues(struct net_device *dev) ...@@ -5024,7 +5024,6 @@ static int netif_alloc_rx_queues(struct net_device *dev)
return -ENOMEM; return -ENOMEM;
} }
dev->_rx = rx; dev->_rx = rx;
atomic_set(&rx->count, count);
/* /*
* Set a pointer to first element in the array which holds the * Set a pointer to first element in the array which holds the
......
...@@ -726,6 +726,7 @@ static struct kobj_type rx_queue_ktype = { ...@@ -726,6 +726,7 @@ static struct kobj_type rx_queue_ktype = {
static int rx_queue_add_kobject(struct net_device *net, int index) static int rx_queue_add_kobject(struct net_device *net, int index)
{ {
struct netdev_rx_queue *queue = net->_rx + index; struct netdev_rx_queue *queue = net->_rx + index;
struct netdev_rx_queue *first = queue->first;
struct kobject *kobj = &queue->kobj; struct kobject *kobj = &queue->kobj;
int error = 0; int error = 0;
...@@ -738,6 +739,7 @@ static int rx_queue_add_kobject(struct net_device *net, int index) ...@@ -738,6 +739,7 @@ static int rx_queue_add_kobject(struct net_device *net, int index)
} }
kobject_uevent(kobj, KOBJ_ADD); kobject_uevent(kobj, KOBJ_ADD);
atomic_inc(&first->count);
return error; return error;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册