]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/lib/net/ctp/CtpForwardingEngineP.nc
Update git tag release_tinyos_2_1_0_0 for consistency with CVS tag of same name.
[tinyos-2.x.git] / tos / lib / net / ctp / CtpForwardingEngineP.nc
index 55893c7c9b0b950212650405eae705f814f2d174..16c1803cc4173593671f793623acb9e0360ab830 100644 (file)
@@ -220,7 +220,7 @@ implementation {
      its queue entry is pointed to by clientPtrs. */
 
   fe_queue_entry_t clientEntries[CLIENT_COUNT];
-  fe_queue_entry_t* clientPtrs[CLIENT_COUNT];
+  fe_queue_entry_t* ONE_NOK clientPtrs[CLIENT_COUNT];
 
   /* The loopback message is for when a collection roots calls
      Send.send. Since Send passes a pointer but Receive allows
@@ -229,7 +229,7 @@ implementation {
      See sendTask(). */
      
   message_t loopbackMsg;
-  message_t* loopbackMsgPtr;
+  message_t* ONE_NOK loopbackMsgPtr;
 
   command error_t Init.init() {
     int i;
@@ -642,7 +642,7 @@ implementation {
    * message in the pool, it returns the passed message and does not
    * put it on the send queue.
    */
-  message_t* forward(message_t* m) {
+  message_t* ONE forward(message_t* ONE m) {
     if (call MessagePool.empty()) {
       dbg("Route", "%s cannot forward, message pool empty.\n", __FUNCTION__);
       // send a debug message to the uart
@@ -684,9 +684,11 @@ implementation {
         // Loop-detection code:
         if (call CtpInfo.getEtx(&gradient) == SUCCESS) {
           // We only check for loops if we know our own metric
-          if (call CtpPacket.getEtx(m) < gradient) {
-            // The incoming packet's metric (gradient) is less than our
-            // own gradient.  Trigger a route update and backoff.
+          if (call CtpPacket.getEtx(m) <= gradient) {
+            // If our etx metric is less than or equal to the etx value
+           // on the packet (etx of the previous hop node), then we believe
+           // we are in a loop.
+           // Trigger a route update and backoff.
             call CtpInfo.triggerImmediateRouteUpdate();
             startRetxmitTimer(LOOPY_WINDOW, LOOPY_OFFSET);
             call CollectionDebug.logEventMsg(NET_C_FE_LOOP_DETECTED,
@@ -714,9 +716,9 @@ implementation {
     }
 
     // NB: at this point, we have a resource acquistion problem.
-    // Trigger an immediate route update, log the event, and drop the
+    // Log the event, and drop the
     // packet on the floor.
-    call CtpInfo.triggerImmediateRouteUpdate();
+
     call CollectionDebug.logEvent(NET_C_FE_SEND_QUEUE_FULL);
     return m;
   }
@@ -748,7 +750,7 @@ implementation {
     call CollectionDebug.logEventMsg(NET_C_FE_RCV_MSG,
                                         call CollectionPacket.getSequenceNumber(msg), 
                                         call CollectionPacket.getOrigin(msg), 
-                                         call AMPacket.destination(msg));
+                                    thl--);
     if (len > call SubSend.maxPayloadLength()) {
       return msg;
     }
@@ -799,8 +801,9 @@ implementation {
 
     // Check for the pull bit (P) [TEP123] and act accordingly.  This
     // check is made for all packets, not just ones addressed to us.
-    if (call CtpPacket.option(msg, CTP_OPT_PULL))
+    if (call CtpPacket.option(msg, CTP_OPT_PULL)) {
       call CtpInfo.triggerRouteUpdate();
+    }
 
     call CtpInfo.setNeighborCongested(proximalSrc, call CtpPacket.option(msg, CTP_OPT_ECN));
     return signal Snoop.receive[call CtpPacket.getType(msg)] 
@@ -919,7 +922,7 @@ implementation {
 
   default event bool
   Intercept.forward[collection_id_t collectid](message_t* msg, void* payload, 
-                                               uint16_t len) {
+                                               uint8_t len) {
     return TRUE;
   }