Messages in this thread | | | Subject | Re: TCP_MAXSEG vs TCP/generic segmentation offload (tso/gso) | From | Eric Dumazet <> | Date | Thu, 25 Nov 2010 16:18:31 +0100 |
| |
Le jeudi 25 novembre 2010 à 16:09 +0100, Niels Möller a écrit : > Eric Dumazet <eric.dumazet@gmail.com> writes: > > > So... there is no 'bug', unless you trust too much tcpdump output. > > I really expected tcpdump -e to display the actual values in the link > layer header, including the correct frame size. It's more than a bit > confusing if that is not the case... > > In the future, I will try to remember to always run tcpdump on a network > node which (i) is different from the sending one, and (ii) has GRO > disabled (and hence will discard packets if it has trouble processing > them all, rather than coalesce them). >
Just disable GSO and TSO on sending machine, then tcpdump will show you individual frames.
> What about the TCP_MAXSEG socket option, should that work? From a quick > look at driver source code, I could only see the handling of the > per-interface MTU, no per-socket segment size.
TCP_MAXSEG is certainly not handled in driver layer, but TCP layer.
/* If user gave his TCP_MAXSEG, record it to clamp */ if (tp->rx_opt.user_mss) tp->rx_opt.mss_clamp = tp->rx_opt.user_mss;
I believe TCP_MAXSEG is working fine, but GRO/GSO dont care at all : They coalesce frames whatever their size is.
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |