diff options
author | Tom Herbert <therbert@google.com> | 2010-10-07 06:09:10 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-10-08 17:34:32 -0400 |
commit | 4315d834c1496ddca977e9e22002b77c85bfec2c (patch) | |
tree | b5d36552a72ac630e7024d855e564e63db93bb6a /net/core | |
parent | a131d82266e77b8eb8a2dab930a94ed0de9e91b0 (diff) |
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: Tom Herbert <therbert@google.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev.c | 1 | ||||
-rw-r--r-- | net/core/net-sysfs.c | 2 |
2 files changed, 2 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 4962c8afd606..193eafaabd88 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -5024,7 +5024,6 @@ static int netif_alloc_rx_queues(struct net_device *dev) | |||
5024 | return -ENOMEM; | 5024 | return -ENOMEM; |
5025 | } | 5025 | } |
5026 | dev->_rx = rx; | 5026 | dev->_rx = rx; |
5027 | atomic_set(&rx->count, count); | ||
5028 | 5027 | ||
5029 | /* | 5028 | /* |
5030 | * Set a pointer to first element in the array which holds the | 5029 | * Set a pointer to first element in the array which holds the |
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index fa81fd0a488f..b143173e3eb2 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c | |||
@@ -726,6 +726,7 @@ static struct kobj_type rx_queue_ktype = { | |||
726 | static int rx_queue_add_kobject(struct net_device *net, int index) | 726 | static int rx_queue_add_kobject(struct net_device *net, int index) |
727 | { | 727 | { |
728 | struct netdev_rx_queue *queue = net->_rx + index; | 728 | struct netdev_rx_queue *queue = net->_rx + index; |
729 | struct netdev_rx_queue *first = queue->first; | ||
729 | struct kobject *kobj = &queue->kobj; | 730 | struct kobject *kobj = &queue->kobj; |
730 | int error = 0; | 731 | int error = 0; |
731 | 732 | ||
@@ -738,6 +739,7 @@ static int rx_queue_add_kobject(struct net_device *net, int index) | |||
738 | } | 739 | } |
739 | 740 | ||
740 | kobject_uevent(kobj, KOBJ_ADD); | 741 | kobject_uevent(kobj, KOBJ_ADD); |
742 | atomic_inc(&first->count); | ||
741 | 743 | ||
742 | return error; | 744 | return error; |
743 | } | 745 | } |