Forwarding bcast/mcast CCS requests
authorFilippo Gioachin <gioachin@uiuc.edu>
Wed, 24 Mar 2010 01:17:12 +0000 (20:17 -0500)
committerFilippo Gioachin <gioachin@uiuc.edu>
Wed, 24 Mar 2010 01:17:12 +0000 (20:17 -0500)
src/conv-ccs/conv-ccs.c

index 4fe6cb81badf9d1378f042eb9e1a9adcdd2b11a1..be3d1964c670651aea5386886e64cedccd45899d 100644 (file)
@@ -323,7 +323,12 @@ static void bg_req_fw_handler(char *msg) {
   int offset = CmiReservedHeaderSize + sizeof(CcsImplHeader);
   CcsImplHeader *hdr = (CcsImplHeader *)(msg+CmiReservedHeaderSize);
   int destPE = (int)ChMessageInt(hdr->pe);
-  CmiAssert(destPE >= 0); // FixME: should cover also broadcast and multicast -> create generic function to extract destpe
+  if (destPE == -1) destPE = 0;
+  if (destPE < -1) {
+    ChMessageInt_t *pes_nbo = (ChMessageInt_t *)(msg+CmiReservedHeaderSize+sizeof(CcsImplHeader));
+    destPE = ChMessageInt(pes_nbo[0]);
+  }
+  //CmiAssert(destPE >= 0); // FixME: should cover also broadcast and multicast -> create generic function to extract destpe
   (((CmiBlueGeneMsgHeader*)msg)->tID) = 0;
   (((CmiBlueGeneMsgHeader*)msg)->n) = 0;
   (((CmiBlueGeneMsgHeader*)msg)->flag) = 0;