So, I think I’ve identified the issue. In sys/net/ieee8023ad_lacp.c, lacp_pdu_input() has a sanity check :
if (m->m_pkthdr.len != sizeof(*du)) { goto bad; } I added some debugging information in if_lagg, and ran with it. The lacpdu packet that being sent by the TP-Link switch is 4 bytes longer than the FreeBSD "struct lacpdu du”. em1: lacp_pdu_input-sizeof(du) bad m_pkthdr.len=128 sizeof(du)=124 My packet captures shows the packet size differing as well. I’m still poking around. I’ve been trying to look for the official LACPDU binary/wire format … if someone can point me to the reference for that, that would be helpful (at least my own understanding). Not exactly sure what these extra 4 bytes are at the end of the packet. Still trying to figure that out. - David P. Discher http://davidpdischer.com/ AIM: DavidDPD | Y!M: daviddpdz On Dec 4, 2014, at 8:41 PM, David P. Discher <d...@dpdtech.com> wrote: > Thanks Adam - > > On Dec 4, 2014, at 1:58 PM, Adam McDougall <mcdou...@egr.msu.edu> wrote: > >> >> Is the switch side set to "active" for the lacp mode (instead of >> passive)? Also, try: >> sysctl net.link.lagg.0.lacp.lacp_strict_mode=0 >> >> If either of those work, I'll explain more, don't have time to dig for >> old email right this minute. > > Yes, the switch was in active mode. Turn strict mode off (which I thought I > did before, but of course this sysctl clears when destroying the interface). > So, the LACP did finally negotiated, at least in ifconfig :
signature.asc
Description: Message signed with OpenPGP using GPGMail