As I've been pointed out by Andrew Gallatin, there are some
network interface cards smart (or twisted?) enough to be able to calculate a TCP/UDP checksum for a packet fragmented by the host CPU. Therefore the paragraph on the case has been revised.
This commit is contained in:
parent
4939882522
commit
76f80df62e
@ -857,11 +857,19 @@ of fragments contained in its
|
||||
field.
|
||||
.El
|
||||
.Pp
|
||||
It is obvious that computing the TCP or UDP checksum cannot
|
||||
be offloaded for a packet fragmented by the host CPU.
|
||||
Consequently, there is no ambiguity in the meaning of
|
||||
The last rule for fragmented packets takes precedence over the one
|
||||
for a TCP or UDP checksum.
|
||||
Nevertheless, offloading a TCP or UDP checksum is possible for a
|
||||
fragmented packet if the flag
|
||||
.Dv CSUM_IP_FRAGS
|
||||
is set in the field
|
||||
.Va ifnet.if_data.ifi_hwassist
|
||||
associated with the network interface.
|
||||
However, in this case the interface is expected to figure out
|
||||
the location of the checksum field within the sequence of fragments
|
||||
by itself because
|
||||
.Va csum_data
|
||||
for an outgoing packet.
|
||||
contains a fragment count instead of a checksum offset value.
|
||||
.Pp
|
||||
On input, an interface indicates the actions it has performed
|
||||
on a packet by setting one or more of the following flags in
|
||||
|
Loading…
x
Reference in New Issue
Block a user