Like I mentioned in the network-discuss alias, that dupb() already copied
the b_flag field over:
MBLK_BAND_FLAG_WORD(new_mp) = MBLK_BAND_FLAG_WORD(mp);
It turns out the aggr driver sees the message being looped back because that
the MSGNOLOOP flag was set in the dld layer functions, which should really
be moved to the MAC layer functions, so that when the aggr driver (which is
a MAC user) sends the packets, those packets are also marked with the
MSGNOLOOP flag.
I've made the change and putback the fix into the Clearview gate.
I will file a bug against ce on the first problem soon.
Thanks
- Cathy
> 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
>
>
> _________________________________
> clearview-discuss mailing list
> clearview-discuss at opensolaris.org