On Jun 5, 2009, at 12:35 AM, Darren Reed wrote:

Nicolas Droux wrote:

On Jun 3, 2009, at 6:37 PM, Jason King wrote:

- Shouldn't TX be defined through an entry point called by client instead of
a callback?

I'm not sure how easily that'd work.  For each port, a PDU is sent
ever tx_interval (default: 30) seconds.  Except, if something has
changed, then a new PDU is sent out immediately (but no more
frequently than tx_delay - default: 1 - second to prevent a flood of
PDUs if multiple TLV values are changing).

From what I could get from reading the DCBX docs, if a link on an
Opensolaris host was setup as an FCOE target, the OS would send out
LLDP PDUs (with the DCBX TLVs) at the normal intervals (i.e. every
30s), once it sees it's neighbor also send a PDU with DCBX TLVs (and
there aren't any other neighbors on the same link), it switches to a
'fast start' mode where it sends frames once a second to exchange the
needed data, the returns to the normal 30sec interval.

If multiple PDUs are sent from the same link with different data, the most recent replaces whatever was there. To me, this suggests it'd be better for LLDP to manage when PDU transmission happens, and just ping
anything that wants to send extra TLVs to stick them in the mblk.

OK, that makes sense. From the API point of view it could be simpler to let the callback return a ptr to the buffer containing the TLV to be added to the PDU, or NULL otherwise. LLDP can then copy the TLV to the PDU mblk, handle the cases where the mblk size is exceeded, etc.

- Instead of specifying the link name to the start routine, the registration routine should be taking a MAC handle or MAC client handle instead, which
would allow you to leverage the existing mac_open_*() variants.

One thing I've been struggling with (perhaps you can clarify this) is it looks like the recent changes in the MAC api require that each call to mac_open_*() (obtaining a handle in the process) requires it's own unique MAC address. This is a bit of a problem, since LLDP should be using an existing mac addresses, versus getting one of it's own (this is why I was originally looking at using DLS instead of MAC since the same handle could be reused). Am I correct in that understanding, or
did I miss something?

mac_client_open() does not require a unique MAC address, however the data path of a MAC client is currently setup during mac_unicast_add(). Some changes need to be made to MAC in order to allow clients like LLDP to send and receive PDUs without adding a unique MAC address/VID to the client, as discussed previously on crossbow-discuss. What's your timeline for integrating the LLDP support? It would be probably best if you could work on this closely with a member of the Crossbow team.

Nicolas,

I think this is 6838175?

Yes, and in addition to what was described initially by that CR,, there's also the issue of being able to receive multicast LLDP PDUs without putting the NIC in promiscuous mode or passing every packet (or a copy of every packet) to LLDP. These issues should be looked at simultaneously since they could require refactoring the data-path setup.

Nicolas.



Darren


--
Nicolas Droux - Solaris Kernel Networking - Sun Microsystems, Inc.
[email protected] - http://blogs.sun.com/droux

_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to