FreeBSD 7.2 fxp Driver Broken

Uncategorized — Titus Barik on May 15, 2009 at 8:15 pm

If you are using the fxp0 driver in FreeBSD 7.2, you will find that clients can no longer connect to your server successfully using certain DSL connections, such as AT&T or BellSouth. You can temporarily work around this issue by executing the following command:

sysctl net.inet.tcp.tso=0

To persist this change after a reboot, add the net.inet.tcp.tso=0 line to /etc/sysctl.conf.

There’s a whole thread about the TCP differences in FreeBSD 7.2 versus FreeBSD 7.1, and a poster seems to provide an explanation for why this occurs:

The problem was caused by the reciever side (usually PPPoE clients, e.g. DSL users) which proposes a smaller MSS than the interface MTU, the previous implementation sets the packet length to interface MTU instead of the negotiated one, which would cause the problem.

Setting net.inet.tcp.tso=0 would turn off TCP Segment Offloading completely. The previous release of FreeBSD does not include this feature.

I’m just surprised that such a glaring bug made it through to release.

Update: This issue has finally been added to the FreeBSD 7.2-RELEASE Errata.

0 Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

titus@barik.net | The Weblog of Titus Barik