Hi,

When we enable LACP on aggregations over ce driver, it prompt a warning like:

     aggr: NOTICE: trunk link: (3): Loopback condition.

I found there are two problems:

1. When ce driver sends a packet, it loops back the packet is the stream is 
in the DL_PROMISC_SAP mode, which is incorrect. The packet should only be 
loop back if the stream is in DL_PROMISC_PHYS mode.

2. When ce loops back the packet, it calls dupmsg() to duplicate the 
message. But dupb() does not copy the b_flags flag as copyb() does. This 
makes the MSGNOLOOP flag to be removed.

The MSGNOLOOP flag is set when Nemo sents the packets down to the legacy 
driver. It is used by Nemo to identify this kind of packets looped back from 
legacy drivers. For example, in aggr_recv_cb() function, there is code like:

         /*
          * If this message is looped back from the legacy devices, drop
          * it as the Nemo framework will be responsible for looping it
          * back by the mac_txloop() function.
          */
         if (mp->b_flag & MSGNOLOOP) {
                 ASSERT(mp->b_next == NULL);
                 freemsg(mp);
                 return;
         }

My question is: If I copy the b_flags flag in dupb() function, will it cause 
any problem?

Thanks
- Cathy


Reply via email to