Commit 6e10d2e4 authored by Faisal Latif's avatar Faisal Latif Committed by Roland Dreier

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: default avatarFaisal Latif <faisal.latif@intel.com>
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 676ad585
...@@ -193,8 +193,8 @@ extern u32 cm_packets_created; ...@@ -193,8 +193,8 @@ extern u32 cm_packets_created;
extern u32 cm_packets_received; extern u32 cm_packets_received;
extern u32 cm_packets_dropped; extern u32 cm_packets_dropped;
extern u32 cm_packets_retrans; extern u32 cm_packets_retrans;
extern u32 cm_listens_created; extern atomic_t cm_listens_created;
extern u32 cm_listens_destroyed; extern atomic_t cm_listens_destroyed;
extern u32 cm_backlog_drops; extern u32 cm_backlog_drops;
extern atomic_t cm_loopbacks; extern atomic_t cm_loopbacks;
extern atomic_t cm_nodes_created; extern atomic_t cm_nodes_created;
......
...@@ -67,8 +67,8 @@ u32 cm_packets_dropped; ...@@ -67,8 +67,8 @@ u32 cm_packets_dropped;
u32 cm_packets_retrans; u32 cm_packets_retrans;
u32 cm_packets_created; u32 cm_packets_created;
u32 cm_packets_received; u32 cm_packets_received;
u32 cm_listens_created; atomic_t cm_listens_created;
u32 cm_listens_destroyed; atomic_t cm_listens_destroyed;
u32 cm_backlog_drops; u32 cm_backlog_drops;
atomic_t cm_loopbacks; atomic_t cm_loopbacks;
atomic_t cm_nodes_created; atomic_t cm_nodes_created;
...@@ -1042,7 +1042,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core, ...@@ -1042,7 +1042,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core,
kfree(listener); kfree(listener);
listener = NULL; listener = NULL;
ret = 0; ret = 0;
cm_listens_destroyed++; atomic_inc(&cm_listens_destroyed);
} else { } else {
spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
} }
...@@ -3172,7 +3172,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog) ...@@ -3172,7 +3172,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog)
g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node); g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node);
return err; return err;
} }
cm_listens_created++; atomic_inc(&cm_listens_created);
} }
cm_id->add_ref(cm_id); cm_id->add_ref(cm_id);
......
...@@ -1230,8 +1230,8 @@ static void nes_netdev_get_ethtool_stats(struct net_device *netdev, ...@@ -1230,8 +1230,8 @@ static void nes_netdev_get_ethtool_stats(struct net_device *netdev,
target_stat_values[++index] = cm_packets_received; target_stat_values[++index] = cm_packets_received;
target_stat_values[++index] = cm_packets_dropped; target_stat_values[++index] = cm_packets_dropped;
target_stat_values[++index] = cm_packets_retrans; target_stat_values[++index] = cm_packets_retrans;
target_stat_values[++index] = cm_listens_created; target_stat_values[++index] = atomic_read(&cm_listens_created);
target_stat_values[++index] = cm_listens_destroyed; target_stat_values[++index] = atomic_read(&cm_listens_destroyed);
target_stat_values[++index] = cm_backlog_drops; target_stat_values[++index] = cm_backlog_drops;
target_stat_values[++index] = atomic_read(&cm_loopbacks); target_stat_values[++index] = atomic_read(&cm_loopbacks);
target_stat_values[++index] = atomic_read(&cm_nodes_created); target_stat_values[++index] = atomic_read(&cm_nodes_created);
......
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