[ofa-general] [PATCHv3] OpenSM/osm_sa_mcmember_record.c: Collapse all scopes when consolidating IPv6 SNM

Hal Rosenstock hrosenstock at xsigo.com
Fri May 30 13:22:14 PDT 2008


OpenSM/osm_sa_mcmember_record.c: In __search_mgrp_by_mgid, collapse all
scopes when consolidating IPv6 SNM

v2 compares masked prefixes rather than actual prefix in MCMemberRecord MGID and MGRP
v1 had a minor comment change

Patch is cumulative on minor improvement patch to this file

Signed-off-by: Hal Rosenstock <hal at xsigo.com>

--- opensm/osm_sa_mcmember_record.c.1	2008-05-30 03:58:01.129544000 -0700
+++ opensm/osm_sa_mcmember_record.c	2008-05-30 13:13:59.344954000 -0700
@@ -1083,19 +1083,21 @@
 
 		if (sa->p_subn->opt.consolidate_ipv6_snm_req) {
 			/* Special Case IPv6 Solicited Node Multicast (SNM) addresses */
-			/* 0xff12601bXXXX0000 : 0x00000001ffYYYYYY */
-			/* Where XXXX is the P_Key and
+			/* 0xff1Z601bXXXX0000 : 0x00000001ffYYYYYY */
+			/* Where Z is the scope, XXXX is the P_Key, and
 			 * YYYYYY is the last 24 bits of the port guid */
-#define PREFIX_MASK (0xff10601b00000000ULL)
+#define PREFIX_MASK (0xff10ffff00000000ULL)
+#define PREFIX_SIGNATURE (0xff10601b00000000ULL)
 #define INT_ID_MASK (0x00000001ff000000ULL)
 			uint64_t g_prefix = cl_ntoh64(p_mgrp->mcmember_rec.mgid.unicast.prefix);
 			uint64_t g_interface_id = cl_ntoh64(p_mgrp->mcmember_rec.mgid.unicast.interface_id);
 			uint64_t rcv_prefix = cl_ntoh64(p_recvd_mgid->unicast.prefix);
 			uint64_t rcv_interface_id = cl_ntoh64(p_recvd_mgid->unicast.interface_id);
 
-			if ((rcv_prefix & PREFIX_MASK) == PREFIX_MASK &&
+			if ((rcv_prefix & PREFIX_MASK) == PREFIX_SIGNATURE &&
 			    (rcv_interface_id & INT_ID_MASK) == INT_ID_MASK &&
-			    g_prefix == rcv_prefix &&
+			    (g_prefix & PREFIX_MASK) ==
+			     (rcv_prefix && PREFIX_MASK) &&
 			    (g_interface_id & INT_ID_MASK) ==
 			     (rcv_interface_id & INT_ID_MASK)) {
 				OSM_LOG(sa->p_log, OSM_LOG_INFO,





More information about the general mailing list