diff options
author | Faisal Latif <faisal.latif@intel.com> | 2010-02-12 14:55:03 -0500 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2010-02-19 14:38:14 -0500 |
commit | 6e10d2e407542605b2bdca43dc88c35fa8bd24b2 (patch) | |
tree | c79261a233ea24d7b3cee6fb011a6b8f5243a8e4 /drivers/infiniband/hw/nes/nes_cm.c | |
parent | 676ad585531e965416fd958747894541dabcec96 (diff) |
RDMA/nes: Use atomic counters for CM listener create and destroy
After running long iterative MPI tests, sometimes ethtool reports a
"CM Destroy Listener" count more than the "CM Create Listener" count.
This inconsistency is fixed by making counter variables atomic.
Signed-off-by: Faisal Latif <faisal.latif@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/nes/nes_cm.c')
-rw-r--r-- | drivers/infiniband/hw/nes/nes_cm.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c index 39468c277036..debd92c53d89 100644 --- a/drivers/infiniband/hw/nes/nes_cm.c +++ b/drivers/infiniband/hw/nes/nes_cm.c | |||
@@ -67,8 +67,8 @@ u32 cm_packets_dropped; | |||
67 | u32 cm_packets_retrans; | 67 | u32 cm_packets_retrans; |
68 | u32 cm_packets_created; | 68 | u32 cm_packets_created; |
69 | u32 cm_packets_received; | 69 | u32 cm_packets_received; |
70 | u32 cm_listens_created; | 70 | atomic_t cm_listens_created; |
71 | u32 cm_listens_destroyed; | 71 | atomic_t cm_listens_destroyed; |
72 | u32 cm_backlog_drops; | 72 | u32 cm_backlog_drops; |
73 | atomic_t cm_loopbacks; | 73 | atomic_t cm_loopbacks; |
74 | atomic_t cm_nodes_created; | 74 | atomic_t cm_nodes_created; |
@@ -1042,7 +1042,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core, | |||
1042 | kfree(listener); | 1042 | kfree(listener); |
1043 | listener = NULL; | 1043 | listener = NULL; |
1044 | ret = 0; | 1044 | ret = 0; |
1045 | cm_listens_destroyed++; | 1045 | atomic_inc(&cm_listens_destroyed); |
1046 | } else { | 1046 | } else { |
1047 | spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); | 1047 | spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); |
1048 | } | 1048 | } |
@@ -3172,7 +3172,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog) | |||
3172 | g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node); | 3172 | g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node); |
3173 | return err; | 3173 | return err; |
3174 | } | 3174 | } |
3175 | cm_listens_created++; | 3175 | atomic_inc(&cm_listens_created); |
3176 | } | 3176 | } |
3177 | 3177 | ||
3178 | cm_id->add_ref(cm_id); | 3178 | cm_id->add_ref(cm_id); |