Skip to contentSkip to conversation

opensm/osm_sa_mcmember_record.c: optimization in zero mgid comparison

PATCH Applied Yevgeny Kliteynik 2 participants 4 messages Nov 1, 2009 2 messages not in the archive InfiniBand

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 opensm/osm_sa_mcmember_record.c: optimization in zero mgid comparison

Hi Sasha,

Small optimization in comparison to zero mgid in new mcast group creation.

---
 opensm/opensm/osm_sa_mcmember_record.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)
opensm/opensm/osm_sa_mcmember_record.c +4 -7
index dd01eed..18dc22c 100644
@@ -731,7 +731,7 @@ static ib_api_status_t mcmr_rcv_create_new_mgrp(IN osm_sa_t * sa,
 						OUT osm_mgrp_t ** pp_mgrp)
 {
 	ib_net16_t mlid;
-	unsigned zero_mgid, i;
+	unsigned zero_mgid = 1;
 	uint8_t scope;
 	ib_gid_t *p_mgid;
 	ib_api_status_t status = IB_SUCCESS;
@@ -740,12 +740,9 @@ static ib_api_status_t mcmr_rcv_create_new_mgrp(IN osm_sa_t * sa,
 	OSM_LOG_ENTER(sa->p_log);
 
 	/* but what if the given MGID was not 0 ? */
-	zero_mgid = 1;
-	for (i = 0; i < sizeof(p_recvd_mcmember_rec->mgid); i++)
-		if (p_recvd_mcmember_rec->mgid.raw[i] != 0) {
-			zero_mgid = 0;
-			break;
-		}
+	if (p_recvd_mcmember_rec->mgid.unicast.prefix != 0 ||
+	    p_recvd_mcmember_rec->mgid.unicast.interface_id != 0)
+		zero_mgid = 0;
 
 	/*
 	   we allocate a new mlid number before we might use it
Signature · 6 lines
1.5.1.4

--
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

A message that is not in the archive (sent off-list or not yet received): 4AED56C0.4080006-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org

#2 lore raw
Quoted 6 lines · Yevgeny Kliteynik

Hi Sasha,

Small optimization in comparison to zero mgid in new mcast group creation.

Applied. Thanks.

Also see below.

Quoted 20 lines
---
 opensm/opensm/osm_sa_mcmember_record.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)
opensm/opensm/osm_sa_mcmember_record.c +1 -1
index dd01eed..18dc22c 100644
@@ -731,7 +731,7 @@ static ib_api_status_t mcmr_rcv_create_new_mgrp(IN osm_sa_t * sa,
 						OUT osm_mgrp_t ** pp_mgrp)
 {
 	ib_net16_t mlid;
-	unsigned zero_mgid, i;
+	unsigned zero_mgid = 1;
 	uint8_t scope;
 	ib_gid_t *p_mgid;
 	ib_api_status_t status = IB_SUCCESS;
@@ -740,12 +740,9 @@ static ib_api_status_t mcmr_rcv_create_new_mgrp(IN osm_sa_t * sa,
 	OSM_LOG_ENTER(sa->p_log);
 

opensm/opensm/osm_sa_mcmember_record.c static ib_api_status_t mcmr_rcv_create_new_mgrp(IN osm_sa_t * sa, · line 745

Quoted 10 lines
opensm/opensm/osm_sa_mcmember_record.c +3 -6
 	/* but what if the given MGID was not 0 ? */
-	zero_mgid = 1;
-	for (i = 0; i < sizeof(p_recvd_mcmember_rec->mgid); i++)
-		if (p_recvd_mcmember_rec->mgid.raw[i] != 0) {
-			zero_mgid = 0;
-			break;
-		}
+	if (p_recvd_mcmember_rec->mgid.unicast.prefix != 0 ||
+	    p_recvd_mcmember_rec->mgid.unicast.interface_id != 0)
+		zero_mgid = 0;

Actually you can use 'ib_zero_gid' here, something like:

	zero_mgid = !memcmp(&p_recvd_mcmember_rec->mgid, &ib_zero_gid,
			    sizeof(ib_git_t));

Sasha
--
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

#3 lore raw
Quoted 45 lines · Sasha Khapyorsky
Quoted 6 lines · Yevgeny Kliteynik

Hi Sasha,

Small optimization in comparison to zero mgid in new mcast group creation.

Applied. Thanks.

Also see below.

Quoted 20 lines
---
 opensm/opensm/osm_sa_mcmember_record.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)
opensm/opensm/osm_sa_mcmember_record.c +1 -1
index dd01eed..18dc22c 100644
@@ -731,7 +731,7 @@ static ib_api_status_t mcmr_rcv_create_new_mgrp(IN osm_sa_t * sa,
 						OUT osm_mgrp_t ** pp_mgrp)
 {
 	ib_net16_t mlid;
-	unsigned zero_mgid, i;
+	unsigned zero_mgid = 1;
 	uint8_t scope;
 	ib_gid_t *p_mgid;
 	ib_api_status_t status = IB_SUCCESS;
@@ -740,12 +740,9 @@ static ib_api_status_t mcmr_rcv_create_new_mgrp(IN osm_sa_t * sa,
 	OSM_LOG_ENTER(sa->p_log);
 

opensm/opensm/osm_sa_mcmember_record.c static ib_api_status_t mcmr_rcv_create_new_mgrp(IN osm_sa_t * sa, · line 745

Quoted 10 lines
opensm/opensm/osm_sa_mcmember_record.c +3 -6
 	/* but what if the given MGID was not 0 ? */
-	zero_mgid = 1;
-	for (i = 0; i < sizeof(p_recvd_mcmember_rec->mgid); i++)
-		if (p_recvd_mcmember_rec->mgid.raw[i] != 0) {
-			zero_mgid = 0;
-			break;
-		}
+	if (p_recvd_mcmember_rec->mgid.unicast.prefix != 0 ||
+	    p_recvd_mcmember_rec->mgid.unicast.interface_id != 0)
+		zero_mgid = 0;

Actually you can use 'ib_zero_gid' here, something like:

Quoted 2 lines
	zero_mgid = !memcmp(&p_recvd_mcmember_rec->mgid, &ib_zero_gid,
			    sizeof(ib_git_t));

Oh, I didn't know that it existed :)
BTW, it appears that we already have such function:

static inline boolean_t ib_gid_is_notzero(IN const ib_gid_t * p_gid)

So it might as well just be something like that:

opensm/opensm/osm_sa_mcmember_record.c | 10 +---------

1 files changed, 1 insertions(+), 9 deletions(-)
opensm/opensm/osm_sa_mcmember_record.c +0 -0
index 45e743f..617f352 100644
@@ -731,22 +731,14 @@ static ib_api_status_t mcmr_rcv_create_new_mgrp(IN osm_sa_t * sa,

OUT osm_mgrp_t ** pp_mgrp)

{
	ib_net16_t mlid;
-	unsigned zero_mgid, i;
	uint8_t scope;
	ib_gid_t *p_mgid;
	ib_api_status_t status = IB_SUCCESS;
	ib_member_rec_t mcm_rec = *p_recvd_mcmember_rec;	/* copy for modifications */

+ boolean_t zero_mgid = !ib_gid_is_notzero(&p_recvd_mcmember_rec->mgid);

	OSM_LOG_ENTER(sa->p_log);

- /* but what if the given MGID was not 0 ? */
- zero_mgid = 1;
- for (i = 0; i < sizeof(p_recvd_mcmember_rec->mgid); i++)
- if (p_recvd_mcmember_rec->mgid.raw[i] != 0) {
- zero_mgid = 0;
- break;
- }
-
/*
we allocate a new mlid number before we might use it for MGID ...

Want me to send a patch against the new master?

-- Yevgeny

Quoted 2 lines

Sasha

--
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

A message that is not in the archive (sent off-list or not yet received): 4AEDEEEB.8010401-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org

#5 lore raw
Quoted 35 lines · Yevgeny Kliteynik

So it might as well just be something like that:

 opensm/opensm/osm_sa_mcmember_record.c |   10 +---------
 1 files changed, 1 insertions(+), 9 deletions(-)
opensm/opensm/osm_sa_mcmember_record.c +1 -9
index 45e743f..617f352 100644
@@ -731,22 +731,14 @@ static ib_api_status_t mcmr_rcv_create_new_mgrp(IN osm_sa_t * sa,
 						OUT osm_mgrp_t ** pp_mgrp)
 {
 	ib_net16_t mlid;
-	unsigned zero_mgid, i;
 	uint8_t scope;
 	ib_gid_t *p_mgid;
 	ib_api_status_t status = IB_SUCCESS;
 	ib_member_rec_t mcm_rec = *p_recvd_mcmember_rec;	/* copy for modifications */
+	boolean_t zero_mgid = !ib_gid_is_notzero(&p_recvd_mcmember_rec->mgid);
 
 	OSM_LOG_ENTER(sa->p_log);
 
-	/* but what if the given MGID was not 0 ? */
-	zero_mgid = 1;
-	for (i = 0; i < sizeof(p_recvd_mcmember_rec->mgid); i++)
-		if (p_recvd_mcmember_rec->mgid.raw[i] != 0) {
-			zero_mgid = 0;
-			break;
-		}
-
 	/*
 	   we allocate a new mlid number before we might use it
 	   for MGID ...
Quoted 1 line

Want me to send a patch against the new master?

Yes please. Also you can eliminate 'zero_mgid' variable - it is used only once.

Sasha
--
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