LRO bypasses normal ip_input()/tcp_input() and lacks several checks
that are performed there. With b0ccf53f2455 such packets started
to trigger assertions.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Skipped - Unit
Tests Skipped - Build Status
Buildable 50550 Build 47441: arc lint + arc unit
Event Timeline
Comment Actions
I really think this belongs in tcp_lro_low_level_parser(). The function you've hooked exists simply to deal with IPv4 IP checksums, that's why there was no analog for V6. If you do push this, you need to remove the stat increments.
If you put this into tcp_lro_low_level_parser(), it will be together with other sanity checks on the IP header so it will be easier for future readers to comprehend, and it will be smaller. I'll send an alternate patch.
sys/netinet/tcp_lro.c | ||
---|---|---|
675 | I believe this will result in double-counting ips_baddr, as when LRO fails, the packets will be submitted normally up the stack. Eg, LRO does not consume packets that fail to be aggregated. |