Date: Mon, 15 Dec 2014 12:33:40 -0700 From: Alan Somers <asomers@freebsd.org> To: "David P. Discher" <dpd@dpdtech.com> Cc: FreeBSD Net <freebsd-net@freebsd.org>, Adam McDougall <mcdouga9@egr.msu.edu> Subject: Re: FreeBSD 10-stable (r274577) LACP / IEEE 802.3ad with TP-Link TL-SG2008 - not working Message-ID: <CAOtMX2h3U-C9stM5qdix1HCqG=6rZD2GzKQw0t6Raoh6ToL3Og@mail.gmail.com> In-Reply-To: <34276C9E-CAEF-4E3F-AA2A-568F2D3099EC@dpdtech.com> References: <1A44709E-7D0C-4932-8A28-383EAC3F340B@dpdtech.com> <CAOtMX2gEGxTyXjitBu=pjkteocp1pSGxnb%2BWDb_jL3f0YNOjrg@mail.gmail.com> <9AE69175-92D9-49FA-A651-119C7046A1FA@dpdtech.com> <5480D8EF.9000804@egr.msu.edu> <3D993418-E632-44BA-8FE2-2F3F34188F20@dpdtech.com> <34276C9E-CAEF-4E3F-AA2A-568F2D3099EC@dpdtech.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Dec 14, 2014 at 6:23 PM, David P. Discher <dpd@dpdtech.com> wrote:
>
> 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).
Try here:
http://standards.ieee.org/findstds/standard/802.1AX-2008.html
>
> 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 <dpd@dpdtech.com> wrote:
>
>> Thanks Adam -
>>
>> On Dec 4, 2014, at 1:58 PM, Adam McDougall <mcdouga9@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 :
>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOtMX2h3U-C9stM5qdix1HCqG=6rZD2GzKQw0t6Raoh6ToL3Og>
