mywiki:linux:checksum
This is an old revision of the document!
Table of Contents
Linux Checksum Calculation Logic
| API | Comments |
|---|---|
| skb_checksum_help | |
| ip_fast_csum | |
| csum_fold | |
Linux Checksum
union {
__wsum csum;
struct {
__u16 csum_start;
__u16 csum_offset;
};
};
| Variables/Direction | skb→ip_summed | skb→csum or csum_start/offset | |
| Input | CHECKSUM_NONE 0 | not valid | SW need do L4 payload + pseudo header verification |
|---|---|---|---|
| CHECKSUM_UNNECESSARY 1 | not valid | HW already do L4 payload + pseudo header verification | |
| CHECKSUM_COMPLETE 2 | csum valid (stored with L4 payload checksum) | SW need to do skb→csum + pseudo header verification | |
| Output | CHECKSUM_NONE 0 | not valid | SW already do necessary L4 checksum calculation |
| CHECKSUM_PARTIAL 3 | csum_start/offset valid | SW already do pseudo header and HW need to further calculate its payload based on |
mywiki/linux/checksum.1459936133.txt.gz · Last modified: (external edit)
