User Tools

Site Tools


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;
   };
}; 
Main Variables/Direction skb→ip_summed skb→csum / csum_start and csum_offset
Input CHECKSUM_NONE 0 csum valid SW need do L4 payload + pseudo header verification
CHECKSUM_UNNECESSARY 1 csum 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 csum_start/end valid SW already do necessary L4 checksum calculation
CHECKSUM_PARTIAL 3 csum_start/end valid SW already do pseudo header and HW need to further calculate its payload based on
mywiki/linux/checksum.1459935826.txt.gz · Last modified: (external edit)