IMHO, there is a combination of two bugs. 1) MPD (3.9, at least) calculates and sets mtu (bund.c/BundUpdateParams()) at wrong time -- when one of MIN() args is still zero. ioctl with bizzare mtu value rejected, thus leaving the default (1500), which in turn is above MRU requested from win client (1400 for multilink).
[at the same time on other end of connection] 2) MS clients has setting 'Negotiate multi-link for single link connections'. Even when this option is negotiated, ms client does not understand partial MP (RFC1990) fragments. When both (begin, end) flags set, then everything is fine, as long as everything fits MRU. Would anyone review and test this patches? (bund.c patches a kind of nitpicking -- enabled is not negotiated :-)) --- bund.c.orig Tue Oct 8 13:40:15 2002 +++ bund.c Fri Oct 18 17:17:23 2002 @@ -548,22 +548,20 @@ mtu = NG_IFACE_MTU_DEFAULT; /* Reset to default settings */ break; case 1: - if (!Enabled(&bund->conf.options, BUND_CONF_MULTILINK)) { - mtu = MIN(bund->links[the_link]->lcp.peer_mru, - bund->links[the_link]->phys->type->mtu); - break; - } - /* FALLTHROUGH */ + mtu = bund->links[the_link]->lcp.peer_mru; + break; default: /* We fragment everything, use bundle MRRU */ mtu = bund->mp.peer_mrru; break; } - /* Subtract to make room for various frame-bloating protocols */ - if (Enabled(&bund->conf.options, BUND_CONF_COMPRESSION)) - mtu = CcpSubtractBloat(mtu); - if (Enabled(&bund->conf.options, BUND_CONF_ENCRYPTION)) - mtu = EcpSubtractBloat(mtu); + if (bm->n_up > 0) { + /* Subtract to make room for various frame-bloating protocols */ + if (bund->ccp.xmit != NULL) + mtu = CcpSubtractBloat(mtu); + if (bund->ecp.xmit != NULL) + mtu = EcpSubtractBloat(mtu); + } /* Update interface MTU */ if (mtu > BUND_MAX_MTU) --- iface.c.orig Tue Oct 8 14:28:09 2002 +++ iface.c Sat Oct 12 11:54:36 2002 @@ -346,6 +346,8 @@ /* Sanity */ assert(!iface->ip_up); + BundUpdateParams(); + /* Set addresses and bring interface up */ snprintf(hisaddr, sizeof(hisaddr), "%s", inet_ntoa(iface->peer_addr)); ExecCmd(LG_IFACE, "%s %s %s %s netmask 0xffffffff %slink0", To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-net" in the body of the message