Skip to contentSkip to conversation

RDMA/nes: atomic counters for cm listener create and destroy

PATCH In review Faisal Latif 1 participant 1 message Feb 12, 2010 InfiniBand

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 RDMA/nes: atomic counters for cm listener create and destroy

Running long hour iterative MPI tests, sometimes ethtool statistics "CM Destroy Listener" count is more than "CM Create Listener". This inconsistency is fixed by making counter variable atomic.

---
 drivers/infiniband/hw/nes/nes.h     |    4 ++--
 drivers/infiniband/hw/nes/nes_cm.c  |    8 ++++----
 drivers/infiniband/hw/nes/nes_nic.c |    4 ++--
 3 files changed, 8 insertions(+), 8 deletions(-)
drivers/infiniband/hw/nes/nes.h +2 -2
index 9884056..cffdac4 100644
@@ -193,8 +193,8 @@ extern u32 cm_packets_created;
 extern u32 cm_packets_received;
 extern u32 cm_packets_dropped;
 extern u32 cm_packets_retrans;
-extern u32 cm_listens_created;
-extern u32 cm_listens_destroyed;
+extern atomic_t cm_listens_created;
+extern atomic_t cm_listens_destroyed;
 extern u32 cm_backlog_drops;
 extern atomic_t cm_loopbacks;
 extern atomic_t cm_nodes_created;
drivers/infiniband/hw/nes/nes_cm.c +4 -4
index 39468c2..debd92c 100644
@@ -67,8 +67,8 @@ u32 cm_packets_dropped;
 u32 cm_packets_retrans;
 u32 cm_packets_created;
 u32 cm_packets_received;
-u32 cm_listens_created;
-u32 cm_listens_destroyed;
+atomic_t cm_listens_created;
+atomic_t cm_listens_destroyed;
 u32 cm_backlog_drops;
 atomic_t cm_loopbacks;
 atomic_t cm_nodes_created;
@@ -1042,7 +1042,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core,
 		kfree(listener);
 		listener = NULL;
 		ret = 0;
-		cm_listens_destroyed++;
+		atomic_inc(&cm_listens_destroyed);
 	} else {
 		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)
 			g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node);
 			return err;
 		}
-		cm_listens_created++;
+		atomic_inc(&cm_listens_created);
 	}
 
 	cm_id->add_ref(cm_id);
drivers/infiniband/hw/nes/nes_nic.c +2 -2
index ab11027..3d550dc 100644
@@ -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_dropped;
 	target_stat_values[++index] = cm_packets_retrans;
-	target_stat_values[++index] = cm_listens_created;
-	target_stat_values[++index] = cm_listens_destroyed;
+	target_stat_values[++index] = atomic_read(&cm_listens_created);
+	target_stat_values[++index] = atomic_read(&cm_listens_destroyed);
 	target_stat_values[++index] = cm_backlog_drops;
 	target_stat_values[++index] = atomic_read(&cm_loopbacks);
 	target_stat_values[++index] = atomic_read(&cm_nodes_created);
Signature · 6 lines
1.5.3.3

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html