The bge interface is special with respect to transmit checksum offloading. In the default settings, an bge interface announces TXCSUM capabilities, but only supports TCP/IPv4 and not UDP/IPv4 due to limitations of some of the NICs. This results in problems when the bge interface becomes a member of a bridge. Since currently only the TXCSUM capabilities are synced when a member is added to a bridge and not the protocol specific capabilities, this can result in a situation where UDP packets are sent out using a bge interface without having a correct checksum.
To mitigate this problem, initially don't announce TXCSUM capabilities, when UDP transmit checksum is disabled. It is still possible to enable TXCSUM capabilities via ifconfig.
This fixes PR 291420.
Details
Details
- Reviewers
timo.voelker_fh-muenster.de glebius markj jhibbits - Group Reviewers
manpages
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Skipped - Unit
Tests Skipped
Event Timeline
Comment Actions
The question is, what means TXCSUM?
I guess, it means the interface can some sort of checksum offloading. Then, bge does nothing wrong with enabling TXCSUM when it supports only TCP and not UDP checksum offloading.
epair uses the fact that a bridge disables TXCSUM on all current and future member interfaces if one member has it disabled. If TXCSUM is enabled on epair, it assumes that all members support TCP and UDP checksum offloading, which is incorrect with bge. Thus, disabling TXCSUM on bge helps epair.
I'm planning to add TXCSUM support for the bridge, which makes disabling TXCSUM on the members and the epair's assumption obsolete and allows to enable TXCSUM on bge again.