// SPDX-License-Identifier: GPL-2.0+
/*
* Test cases csum_partial, csum_fold, ip_fast_csum, csum_ipv6_magic
*/
#include <kunit/test.h>
#include <asm /checksum.h>
#include <net/ip6_checksum.h>
#define MAX_LEN 512
#define MAX_ALIGN 64
#define TEST_BUFLEN (MAX_LEN + MAX_ALIGN)
#define IPv4_MIN_WORDS 5
#define IPv4_MAX_WORDS 15
#define NUM_IPv6_TESTS 200
#define NUM_IP_FAST_CSUM_TESTS 181
/* Values for a little endian CPU. Byte swap each half on big endian CPU. */
static const u32 random_init_sum = 0 x2847aab;
static const u8 random_buf[] = {
0 xac, 0 xd7, 0 x76, 0 x69, 0 x6e, 0 xf2, 0 x93, 0 x2c, 0 x1f, 0 xe0, 0 xde, 0 x86,
0 x8f, 0 x54, 0 x33, 0 x90, 0 x95, 0 xbf, 0 xff, 0 xb9, 0 xea, 0 x62, 0 x6e, 0 xb5,
0 xd3, 0 x4f, 0 xf5, 0 x60, 0 x50, 0 x5c, 0 xc7, 0 xfa, 0 x6d, 0 x1a, 0 xc7, 0 xf0,
0 xd2, 0 x2c, 0 x12, 0 x3d, 0 x88, 0 xe3, 0 x14, 0 x21, 0 xb1, 0 x5e, 0 x45, 0 x31,
0 xa2, 0 x85, 0 x36, 0 x76, 0 xba, 0 xd8, 0 xad, 0 xbb, 0 x9e, 0 x49, 0 x8f, 0 xf7,
0 xce, 0 xea, 0 xef, 0 xca, 0 x2c, 0 x29, 0 xf7, 0 x15, 0 x5c, 0 x1d, 0 x4d, 0 x09,
0 x1f, 0 xe2, 0 x14, 0 x31, 0 x8c, 0 x07, 0 x57, 0 x23, 0 x1f, 0 x6f, 0 x03, 0 xe1,
0 x93, 0 x19, 0 x53, 0 x03, 0 x45, 0 x49, 0 x9a, 0 x3b, 0 x8e, 0 x0c, 0 x12, 0 x5d,
0 x8a, 0 xb8, 0 x9b, 0 x8c, 0 x9a, 0 x03, 0 xe5, 0 xa2, 0 x43, 0 xd2, 0 x3b, 0 x4e,
0 x7e, 0 x30, 0 x3c, 0 x22, 0 x2d, 0 xc5, 0 xfc, 0 x9e, 0 xdb, 0 xc6, 0 xf9, 0 x69,
0 x12, 0 x39, 0 x1f, 0 xa0, 0 x11, 0 x0c, 0 x3f, 0 xf5, 0 x53, 0 xc9, 0 x30, 0 xfb,
0 xb0, 0 xdd, 0 x21, 0 x1d, 0 x34, 0 xe2, 0 x65, 0 x30, 0 xf1, 0 xe8, 0 x1b, 0 xe7,
0 x55, 0 x0d, 0 xeb, 0 xbd, 0 xcc, 0 x9d, 0 x24, 0 xa4, 0 xad, 0 xa7, 0 x93, 0 x47,
0 x19, 0 x2e, 0 xc4, 0 x5c, 0 x3b, 0 xc7, 0 x6d, 0 x95, 0 x0c, 0 x47, 0 x60, 0 xaf,
0 x5b, 0 x47, 0 xee, 0 xdc, 0 x31, 0 x31, 0 x14, 0 x12, 0 x7e, 0 x9e, 0 x45, 0 xb1,
0 xc1, 0 x69, 0 x4b, 0 x84, 0 xfc, 0 x88, 0 xc1, 0 x9e, 0 x46, 0 xb4, 0 xc2, 0 x25,
0 xc5, 0 x6c, 0 x4c, 0 x22, 0 x58, 0 x5c, 0 xbe, 0 xff, 0 xea, 0 x88, 0 x88, 0 x7a,
0 xcb, 0 x1c, 0 x5d, 0 x63, 0 xa1, 0 xf2, 0 x33, 0 x0c, 0 xa2, 0 x16, 0 x0b, 0 x6e,
0 x2b, 0 x79, 0 x58, 0 xf7, 0 xac, 0 xd3, 0 x6a, 0 x3f, 0 x81, 0 x57, 0 x48, 0 x45,
0 xe3, 0 x7c, 0 xdc, 0 xd6, 0 x34, 0 x7e, 0 xe6, 0 x73, 0 xfa, 0 xcb, 0 x31, 0 x18,
0 xa9, 0 x0b, 0 xee, 0 x6b, 0 x99, 0 xb9, 0 x2d, 0 xde, 0 x22, 0 x0e, 0 x71, 0 x57,
0 x0e, 0 x9b, 0 x11, 0 xd1, 0 x15, 0 x41, 0 xd0, 0 x6b, 0 x50, 0 x8a, 0 x23, 0 x64,
0 xe3, 0 x9c, 0 xb3, 0 x55, 0 x09, 0 xe9, 0 x32, 0 x67, 0 xf9, 0 xe0, 0 x73, 0 xf1,
0 x60, 0 x66, 0 x0b, 0 x88, 0 x79, 0 x8d, 0 x4b, 0 x52, 0 x83, 0 x20, 0 x26, 0 x78,
0 x49, 0 x27, 0 xe7, 0 x3e, 0 x29, 0 xa8, 0 x18, 0 x82, 0 x41, 0 xdd, 0 x1e, 0 xcc,
0 x3b, 0 xc4, 0 x65, 0 xd1, 0 x21, 0 x40, 0 x72, 0 xb2, 0 x87, 0 x5e, 0 x16, 0 x10,
0 x80, 0 x3f, 0 x4b, 0 x58, 0 x1c, 0 xc2, 0 x79, 0 x20, 0 xf0, 0 xe0, 0 x80, 0 xd3,
0 x52, 0 xa5, 0 x19, 0 x6e, 0 x47, 0 x90, 0 x08, 0 xf5, 0 x50, 0 xe2, 0 xd6, 0 xae,
0 xe9, 0 x2e, 0 xdc, 0 xd5, 0 xb4, 0 x90, 0 x1f, 0 x79, 0 x49, 0 x82, 0 x21, 0 x84,
0 xa0, 0 xb5, 0 x2f, 0 xff, 0 x30, 0 x71, 0 xed, 0 x80, 0 x68, 0 xb1, 0 x6d, 0 xef,
0 xf6, 0 xcf, 0 xb8, 0 x41, 0 x79, 0 xf5, 0 x01, 0 xbc, 0 x0c, 0 x9b, 0 x0e, 0 x06,
0 xf3, 0 xb0, 0 xbb, 0 x97, 0 xb8, 0 xb1, 0 xfd, 0 x51, 0 x4e, 0 xef, 0 x0a, 0 x3d,
0 x7a, 0 x3d, 0 xbd, 0 x61, 0 x00, 0 xa2, 0 xb3, 0 xf0, 0 x1d, 0 x77, 0 x7b, 0 x6c,
0 x01, 0 x61, 0 xa5, 0 xa3, 0 xdb, 0 xd5, 0 xd5, 0 xf4, 0 xb5, 0 x28, 0 x9f, 0 x0a,
0 xa3, 0 x82, 0 x5f, 0 x4b, 0 x40, 0 x0f, 0 x05, 0 x0e, 0 x78, 0 xed, 0 xbf, 0 x17,
0 xf6, 0 x5a, 0 x8a, 0 x7d, 0 xf9, 0 x45, 0 xc1, 0 xd7, 0 x1b, 0 x9d, 0 x6c, 0 x07,
0 x88, 0 xf3, 0 xbc, 0 xf1, 0 xea, 0 x28, 0 x1f, 0 xb8, 0 x7a, 0 x60, 0 x3c, 0 xce,
0 x3e, 0 x50, 0 xb2, 0 x0b, 0 xcf, 0 xe5, 0 x08, 0 x1f, 0 x48, 0 x04, 0 xf9, 0 x35,
0 x29, 0 x15, 0 xbe, 0 x82, 0 x96, 0 xc2, 0 x55, 0 x04, 0 x6c, 0 x19, 0 x45, 0 x29,
0 x0b, 0 xb6, 0 x49, 0 x12, 0 xfb, 0 x8d, 0 x1b, 0 x75, 0 x8b, 0 xd9, 0 x6a, 0 x5c,
0 xbe, 0 x46, 0 x2b, 0 x41, 0 xfe, 0 x21, 0 xad, 0 x1f, 0 x75, 0 xe7, 0 x90, 0 x3d,
0 xe1, 0 xdf, 0 x4b, 0 xe1, 0 x81, 0 xe2, 0 x17, 0 x02, 0 x7b, 0 x58, 0 x8b, 0 x92,
0 x1a, 0 xac, 0 x46, 0 xdd, 0 x2e, 0 xce, 0 x40, 0 x09
};
/* Values for a little endian CPU. Byte swap on big endian CPU. */
static const u16 expected_results[] = {
0 x82d0, 0 x8224, 0 xab23, 0 xaaad, 0 x41ad, 0 x413f, 0 x4f3e, 0 x4eab, 0 x22ab,
0 x228c, 0 x428b, 0 x41ad, 0 xbbac, 0 xbb1d, 0 x671d, 0 x66ea, 0 xd6e9, 0 xd654,
0 x1754, 0 x1655, 0 x5d54, 0 x5c6a, 0 xfa69, 0 xf9fb, 0 x44fb, 0 x4428, 0 xf527,
0 xf432, 0 x9432, 0 x93e2, 0 x37e2, 0 x371b, 0 x3d1a, 0 x3cad, 0 x22ad, 0 x21e6,
0 x31e5, 0 x3113, 0 x0513, 0 x0501, 0 xc800, 0 xc778, 0 xe477, 0 xe463, 0 xc363,
0 xc2b2, 0 x64b2, 0 x646d, 0 x336d, 0 x32cb, 0 xadca, 0 xad94, 0 x3794, 0 x36da,
0 x5ed9, 0 x5e2c, 0 xa32b, 0 xa28d, 0 x598d, 0 x58fe, 0 x61fd, 0 x612f, 0 x772e,
0 x763f, 0 xac3e, 0 xac12, 0 x8312, 0 x821b, 0 x6d1b, 0 x6cbf, 0 x4fbf, 0 x4f72,
0 x4672, 0 x4653, 0 x6452, 0 x643e, 0 x333e, 0 x32b2, 0 x2bb2, 0 x2b5b, 0 x085b,
0 x083c, 0 x993b, 0 x9938, 0 xb837, 0 xb7a4, 0 x9ea4, 0 x9e51, 0 x9b51, 0 x9b0c,
0 x520c, 0 x5172, 0 x1672, 0 x15e4, 0 x09e4, 0 x09d2, 0 xacd1, 0 xac47, 0 xf446,
0 xf3ab, 0 x67ab, 0 x6711, 0 x6411, 0 x632c, 0 xc12b, 0 xc0e8, 0 xeee7, 0 xeeac,
0 xa0ac, 0 xa02e, 0 x702e, 0 x6ff2, 0 x4df2, 0 x4dc5, 0 x88c4, 0 x87c8, 0 xe9c7,
0 xe8ec, 0 x22ec, 0 x21f3, 0 xb8f2, 0 xb8e0, 0 x7fe0, 0 x7fc1, 0 xdfc0, 0 xdfaf,
0 xd3af, 0 xd370, 0 xde6f, 0 xde1c, 0 x151c, 0 x14ec, 0 x19eb, 0 x193b, 0 x3c3a,
0 x3c19, 0 x1f19, 0 x1ee5, 0 x3ce4, 0 x3c7f, 0 x0c7f, 0 x0b8e, 0 x238d, 0 x2372,
0 x3c71, 0 x3c1c, 0 x2f1c, 0 x2e31, 0 x7130, 0 x7064, 0 xd363, 0 xd33f, 0 x2f3f,
0 x2e92, 0 x8791, 0 x86fe, 0 x3ffe, 0 x3fe5, 0 x11e5, 0 x1121, 0 xb520, 0 xb4e5,
0 xede4, 0 xed77, 0 x5877, 0 x586b, 0 x116b, 0 x110b, 0 x620a, 0 x61af, 0 x1aaf,
0 x19c1, 0 x3dc0, 0 x3d8f, 0 x0c8f, 0 x0c7b, 0 xfa7a, 0 xf9fc, 0 x5bfc, 0 x5bb7,
0 xaab6, 0 xa9f5, 0 x40f5, 0 x40aa, 0 xbca9, 0 xbbad, 0 x33ad, 0 x32ec, 0 x94eb,
0 x94a5, 0 xe0a4, 0 xdfe2, 0 xbae2, 0 xba1d, 0 x4e1d, 0 x4dd1, 0 x2bd1, 0 x2b79,
0 xcf78, 0 xceba, 0 xcfb9, 0 xcecf, 0 x46cf, 0 x4647, 0 xcc46, 0 xcb7b, 0 xaf7b,
0 xaf1e, 0 x4c1e, 0 x4b7d, 0 x597c, 0 x5949, 0 x4d49, 0 x4ca7, 0 x36a7, 0 x369c,
0 xc89b, 0 xc870, 0 x4f70, 0 x4f18, 0 x5817, 0 x576b, 0 x846a, 0 x8400, 0 x4500,
0 x447f, 0 xed7e, 0 xed36, 0 xa836, 0 xa753, 0 x2b53, 0 x2a77, 0 x5476, 0 x5442,
0 xd641, 0 xd55b, 0 x625b, 0 x6161, 0 x9660, 0 x962f, 0 x7e2f, 0 x7d86, 0 x7286,
0 x7198, 0 x0698, 0 x05ff, 0 x4cfe, 0 x4cd1, 0 x6ed0, 0 x6eae, 0 x60ae, 0 x603d,
0 x093d, 0 x092f, 0 x6e2e, 0 x6e1d, 0 x9d1c, 0 x9d07, 0 x5c07, 0 x5b37, 0 xf036,
0 xefe6, 0 x65e6, 0 x65c3, 0 x01c3, 0 x00e0, 0 x64df, 0 x642c, 0 x0f2c, 0 x0f23,
0 x2622, 0 x25f0, 0 xbeef, 0 xbdf6, 0 xddf5, 0 xdd82, 0 xec81, 0 xec21, 0 x8621,
0 x8616, 0 xfe15, 0 xfd9c, 0 x709c, 0 x7051, 0 x1e51, 0 x1dce, 0 xfdcd, 0 xfda7,
0 x85a7, 0 x855e, 0 x5e5e, 0 x5d77, 0 x1f77, 0 x1f4e, 0 x774d, 0 x7735, 0 xf534,
0 xf4f3, 0 x17f3, 0 x17d5, 0 x4bd4, 0 x4b99, 0 x8798, 0 x8733, 0 xb632, 0 xb611,
0 x7611, 0 x759f, 0 xc39e, 0 xc317, 0 x6517, 0 x6501, 0 x5501, 0 x5481, 0 x1581,
0 x1536, 0 xbd35, 0 xbd19, 0 xfb18, 0 xfa9f, 0 xda9f, 0 xd9af, 0 xf9ae, 0 xf92e,
0 x262e, 0 x25dc, 0 x80db, 0 x80c2, 0 x12c2, 0 x127b, 0 x827a, 0 x8272, 0 x8d71,
0 x8d21, 0 xab20, 0 xaa4a, 0 xfc49, 0 xfb60, 0 xcd60, 0 xcc84, 0 xf783, 0 xf6cf,
0 x66cf, 0 x66b0, 0 xedaf, 0 xed66, 0 x6b66, 0 x6b45, 0 xe744, 0 xe6a4, 0 x31a4,
0 x3175, 0 x3274, 0 x3244, 0 xc143, 0 xc056, 0 x4056, 0 x3fee, 0 x8eed, 0 x8e80,
0 x9f7f, 0 x9e89, 0 xcf88, 0 xced0, 0 x8dd0, 0 x8d57, 0 x9856, 0 x9855, 0 xdc54,
0 xdc48, 0 x4148, 0 x413a, 0 x3b3a, 0 x3a47, 0 x8a46, 0 x898b, 0 xf28a, 0 xf1d2,
0 x40d2, 0 x3fd5, 0 xeed4, 0 xee86, 0 xff85, 0 xff7b, 0 xc27b, 0 xc201, 0 x8501,
0 x8444, 0 x2344, 0 x2344, 0 x8143, 0 x8090, 0 x908f, 0 x9072, 0 x1972, 0 x18f7,
0 xacf6, 0 xacf5, 0 x4bf5, 0 x4b50, 0 xa84f, 0 xa774, 0 xd273, 0 xd19e, 0 xdd9d,
0 xdce8, 0 xb4e8, 0 xb449, 0 xaa49, 0 xa9a6, 0 x27a6, 0 x2747, 0 xdc46, 0 xdc06,
0 xcd06, 0 xcd01, 0 xbf01, 0 xbe89, 0 xd188, 0 xd0c9, 0 xb9c9, 0 xb8d3, 0 x5ed3,
0 x5e49, 0 xe148, 0 xe04f, 0 x9b4f, 0 x9a8e, 0 xc38d, 0 xc372, 0 x2672, 0 x2606,
0 x1f06, 0 x1e7e, 0 x2b7d, 0 x2ac1, 0 x39c0, 0 x38d6, 0 x10d6, 0 x10b7, 0 x58b6,
0 x583c, 0 xf83b, 0 xf7ff, 0 x29ff, 0 x29c1, 0 xd9c0, 0 xd90e, 0 xce0e, 0 xcd3f,
0 xe83e, 0 xe836, 0 xc936, 0 xc8ee, 0 xc4ee, 0 xc3f5, 0 x8ef5, 0 x8ecc, 0 x79cc,
0 x790e, 0 xf70d, 0 xf677, 0 x3477, 0 x3422, 0 x3022, 0 x2fb6, 0 x16b6, 0 x1671,
0 xed70, 0 xed65, 0 x3765, 0 x371c, 0 x251c, 0 x2421, 0 x9720, 0 x9705, 0 x2205,
0 x217a, 0 x4879, 0 x480f, 0 xec0e, 0 xeb50, 0 xa550, 0 xa525, 0 x6425, 0 x6327,
0 x4227, 0 x417a, 0 x227a, 0 x2205, 0 x3b04, 0 x3a74, 0 xfd73, 0 xfc92, 0 x1d92,
0 x1d47, 0 x3c46, 0 x3bc5, 0 x59c4, 0 x59ad, 0 x57ad, 0 x5732, 0 xff31, 0 xfea6,
0 x6ca6, 0 x6c8c, 0 xc08b, 0 xc045, 0 xe344, 0 xe316, 0 x1516, 0 x14d6,
};
/* Values for a little endian CPU. Byte swap each half on big endian CPU. */
static const u32 init_sums_no_overflow[] = {
0 xffffffff, 0 xfffffffb, 0 xfffffbfb, 0 xfffffbf7, 0 xfffff7f7, 0 xfffff7f3,
0 xfffff3f3, 0 xfffff3ef, 0 xffffefef, 0 xffffefeb, 0 xffffebeb, 0 xffffebe7,
0 xffffe7e7, 0 xffffe7e3, 0 xffffe3e3, 0 xffffe3df, 0 xffffdfdf, 0 xffffdfdb,
0 xffffdbdb, 0 xffffdbd7, 0 xffffd7d7, 0 xffffd7d3, 0 xffffd3d3, 0 xffffd3cf,
0 xffffcfcf, 0 xffffcfcb, 0 xffffcbcb, 0 xffffcbc7, 0 xffffc7c7, 0 xffffc7c3,
0 xffffc3c3, 0 xffffc3bf, 0 xffffbfbf, 0 xffffbfbb, 0 xffffbbbb, 0 xffffbbb7,
0 xffffb7b7, 0 xffffb7b3, 0 xffffb3b3, 0 xffffb3af, 0 xffffafaf, 0 xffffafab,
0 xffffabab, 0 xffffaba7, 0 xffffa7a7, 0 xffffa7a3, 0 xffffa3a3, 0 xffffa39f,
0 xffff9f9f, 0 xffff9f9b, 0 xffff9b9b, 0 xffff9b97, 0 xffff9797, 0 xffff9793,
0 xffff9393, 0 xffff938f, 0 xffff8f8f, 0 xffff8f8b, 0 xffff8b8b, 0 xffff8b87,
0 xffff8787, 0 xffff8783, 0 xffff8383, 0 xffff837f, 0 xffff7f7f, 0 xffff7f7b,
0 xffff7b7b, 0 xffff7b77, 0 xffff7777, 0 xffff7773, 0 xffff7373, 0 xffff736f,
0 xffff6f6f, 0 xffff6f6b, 0 xffff6b6b, 0 xffff6b67, 0 xffff6767, 0 xffff6763,
0 xffff6363, 0 xffff635f, 0 xffff5f5f, 0 xffff5f5b, 0 xffff5b5b, 0 xffff5b57,
0 xffff5757, 0 xffff5753, 0 xffff5353, 0 xffff534f, 0 xffff4f4f, 0 xffff4f4b,
0 xffff4b4b, 0 xffff4b47, 0 xffff4747, 0 xffff4743, 0 xffff4343, 0 xffff433f,
0 xffff3f3f, 0 xffff3f3b, 0 xffff3b3b, 0 xffff3b37, 0 xffff3737, 0 xffff3733,
0 xffff3333, 0 xffff332f, 0 xffff2f2f, 0 xffff2f2b, 0 xffff2b2b, 0 xffff2b27,
0 xffff2727, 0 xffff2723, 0 xffff2323, 0 xffff231f, 0 xffff1f1f, 0 xffff1f1b,
0 xffff1b1b, 0 xffff1b17, 0 xffff1717, 0 xffff1713, 0 xffff1313, 0 xffff130f,
0 xffff0f0f, 0 xffff0f0b, 0 xffff0b0b, 0 xffff0b07, 0 xffff0707, 0 xffff0703,
0 xffff0303, 0 xffff02ff, 0 xfffffefe, 0 xfffffefa, 0 xfffffafa, 0 xfffffaf6,
0 xfffff6f6, 0 xfffff6f2, 0 xfffff2f2, 0 xfffff2ee, 0 xffffeeee, 0 xffffeeea,
0 xffffeaea, 0 xffffeae6, 0 xffffe6e6, 0 xffffe6e2, 0 xffffe2e2, 0 xffffe2de,
0 xffffdede, 0 xffffdeda, 0 xffffdada, 0 xffffdad6, 0 xffffd6d6, 0 xffffd6d2,
0 xffffd2d2, 0 xffffd2ce, 0 xffffcece, 0 xffffceca, 0 xffffcaca, 0 xffffcac6,
0 xffffc6c6, 0 xffffc6c2, 0 xffffc2c2, 0 xffffc2be, 0 xffffbebe, 0 xffffbeba,
0 xffffbaba, 0 xffffbab6, 0 xffffb6b6, 0 xffffb6b2, 0 xffffb2b2, 0 xffffb2ae,
0 xffffaeae, 0 xffffaeaa, 0 xffffaaaa, 0 xffffaaa6, 0 xffffa6a6, 0 xffffa6a2,
0 xffffa2a2, 0 xffffa29e, 0 xffff9e9e, 0 xffff9e9a, 0 xffff9a9a, 0 xffff9a96,
0 xffff9696, 0 xffff9692, 0 xffff9292, 0 xffff928e, 0 xffff8e8e, 0 xffff8e8a,
0 xffff8a8a, 0 xffff8a86, 0 xffff8686, 0 xffff8682, 0 xffff8282, 0 xffff827e,
0 xffff7e7e, 0 xffff7e7a, 0 xffff7a7a, 0 xffff7a76, 0 xffff7676, 0 xffff7672,
0 xffff7272, 0 xffff726e, 0 xffff6e6e, 0 xffff6e6a, 0 xffff6a6a, 0 xffff6a66,
0 xffff6666, 0 xffff6662, 0 xffff6262, 0 xffff625e, 0 xffff5e5e, 0 xffff5e5a,
0 xffff5a5a, 0 xffff5a56, 0 xffff5656, 0 xffff5652, 0 xffff5252, 0 xffff524e,
0 xffff4e4e, 0 xffff4e4a, 0 xffff4a4a, 0 xffff4a46, 0 xffff4646, 0 xffff4642,
0 xffff4242, 0 xffff423e, 0 xffff3e3e, 0 xffff3e3a, 0 xffff3a3a, 0 xffff3a36,
0 xffff3636, 0 xffff3632, 0 xffff3232, 0 xffff322e, 0 xffff2e2e, 0 xffff2e2a,
0 xffff2a2a, 0 xffff2a26, 0 xffff2626, 0 xffff2622, 0 xffff2222, 0 xffff221e,
0 xffff1e1e, 0 xffff1e1a, 0 xffff1a1a, 0 xffff1a16, 0 xffff1616, 0 xffff1612,
0 xffff1212, 0 xffff120e, 0 xffff0e0e, 0 xffff0e0a, 0 xffff0a0a, 0 xffff0a06,
0 xffff0606, 0 xffff0602, 0 xffff0202, 0 xffff01fe, 0 xfffffdfd, 0 xfffffdf9,
0 xfffff9f9, 0 xfffff9f5, 0 xfffff5f5, 0 xfffff5f1, 0 xfffff1f1, 0 xfffff1ed,
0 xffffeded, 0 xffffede9, 0 xffffe9e9, 0 xffffe9e5, 0 xffffe5e5, 0 xffffe5e1,
0 xffffe1e1, 0 xffffe1dd, 0 xffffdddd, 0 xffffddd9, 0 xffffd9d9, 0 xffffd9d5,
0 xffffd5d5, 0 xffffd5d1, 0 xffffd1d1, 0 xffffd1cd, 0 xffffcdcd, 0 xffffcdc9,
0 xffffc9c9, 0 xffffc9c5, 0 xffffc5c5, 0 xffffc5c1, 0 xffffc1c1, 0 xffffc1bd,
0 xffffbdbd, 0 xffffbdb9, 0 xffffb9b9, 0 xffffb9b5, 0 xffffb5b5, 0 xffffb5b1,
0 xffffb1b1, 0 xffffb1ad, 0 xffffadad, 0 xffffada9, 0 xffffa9a9, 0 xffffa9a5,
0 xffffa5a5, 0 xffffa5a1, 0 xffffa1a1, 0 xffffa19d, 0 xffff9d9d, 0 xffff9d99,
0 xffff9999, 0 xffff9995, 0 xffff9595, 0 xffff9591, 0 xffff9191, 0 xffff918d,
0 xffff8d8d, 0 xffff8d89, 0 xffff8989, 0 xffff8985, 0 xffff8585, 0 xffff8581,
0 xffff8181, 0 xffff817d, 0 xffff7d7d, 0 xffff7d79, 0 xffff7979, 0 xffff7975,
0 xffff7575, 0 xffff7571, 0 xffff7171, 0 xffff716d, 0 xffff6d6d, 0 xffff6d69,
0 xffff6969, 0 xffff6965, 0 xffff6565, 0 xffff6561, 0 xffff6161, 0 xffff615d,
0 xffff5d5d, 0 xffff5d59, 0 xffff5959, 0 xffff5955, 0 xffff5555, 0 xffff5551,
0 xffff5151, 0 xffff514d, 0 xffff4d4d, 0 xffff4d49, 0 xffff4949, 0 xffff4945,
0 xffff4545, 0 xffff4541, 0 xffff4141, 0 xffff413d, 0 xffff3d3d, 0 xffff3d39,
0 xffff3939, 0 xffff3935, 0 xffff3535, 0 xffff3531, 0 xffff3131, 0 xffff312d,
0 xffff2d2d, 0 xffff2d29, 0 xffff2929, 0 xffff2925, 0 xffff2525, 0 xffff2521,
0 xffff2121, 0 xffff211d, 0 xffff1d1d, 0 xffff1d19, 0 xffff1919, 0 xffff1915,
0 xffff1515, 0 xffff1511, 0 xffff1111, 0 xffff110d, 0 xffff0d0d, 0 xffff0d09,
0 xffff0909, 0 xffff0905, 0 xffff0505, 0 xffff0501, 0 xffff0101, 0 xffff00fd,
0 xfffffcfc, 0 xfffffcf8, 0 xfffff8f8, 0 xfffff8f4, 0 xfffff4f4, 0 xfffff4f0,
0 xfffff0f0, 0 xfffff0ec, 0 xffffecec, 0 xffffece8, 0 xffffe8e8, 0 xffffe8e4,
0 xffffe4e4, 0 xffffe4e0, 0 xffffe0e0, 0 xffffe0dc, 0 xffffdcdc, 0 xffffdcd8,
0 xffffd8d8, 0 xffffd8d4, 0 xffffd4d4, 0 xffffd4d0, 0 xffffd0d0, 0 xffffd0cc,
0 xffffcccc, 0 xffffccc8, 0 xffffc8c8, 0 xffffc8c4, 0 xffffc4c4, 0 xffffc4c0,
0 xffffc0c0, 0 xffffc0bc, 0 xffffbcbc, 0 xffffbcb8, 0 xffffb8b8, 0 xffffb8b4,
0 xffffb4b4, 0 xffffb4b0, 0 xffffb0b0, 0 xffffb0ac, 0 xffffacac, 0 xffffaca8,
0 xffffa8a8, 0 xffffa8a4, 0 xffffa4a4, 0 xffffa4a0, 0 xffffa0a0, 0 xffffa09c,
0 xffff9c9c, 0 xffff9c98, 0 xffff9898, 0 xffff9894, 0 xffff9494, 0 xffff9490,
0 xffff9090, 0 xffff908c, 0 xffff8c8c, 0 xffff8c88, 0 xffff8888, 0 xffff8884,
0 xffff8484, 0 xffff8480, 0 xffff8080, 0 xffff807c, 0 xffff7c7c, 0 xffff7c78,
0 xffff7878, 0 xffff7874, 0 xffff7474, 0 xffff7470, 0 xffff7070, 0 xffff706c,
0 xffff6c6c, 0 xffff6c68, 0 xffff6868, 0 xffff6864, 0 xffff6464, 0 xffff6460,
0 xffff6060, 0 xffff605c, 0 xffff5c5c, 0 xffff5c58, 0 xffff5858, 0 xffff5854,
0 xffff5454, 0 xffff5450, 0 xffff5050, 0 xffff504c, 0 xffff4c4c, 0 xffff4c48,
0 xffff4848, 0 xffff4844, 0 xffff4444, 0 xffff4440, 0 xffff4040, 0 xffff403c,
0 xffff3c3c, 0 xffff3c38, 0 xffff3838, 0 xffff3834, 0 xffff3434, 0 xffff3430,
0 xffff3030, 0 xffff302c, 0 xffff2c2c, 0 xffff2c28, 0 xffff2828, 0 xffff2824,
0 xffff2424, 0 xffff2420, 0 xffff2020, 0 xffff201c, 0 xffff1c1c, 0 xffff1c18,
0 xffff1818, 0 xffff1814, 0 xffff1414, 0 xffff1410, 0 xffff1010, 0 xffff100c,
0 xffff0c0c, 0 xffff0c08, 0 xffff0808, 0 xffff0804, 0 xffff0404, 0 xffff0400,
0 xffff0000, 0 xfffffffb,
};
static const u16 expected_csum_ipv6_magic[] = {
0 x18d4, 0 x3085, 0 x2e4b, 0 xd9f4, 0 xbdc8, 0 x78f, 0 x1034, 0 x8422, 0 x6fc0,
0 xd2f6, 0 xbeb5, 0 x9d3, 0 x7e2a, 0 x312e, 0 x778e, 0 xc1bb, 0 x7cf2, 0 x9d1e,
0 xca21, 0 xf3ff, 0 x7569, 0 xb02e, 0 xca86, 0 x7e76, 0 x4539, 0 x45e3, 0 xf28d,
0 xdf81, 0 x8fd5, 0 x3b5d, 0 x8324, 0 xf471, 0 x83be, 0 x1daf, 0 x8c46, 0 xe682,
0 xd1fb, 0 x6b2e, 0 xe687, 0 x2a33, 0 x4833, 0 x2d67, 0 x660f, 0 x2e79, 0 xd65e,
0 x6b62, 0 x6672, 0 x5dbd, 0 x8680, 0 xbaa5, 0 x2229, 0 x2125, 0 x2d01, 0 x1cc0,
0 x6d36, 0 x33c0, 0 xee36, 0 xd832, 0 x9820, 0 x8a31, 0 x53c5, 0 x2e2, 0 xdb0e,
0 x49ed, 0 x17a7, 0 x77a0, 0 xd72e, 0 x3d72, 0 x7dc8, 0 x5b17, 0 xf55d, 0 xa4d9,
0 x1446, 0 x5d56, 0 x6b2e, 0 x69a5, 0 xadb6, 0 xff2a, 0 x92e, 0 xe044, 0 x3402,
0 xbb60, 0 xec7f, 0 xe7e6, 0 x1986, 0 x32f4, 0 x8f8, 0 x5e00, 0 x47c6, 0 x3059,
0 x3969, 0 xe957, 0 x4388, 0 x2854, 0 x3334, 0 xea71, 0 xa6de, 0 x33f9, 0 x83fc,
0 x37b4, 0 x5531, 0 x3404, 0 x1010, 0 xed30, 0 x610a, 0 xc95, 0 x9aed, 0 x6ff,
0 x5136, 0 x2741, 0 x660e, 0 x8b80, 0 xf71, 0 xa263, 0 x88af, 0 x7a73, 0 x3c37,
0 x1908, 0 x6db5, 0 x2e92, 0 x1cd2, 0 x70c8, 0 xee16, 0 xe80, 0 xcd55, 0 x6e6,
0 x6434, 0 x127, 0 x655d, 0 x2ea0, 0 xb4f4, 0 xdc20, 0 x5671, 0 xe462, 0 xe52b,
0 xdb44, 0 x3589, 0 xc48f, 0 xe60b, 0 xd2d2, 0 x66ad, 0 x498, 0 x436, 0 xb917,
0 xf0ca, 0 x1a6e, 0 x1cb7, 0 xbf61, 0 x2870, 0 xc7e8, 0 x5b30, 0 xe4a5, 0 x168,
0 xadfc, 0 xd035, 0 xe690, 0 xe283, 0 xfb27, 0 xe4ad, 0 xb1a5, 0 xf2d5, 0 xc4b6,
0 x8a30, 0 xd7d5, 0 x7df9, 0 x91d5, 0 x63ed, 0 x2d21, 0 x312b, 0 xab19, 0 xa632,
0 x8d2e, 0 xef06, 0 x57b9, 0 xc373, 0 xbd1f, 0 xa41f, 0 x8444, 0 x9975, 0 x90cb,
0 xc49c, 0 xe965, 0 x4eff, 0 x5a, 0 xef6d, 0 xe81a, 0 xe260, 0 x853a, 0 xff7a,
0 x99aa, 0 xb06b, 0 xee19, 0 xcc2c, 0 xf34c, 0 x7c49, 0 xdac3, 0 xa71e, 0 xc988,
0 x3845, 0 x1014
};
static const u16 expected_fast_csum[] = {
0 xda83, 0 x45da, 0 x4f46, 0 x4e4f, 0 x34e, 0 xe902, 0 xa5e9, 0 x87a5, 0 x7187,
0 x5671, 0 xf556, 0 x6df5, 0 x816d, 0 x8f81, 0 xbb8f, 0 xfbba, 0 x5afb, 0 xbe5a,
0 xedbe, 0 xabee, 0 x6aac, 0 xe6b, 0 xea0d, 0 x67ea, 0 x7e68, 0 x8a7e, 0 x6f8a,
0 x3a70, 0 x9f3a, 0 xe89e, 0 x75e8, 0 x7976, 0 xfa79, 0 x2cfa, 0 x3c2c, 0 x463c,
0 x7146, 0 x7a71, 0 x547a, 0 xfd53, 0 x99fc, 0 xb699, 0 x92b6, 0 xdb91, 0 xe8da,
0 x5fe9, 0 x1e60, 0 xae1d, 0 x39ae, 0 xf439, 0 xa1f4, 0 xdda1, 0 xede, 0 x790f,
0 x579, 0 x1206, 0 x9012, 0 x2490, 0 xd224, 0 x5cd2, 0 xa65d, 0 xca7, 0 x220d,
0 xf922, 0 xbf9, 0 x920b, 0 x1b92, 0 x361c, 0 x2e36, 0 x4d2e, 0 x24d, 0 x2,
0 xcfff, 0 x90cf, 0 xa591, 0 x93a5, 0 x7993, 0 x9579, 0 xc894, 0 x50c8, 0 x5f50,
0 xd55e, 0 xcad5, 0 xf3c9, 0 x8f4, 0 x4409, 0 x5043, 0 x5b50, 0 x55b, 0 x2205,
0 x1e22, 0 x801e, 0 x3780, 0 xe137, 0 x7ee0, 0 xf67d, 0 x3cf6, 0 xa53c, 0 x2ea5,
0 x472e, 0 x5147, 0 xcf51, 0 x1bcf, 0 x951c, 0 x1e95, 0 xc71e, 0 xe4c7, 0 xc3e4,
0 x3dc3, 0 xee3d, 0 xa4ed, 0 xf9a4, 0 xcbf8, 0 x75cb, 0 xb375, 0 x50b4, 0 x3551,
0 xf835, 0 x19f8, 0 x8c1a, 0 x538c, 0 xad52, 0 xa3ac, 0 xb0a3, 0 x5cb0, 0 x6c5c,
0 x5b6c, 0 xc05a, 0 x92c0, 0 x4792, 0 xbe47, 0 x53be, 0 x1554, 0 x5715, 0 x4b57,
0 xe54a, 0 x20e5, 0 x21, 0 xd500, 0 xa1d4, 0 xa8a1, 0 x57a9, 0 xca57, 0 x5ca,
0 x1c06, 0 x4f1c, 0 xe24e, 0 xd9e2, 0 xf0d9, 0 x4af1, 0 x474b, 0 x8146, 0 xe81,
0 xfd0e, 0 x84fd, 0 x7c85, 0 xba7c, 0 x17ba, 0 x4a17, 0 x964a, 0 xf595, 0 xff5,
0 x5310, 0 x3253, 0 x6432, 0 x4263, 0 x2242, 0 xe121, 0 x32e1, 0 xf632, 0 xc5f5,
0 x21c6, 0 x7d22, 0 x8e7c, 0 x418e, 0 x5641, 0 x3156, 0 x7c31, 0 x737c, 0 x373,
0 x2503, 0 xc22a, 0 x3c2, 0 x4a04, 0 x8549, 0 x5285, 0 xa352, 0 xe8a3, 0 x6fe8,
0 x1a6f, 0 x211a, 0 xe021, 0 x38e0, 0 x7638, 0 xf575, 0 x9df5, 0 x169e, 0 xf116,
0 x23f1, 0 xcd23, 0 xece, 0 x660f, 0 x4866, 0 x6a48, 0 x716a, 0 xee71, 0 xa2ee,
0 xb8a2, 0 x61b9, 0 xa361, 0 xf7a2, 0 x26f7, 0 x1127, 0 x6611, 0 xe065, 0 x36e0,
0 x1837, 0 x3018, 0 x1c30, 0 x721b, 0 x3e71, 0 xe43d, 0 x99e4, 0 x9e9a, 0 xb79d,
0 xa9b7, 0 xcaa, 0 xeb0c, 0 x4eb, 0 x1305, 0 x8813, 0 xb687, 0 xa9b6, 0 xfba9,
0 xd7fb, 0 xccd8, 0 x2ecd, 0 x652f, 0 xae65, 0 x3fae, 0 x3a40, 0 x563a, 0 x7556,
0 x2776, 0 x1228, 0 xef12, 0 xf9ee, 0 xcef9, 0 x56cf, 0 xa956, 0 x24a9, 0 xba24,
0 x5fba, 0 x665f, 0 xf465, 0 x8ff4, 0 x6d8f, 0 x346d, 0 x5f34, 0 x385f, 0 xd137,
0 xb8d0, 0 xacb8, 0 x55ac, 0 x7455, 0 xe874, 0 x89e8, 0 xd189, 0 xa0d1, 0 xb2a0,
0 xb8b2, 0 x36b8, 0 x5636, 0 xd355, 0 x8d3, 0 x1908, 0 x2118, 0 xc21, 0 x990c,
0 x8b99, 0 x158c, 0 x7815, 0 x9e78, 0 x6f9e, 0 x4470, 0 x1d44, 0 x341d, 0 x2634,
0 x3f26, 0 x793e, 0 xc79, 0 xcc0b, 0 x26cc, 0 xd126, 0 x1fd1, 0 xb41f, 0 xb6b4,
0 x22b7, 0 xa122, 0 xa1, 0 x7f01, 0 x837e, 0 x3b83, 0 xaf3b, 0 x6fae, 0 x916f,
0 xb490, 0 xffb3, 0 xceff, 0 x50cf, 0 x7550, 0 x7275, 0 x1272, 0 x2613, 0 xaa26,
0 xd5aa, 0 x7d5, 0 x9607, 0 x96, 0 xb100, 0 xf8b0, 0 x4bf8, 0 xdd4c, 0 xeddd,
0 x98ed, 0 x2599, 0 x9325, 0 xeb92, 0 x8feb, 0 xcc8f, 0 x2acd, 0 x392b, 0 x3b39,
0 xcb3b, 0 x6acb, 0 xd46a, 0 xb8d4, 0 x6ab8, 0 x106a, 0 x2f10, 0 x892f, 0 x789,
0 xc806, 0 x45c8, 0 x7445, 0 x3c74, 0 x3a3c, 0 xcf39, 0 xd7ce, 0 x58d8, 0 x6e58,
0 x336e, 0 x1034, 0 xee10, 0 xe9ed, 0 xc2e9, 0 x3fc2, 0 xd53e, 0 xd2d4, 0 xead2,
0 x8fea, 0 x2190, 0 x1162, 0 xbe11, 0 x8cbe, 0 x6d8c, 0 xfb6c, 0 x6dfb, 0 xd36e,
0 x3ad3, 0 xf3a, 0 x870e, 0 xc287, 0 x53c3, 0 xc54, 0 x5b0c, 0 x7d5a, 0 x797d,
0 xec79, 0 x5dec, 0 x4d5e, 0 x184e, 0 xd618, 0 x60d6, 0 xb360, 0 x98b3, 0 xf298,
0 xb1f2, 0 x69b1, 0 xf969, 0 xef9, 0 xab0e, 0 x21ab, 0 xe321, 0 x24e3, 0 x8224,
0 x5481, 0 x5954, 0 x7a59, 0 xff7a, 0 x7dff, 0 x1a7d, 0 xa51a, 0 x46a5, 0 x6b47,
0 xe6b, 0 x830e, 0 xa083, 0 xff9f, 0 xd0ff, 0 xffd0, 0 xe6ff, 0 x7de7, 0 xc67d,
0 xd0c6, 0 x61d1, 0 x3a62, 0 xc3b, 0 x150c, 0 x1715, 0 x4517, 0 x5345, 0 x3954,
0 xdd39, 0 xdadd, 0 x32db, 0 x6a33, 0 xd169, 0 x86d1, 0 xb687, 0 x3fb6, 0 x883f,
0 xa487, 0 x39a4, 0 x2139, 0 xbe20, 0 xffbe, 0 xedfe, 0 x8ded, 0 x368e, 0 xc335,
0 x51c3, 0 x9851, 0 xf297, 0 xd6f2, 0 xb9d6, 0 x95ba, 0 x2096, 0 xea1f, 0 x76e9,
0 x4e76, 0 xe04d, 0 xd0df, 0 x80d0, 0 xa280, 0 xfca2, 0 x75fc, 0 xef75, 0 x32ef,
0 x6833, 0 xdf68, 0 xc4df, 0 x76c4, 0 xb77, 0 xb10a, 0 xbfb1, 0 x58bf, 0 x5258,
0 x4d52, 0 x6c4d, 0 x7e6c, 0 xb67e, 0 xccb5, 0 x8ccc, 0 xbe8c, 0 xc8bd, 0 x9ac8,
0 xa99b, 0 x52a9, 0 x2f53, 0 xc30, 0 x3e0c, 0 xb83d, 0 x83b7, 0 x5383, 0 x7e53,
0 x4f7e, 0 xe24e, 0 xb3e1, 0 x8db3, 0 x618e, 0 xc861, 0 xfcc8, 0 x34fc, 0 x9b35,
0 xaa9b, 0 xb1aa, 0 x5eb1, 0 x395e, 0 x8639, 0 xd486, 0 x8bd4, 0 x558b, 0 x2156,
0 xf721, 0 x4ef6, 0 x14f, 0 x7301, 0 xdd72, 0 x49de, 0 x894a, 0 x9889, 0 x8898,
0 x7788, 0 x7b77, 0 x637b, 0 xb963, 0 xabb9, 0 x7cab, 0 xc87b, 0 x21c8, 0 xcb21,
0 xdfca, 0 xbfdf, 0 xf2bf, 0 x6af2, 0 x626b, 0 xb261, 0 x3cb2, 0 xc63c, 0 xc9c6,
0 xc9c9, 0 xb4c9, 0 xf9b4, 0 x91f9, 0 x4091, 0 x3a40, 0 xcc39, 0 xd1cb, 0 x7ed1,
0 x537f, 0 x6753, 0 xa167, 0 xba49, 0 x88ba, 0 x7789, 0 x3877, 0 xf037, 0 xd3ef,
0 xb5d4, 0 x55b6, 0 xa555, 0 xeca4, 0 xa1ec, 0 xb6a2, 0 x7b7, 0 x9507, 0 xfd94,
0 x82fd, 0 x5c83, 0 x765c, 0 x9676, 0 x3f97, 0 xda3f, 0 x6fda, 0 x646f, 0 x3064,
0 x5e30, 0 x655e, 0 x6465, 0 xcb64, 0 xcdca, 0 x4ccd, 0 x3f4c, 0 x243f, 0 x6f24,
0 x656f, 0 x6065, 0 x3560, 0 x3b36, 0 xac3b, 0 x4aac, 0 x714a, 0 x7e71, 0 xda7e,
0 x7fda, 0 xda7f, 0 x6fda, 0 xff6f, 0 xc6ff, 0 xedc6, 0 xd4ed, 0 x70d5, 0 xeb70,
0 xa3eb, 0 x80a3, 0 xca80, 0 x3fcb, 0 x2540, 0 xf825, 0 x7ef8, 0 xf87e, 0 x73f8,
0 xb474, 0 xb4b4, 0 x92b5, 0 x9293, 0 x93, 0 x3500, 0 x7134, 0 x9071, 0 xfa8f,
0 x51fa, 0 x1452, 0 xba13, 0 x7ab9, 0 x957a, 0 x8a95, 0 x6e8a, 0 x6d6e, 0 x7c6d,
0 x447c, 0 x9744, 0 x4597, 0 x8945, 0 xef88, 0 x8fee, 0 x3190, 0 x4831, 0 x8447,
0 xa183, 0 x1da1, 0 xd41d, 0 x2dd4, 0 x4f2e, 0 xc94e, 0 xcbc9, 0 xc9cb, 0 x9ec9,
0 x319e, 0 xd531, 0 x20d5, 0 x4021, 0 xb23f, 0 x29b2, 0 xd828, 0 xecd8, 0 x5ded,
0 xfc5d, 0 x4dfc, 0 xd24d, 0 x6bd2, 0 x5f6b, 0 xb35e, 0 x7fb3, 0 xee7e, 0 x56ee,
0 xa657, 0 x68a6, 0 x8768, 0 x7787, 0 xb077, 0 x4cb1, 0 x764c, 0 xb175, 0 x7b1,
0 x3d07, 0 x603d, 0 x3560, 0 x3e35, 0 xb03d, 0 xd6b0, 0 xc8d6, 0 xd8c8, 0 x8bd8,
0 x3e8c, 0 x303f, 0 xd530, 0 xf1d4, 0 x42f1, 0 xca42, 0 xddca, 0 x41dd, 0 x3141,
0 x132, 0 xe901, 0 x8e9, 0 xbe09, 0 xe0bd, 0 x2ce0, 0 x862d, 0 x3986, 0 x9139,
0 x6d91, 0 x6a6d, 0 x8d6a, 0 x1b8d, 0 xac1b, 0 xedab, 0 x54ed, 0 xc054, 0 xcebf,
0 xc1ce, 0 x5c2, 0 x3805, 0 x6038, 0 x5960, 0 xd359, 0 xdd3, 0 xbe0d, 0 xafbd,
0 x6daf, 0 x206d, 0 x2c20, 0 x862c, 0 x8e86, 0 xec8d, 0 xa2ec, 0 xa3a2, 0 x51a3,
0 x8051, 0 xfd7f, 0 x91fd, 0 xa292, 0 xaf14, 0 xeeae, 0 x59ef, 0 x535a, 0 x8653,
0 x3986, 0 x9539, 0 xb895, 0 xa0b8, 0 x26a0, 0 x2227, 0 xc022, 0 x77c0, 0 xad77,
0 x46ad, 0 xaa46, 0 x60aa, 0 x8560, 0 x4785, 0 xd747, 0 x45d7, 0 x2346, 0 x5f23,
0 x25f, 0 x1d02, 0 x71d, 0 x8206, 0 xc82, 0 x180c, 0 x3018, 0 x4b30, 0 x4b,
0 x3001, 0 x1230, 0 x2d12, 0 x8c2d, 0 x148d, 0 x4015, 0 x5f3f, 0 x3d5f, 0 x6b3d,
0 x396b, 0 x473a, 0 xf746, 0 x44f7, 0 x8945, 0 x3489, 0 xcb34, 0 x84ca, 0 xd984,
0 xf0d9, 0 xbcf0, 0 x63bd, 0 x3264, 0 xf332, 0 x45f3, 0 x7346, 0 x5673, 0 xb056,
0 xd3b0, 0 x4ad4, 0 x184b, 0 x7d18, 0 x6c7d, 0 xbb6c, 0 xfeba, 0 xe0fe, 0 x10e1,
0 x5410, 0 x2954, 0 x9f28, 0 x3a9f, 0 x5a3a, 0 xdb59, 0 xbdc, 0 xb40b, 0 x1ab4,
0 x131b, 0 x5d12, 0 x6d5c, 0 xe16c, 0 xb0e0, 0 x89b0, 0 xba88, 0 xbb, 0 x3c01,
0 xe13b, 0 x6fe1, 0 x446f, 0 xa344, 0 x81a3, 0 xfe81, 0 xc7fd, 0 x38c8, 0 xb38,
0 x1a0b, 0 x6d19, 0 xf36c, 0 x47f3, 0 x6d48, 0 xb76d, 0 xd3b7, 0 xd8d2, 0 x52d9,
0 x4b53, 0 xa54a, 0 x34a5, 0 xc534, 0 x9bc4, 0 xed9b, 0 xbeed, 0 x3ebe, 0 x233e,
0 x9f22, 0 x4a9f, 0 x774b, 0 x4577, 0 xa545, 0 x64a5, 0 xb65, 0 x870b, 0 x487,
0 x9204, 0 x5f91, 0 xd55f, 0 x35d5, 0 x1a35, 0 x71a, 0 x7a07, 0 x4e7a, 0 xfc4e,
0 x1efc, 0 x481f, 0 x7448, 0 xde74, 0 xa7dd, 0 x1ea7, 0 xaa1e, 0 xcfaa, 0 xfbcf,
0 xedfb, 0 x6eee, 0 x386f, 0 x4538, 0 x6e45, 0 xd96d, 0 x11d9, 0 x7912, 0 x4b79,
0 x494b, 0 x6049, 0 xac5f, 0 x65ac, 0 x1366, 0 x5913, 0 xe458, 0 x7ae4, 0 x387a,
0 x3c38, 0 xb03c, 0 x76b0, 0 x9376, 0 xe193, 0 x42e1, 0 x7742, 0 x6476, 0 x3564,
0 x3c35, 0 x6a3c, 0 xcc69, 0 x94cc, 0 x5d95, 0 xe5e, 0 xee0d, 0 x4ced, 0 xce4c,
0 x52ce, 0 xaa52, 0 xdaaa, 0 xe4da, 0 x1de5, 0 x4530, 0 x5445, 0 x3954, 0 xb639,
0 x81b6, 0 x7381, 0 x1574, 0 xc215, 0 x10c2, 0 x3f10, 0 x6b3f, 0 xe76b, 0 x7be7,
0 xbc7b, 0 xf7bb, 0 x41f7, 0 xcc41, 0 x38cc, 0 x4239, 0 xa942, 0 x4a9, 0 xc504,
0 x7cc4, 0 x437c, 0 x6743, 0 xea67, 0 x8dea, 0 xe88d, 0 xd8e8, 0 xdcd8, 0 x17dd,
0 x5718, 0 x958, 0 xa609, 0 x41a5, 0 x5842, 0 x159, 0 x9f01, 0 x269f, 0 x5a26,
0 x405a, 0 xc340, 0 xb4c3, 0 xd4b4, 0 xf4d3, 0 xf1f4, 0 x39f2, 0 xe439, 0 x67e4,
0 x4168, 0 xa441, 0 xdda3, 0 xdedd, 0 x9df, 0 xab0a, 0 xa5ab, 0 x9a6, 0 xba09,
0 x9ab9, 0 xad9a, 0 x5ae, 0 xe205, 0 xece2, 0 xecec, 0 x14ed, 0 xd614, 0 x6bd5,
0 x916c, 0 x3391, 0 x6f33, 0 x206f, 0 x8020, 0 x780, 0 x7207, 0 x2472, 0 x8a23,
0 xb689, 0 x3ab6, 0 xf739, 0 x97f6, 0 xb097, 0 xa4b0, 0 xe6a4, 0 x88e6, 0 x2789,
0 xb28, 0 x350b, 0 x1f35, 0 x431e, 0 x1043, 0 xc30f, 0 x79c3, 0 x379, 0 x5703,
0 x3256, 0 x4732, 0 x7247, 0 x9d72, 0 x489d, 0 xd348, 0 xa4d3, 0 x7ca4, 0 xbf7b,
0 x45c0, 0 x7b45, 0 x337b, 0 x4034, 0 x843f, 0 xd083, 0 x35d0, 0 x6335, 0 x4d63,
0 xe14c, 0 xcce0, 0 xfecc, 0 x35ff, 0 x5636, 0 xf856, 0 xeef8, 0 x2def, 0 xfc2d,
0 x4fc, 0 x6e04, 0 xb66d, 0 x78b6, 0 xbb78, 0 x3dbb, 0 x9a3d, 0 x839a, 0 x9283,
0 x593, 0 xd504, 0 x23d5, 0 x5424, 0 xd054, 0 x61d0, 0 xdb61, 0 x17db, 0 x1f18,
0 x381f, 0 x9e37, 0 x679e, 0 x1d68, 0 x381d, 0 x8038, 0 x917f, 0 x491, 0 xbb04,
0 x23bb, 0 x4124, 0 xd41, 0 xa30c, 0 x8ba3, 0 x8b8b, 0 xc68b, 0 xd2c6, 0 xebd2,
0 x93eb, 0 xbd93, 0 x99bd, 0 x1a99, 0 xea19, 0 x58ea, 0 xcf58, 0 x73cf, 0 x1073,
0 x9e10, 0 x139e, 0 xea13, 0 xcde9, 0 x3ecd, 0 x883f, 0 xf89, 0 x180f, 0 x2a18,
0 x212a, 0 xce20, 0 x73ce, 0 xf373, 0 x60f3, 0 xad60, 0 x4093, 0 x8e40, 0 xb98e,
0 xbfb9, 0 xf1bf, 0 x8bf1, 0 x5e8c, 0 xe95e, 0 x14e9, 0 x4e14, 0 x1c4e, 0 x7f1c,
0 xe77e, 0 x6fe7, 0 xf26f, 0 x13f2, 0 x8b13, 0 xda8a, 0 x5fda, 0 xea5f, 0 x4eea,
0 xa84f, 0 x88a8, 0 x1f88, 0 x2820, 0 x9728, 0 x5a97, 0 x3f5b, 0 xb23f, 0 x70b2,
0 x2c70, 0 x232d, 0 xf623, 0 x4f6, 0 x905, 0 x7509, 0 xd675, 0 x28d7, 0 x9428,
0 x3794, 0 xf036, 0 x2bf0, 0 xba2c, 0 xedb9, 0 xd7ed, 0 x59d8, 0 xed59, 0 x4ed,
0 xe304, 0 x18e3, 0 x5c19, 0 x3d5c, 0 x753d, 0 x6d75, 0 x956d, 0 x7f95, 0 xc47f,
0 x83c4, 0 xa84, 0 x2e0a, 0 x5f2e, 0 xb95f, 0 x77b9, 0 x6d78, 0 xf46d, 0 x1bf4,
0 xed1b, 0 xd6ed, 0 xe0d6, 0 x5e1, 0 x3905, 0 x5638, 0 xa355, 0 x99a2, 0 xbe99,
0 xb4bd, 0 x85b4, 0 x2e86, 0 x542e, 0 x6654, 0 xd765, 0 x73d7, 0 x3a74, 0 x383a,
0 x2638, 0 x7826, 0 x7677, 0 x9a76, 0 x7e99, 0 x2e7e, 0 xea2d, 0 xa6ea, 0 x8a7,
0 x109, 0 x3300, 0 xad32, 0 x5fad, 0 x465f, 0 x2f46, 0 xc62f, 0 xd4c5, 0 xad5,
0 xcb0a, 0 x4cb, 0 xb004, 0 x7baf, 0 xe47b, 0 x92e4, 0 x8e92, 0 x638e, 0 x1763,
0 xc17, 0 xf20b, 0 x1ff2, 0 x8920, 0 x5889, 0 xcb58, 0 xf8cb, 0 xcaf8, 0 x84cb,
0 x9f84, 0 x8a9f, 0 x918a, 0 x4991, 0 x8249, 0 xff81, 0 x46ff, 0 x5046, 0 x5f50,
0 x725f, 0 xf772, 0 x8ef7, 0 xe08f, 0 xc1e0, 0 x1fc2, 0 x9e1f, 0 x8b9d, 0 x108b,
0 x411, 0 x2b04, 0 xb02a, 0 x1fb0, 0 x1020, 0 x7a0f, 0 x587a, 0 x8958, 0 xb188,
0 xb1b1, 0 x49b2, 0 xb949, 0 x7ab9, 0 x917a, 0 xfc91, 0 xe6fc, 0 x47e7, 0 xbc47,
0 x8fbb, 0 xea8e, 0 x34ea, 0 x2635, 0 x1726, 0 x9616, 0 xc196, 0 xa6c1, 0 xf3a6,
0 x11f3, 0 x4811, 0 x3e48, 0 xeb3e, 0 xf7ea, 0 x1bf8, 0 xdb1c, 0 x8adb, 0 xe18a,
0 x42e1, 0 x9d42, 0 x5d9c, 0 x6e5d, 0 x286e, 0 x4928, 0 x9a49, 0 xb09c, 0 xa6b0,
0 x2a7, 0 xe702, 0 xf5e6, 0 x9af5, 0 xf9b, 0 x810f, 0 x8080, 0 x180, 0 x1702,
0 x5117, 0 xa650, 0 x11a6, 0 x1011, 0 x550f, 0 xd554, 0 xbdd5, 0 x6bbe, 0 xc66b,
0 xfc7, 0 x5510, 0 x5555, 0 x7655, 0 x177, 0 x2b02, 0 x6f2a, 0 xb70, 0 x9f0b,
0 xcf9e, 0 xf3cf, 0 x3ff4, 0 xcb40, 0 x8ecb, 0 x768e, 0 x5277, 0 x8652, 0 x9186,
0 x9991, 0 x5099, 0 xd350, 0 x93d3, 0 x6d94, 0 xe6d, 0 x530e, 0 x3153, 0 xa531,
0 x64a5, 0 x7964, 0 x7c79, 0 x467c, 0 x1746, 0 x3017, 0 x3730, 0 x538, 0 x5,
0 x1e00, 0 x5b1e, 0 x955a, 0 xae95, 0 x3eaf, 0 xff3e, 0 xf8ff, 0 xb2f9, 0 xa1b3,
0 xb2a1, 0 x5b2, 0 xad05, 0 x7cac, 0 x2d7c, 0 xd32c, 0 x80d2, 0 x7280, 0 x8d72,
0 x1b8e, 0 x831b, 0 xac82, 0 xfdac, 0 xa7fd, 0 x15a8, 0 xd614, 0 xe0d5, 0 x7be0,
0 xb37b, 0 x61b3, 0 x9661, 0 x9d95, 0 xc79d, 0 x83c7, 0 xd883, 0 xead7, 0 xceb,
0 xf60c, 0 xa9f5, 0 x19a9, 0 xa019, 0 x8f9f, 0 xd48f, 0 x3ad5, 0 x853a, 0 x985,
0 x5309, 0 x6f52, 0 x1370, 0 x6e13, 0 xa96d, 0 x98a9, 0 x5198, 0 x9f51, 0 xb69f,
0 xa1b6, 0 x2ea1, 0 x672e, 0 x2067, 0 x6520, 0 xaf65, 0 x6eaf, 0 x7e6f, 0 xee7e,
0 x17ef, 0 xa917, 0 xcea8, 0 x9ace, 0 xff99, 0 x5dff, 0 xdf5d, 0 x38df, 0 xa39,
0 x1c0b, 0 xe01b, 0 x46e0, 0 xcb46, 0 x90cb, 0 xba90, 0 x4bb, 0 x9104, 0 x9d90,
0 xc89c, 0 xf6c8, 0 x6cf6, 0 x886c, 0 x1789, 0 xbd17, 0 x70bc, 0 x7e71, 0 x17e,
0 x1f01, 0 xa01f, 0 xbaa0, 0 x14bb, 0 xfc14, 0 x7afb, 0 xa07a, 0 x3da0, 0 xbf3d,
0 x48bf, 0 x8c48, 0 x968b, 0 x9d96, 0 xfd9d, 0 x96fd, 0 x9796, 0 x6b97, 0 xd16b,
0 xf4d1, 0 x3bf4, 0 x253c, 0 x9125, 0 x6691, 0 xc166, 0 x34c1, 0 x5735, 0 x1a57,
0 xdc19, 0 x77db, 0 x8577, 0 x4a85, 0 x824a, 0 x9182, 0 x7f91, 0 xfd7f, 0 xb4c3,
0 xb5b4, 0 xb3b5, 0 x7eb3, 0 x617e, 0 x4e61, 0 xa4f, 0 x530a, 0 x3f52, 0 xa33e,
0 x34a3, 0 x9234, 0 xf091, 0 xf4f0, 0 x1bf5, 0 x311b, 0 x9631, 0 x6a96, 0 x386b,
0 x1d39, 0 xe91d, 0 xe8e9, 0 x69e8, 0 x426a, 0 xee42, 0 x89ee, 0 x368a, 0 x2837,
0 x7428, 0 x5974, 0 x6159, 0 x1d62, 0 x7b1d, 0 xf77a, 0 x7bf7, 0 x6b7c, 0 x696c,
0 xf969, 0 x4cf9, 0 x714c, 0 x4e71, 0 x6b4e, 0 x256c, 0 x6e25, 0 xe96d, 0 x94e9,
0 x8f94, 0 x3e8f, 0 x343e, 0 x4634, 0 xb646, 0 x97b5, 0 x8997, 0 xe8a, 0 x900e,
0 x8090, 0 xfd80, 0 xa0fd, 0 x16a1, 0 xf416, 0 xebf4, 0 x95ec, 0 x1196, 0 x8911,
0 x3d89, 0 xda3c, 0 x9fd9, 0 xd79f, 0 x4bd7, 0 x214c, 0 x3021, 0 x4f30, 0 x994e,
0 x5c99, 0 x6f5d, 0 x326f, 0 xab31, 0 x6aab, 0 xe969, 0 x90e9, 0 x1190, 0 xff10,
0 xa2fe, 0 xe0a2, 0 x66e1, 0 x4067, 0 x9e3f, 0 x2d9e, 0 x712d, 0 x8170, 0 xd180,
0 xffd1, 0 x25ff, 0 x3826, 0 x2538, 0 x5f24, 0 xc45e, 0 x1cc4, 0 xdf1c, 0 x93df,
0 xc793, 0 x80c7, 0 x2380, 0 xd223, 0 x7ed2, 0 xfc7e, 0 x22fd, 0 x7422, 0 x1474,
0 xb714, 0 x7db6, 0 x857d, 0 xa85, 0 xa60a, 0 x88a6, 0 x4289, 0 x7842, 0 xc278,
0 xf7c2, 0 xcdf7, 0 x84cd, 0 xae84, 0 x8cae, 0 xb98c, 0 x1aba, 0 x4d1a, 0 x884c,
0 x4688, 0 xcc46, 0 xd8cb, 0 x2bd9, 0 xbe2b, 0 xa2be, 0 x72a2, 0 xf772, 0 xd2f6,
0 x75d2, 0 xc075, 0 xa3c0, 0 x63a3, 0 xae63, 0 x8fae, 0 x2a90, 0 x5f2a, 0 xef5f,
0 x5cef, 0 xa05c, 0 x89a0, 0 x5e89, 0 x6b5e, 0 x736b, 0 x773, 0 x9d07, 0 xe99c,
0 x27ea, 0 x2028, 0 xc20, 0 x980b, 0 x4797, 0 x2848, 0 x9828, 0 xc197, 0 x48c2,
0 x2449, 0 x7024, 0 x570, 0 x3e05, 0 xd3e, 0 xf60c, 0 xbbf5, 0 x69bb, 0 x3f6a,
0 x740, 0 xf006, 0 xe0ef, 0 xbbe0, 0 xadbb, 0 x56ad, 0 xcf56, 0 xbfce, 0 xa9bf,
0 x205b, 0 x6920, 0 xae69, 0 x50ae, 0 x2050, 0 xf01f, 0 x27f0, 0 x9427, 0 x8993,
0 x8689, 0 x4087, 0 x6e40, 0 xb16e, 0 xa1b1, 0 xe8a1, 0 x87e8, 0 x6f88, 0 xfe6f,
0 x4cfe, 0 xe94d, 0 xd5e9, 0 x47d6, 0 x3148, 0 x5f31, 0 xc35f, 0 x13c4, 0 xa413,
0 x5a5, 0 x2405, 0 xc223, 0 x66c2, 0 x3667, 0 x5e37, 0 x5f5e, 0 x2f5f, 0 x8c2f,
0 xe48c, 0 xd0e4, 0 x4d1, 0 xd104, 0 xe4d0, 0 xcee4, 0 xfcf, 0 x480f, 0 xa447,
0 x5ea4, 0 xff5e, 0 xbefe, 0 x8dbe, 0 x1d8e, 0 x411d, 0 x1841, 0 x6918, 0 x5469,
0 x1155, 0 xc611, 0 xaac6, 0 x37ab, 0 x2f37, 0 xca2e, 0 x87ca, 0 xbd87, 0 xabbd,
0 xb3ab, 0 xcb4, 0 xce0c, 0 xfccd, 0 xa5fd, 0 x72a5, 0 xf072, 0 x83f0, 0 xfe83,
0 x97fd, 0 xc997, 0 xb0c9, 0 xadb0, 0 xe6ac, 0 x88e6, 0 x1088, 0 xbe10, 0 x16be,
0 xa916, 0 xa3a8, 0 x46a3, 0 x5447, 0 xe953, 0 x84e8, 0 x2085, 0 xa11f, 0 xfa1,
0 xdd0f, 0 xbedc, 0 x5abe, 0 x805a, 0 xc97f, 0 x6dc9, 0 x826d, 0 x4a82, 0 x934a,
0 x5293, 0 xd852, 0 xd3d8, 0 xadd3, 0 xf4ad, 0 xf3f4, 0 xfcf3, 0 xfefc, 0 xcafe,
0 xb7ca, 0 x3cb8, 0 xa13c, 0 x18a1, 0 x1418, 0 xea13, 0 x91ea, 0 xf891, 0 x53f8,
0 xa254, 0 xe9a2, 0 x87ea, 0 x4188, 0 x1c41, 0 xdc1b, 0 xf5db, 0 xcaf5, 0 x45ca,
0 x6d45, 0 x396d, 0 xde39, 0 x90dd, 0 x1e91, 0 x1e, 0 x7b00, 0 x6a7b, 0 xa46a,
0 xc9a3, 0 x9bc9, 0 x389b, 0 x1139, 0 x5211, 0 x1f52, 0 xeb1f, 0 xabeb, 0 x48ab,
0 x9348, 0 xb392, 0 x17b3, 0 x1618, 0 x5b16, 0 x175b, 0 xdc17, 0 xdedb, 0 x1cdf,
0 xeb1c, 0 xd1ea, 0 x4ad2, 0 xd4b, 0 xc20c, 0 x24c2, 0 x7b25, 0 x137b, 0 x8b13,
0 x618b, 0 xa061, 0 xff9f, 0 xfffe, 0 x72ff, 0 xf572, 0 xe2f5, 0 xcfe2, 0 xd2cf,
0 x75d3, 0 x6a76, 0 xc469, 0 x1ec4, 0 xfc1d, 0 x59fb, 0 x455a, 0 x7a45, 0 xa479,
0 xb7a4
};
static u8 tmp_buf[TEST_BUFLEN];
#define full_csum(buff, len, sum) csum_fold(csum_partial(buff, len, sum))
#define CHECK_EQ(lhs, rhs) KUNIT_ASSERT_EQ(test, (__force u64)lhs, (__force u64)rhs)
static __sum16 to_sum16(u16 x)
{
return (__force __sum16)le16_to_cpu((__force __le16)x);
}
/* This function swaps the bytes inside each half of a __wsum */
static __wsum to_wsum(u32 x)
{
u16 hi = le16_to_cpu((__force __le16)(x >> 16 ));
u16 lo = le16_to_cpu((__force __le16)x);
return (__force __wsum)((hi << 16 ) | lo);
}
static void assert_setup_correct(struct kunit *test)
{
CHECK_EQ(ARRAY_SIZE(random_buf), MAX_LEN);
CHECK_EQ(ARRAY_SIZE(expected_results), MAX_LEN);
CHECK_EQ(ARRAY_SIZE(init_sums_no_overflow), MAX_LEN);
}
/*
* Test with randomized input (pre determined random with known results).
*/
static void test_csum_fixed_random_inputs(struct kunit *test)
{
int len, align;
__wsum sum;
__sum16 result, expec;
assert_setup_correct(test);
for (align = 0 ; align < TEST_BUFLEN; ++align) {
memcpy(&tmp_buf[align], random_buf,
min(MAX_LEN, TEST_BUFLEN - align));
for (len = 0 ; len < MAX_LEN && (align + len) < TEST_BUFLEN;
++len) {
/*
* Test the precomputed random input.
*/
sum = to_wsum(random_init_sum);
result = full_csum(&tmp_buf[align], len, sum);
expec = to_sum16(expected_results[len]);
CHECK_EQ(result, expec);
}
}
}
/*
* All ones input test. If there are any missing carry operations, it fails.
*/
static void test_csum_all_carry_inputs(struct kunit *test)
{
int len, align;
__wsum sum;
__sum16 result, expec;
assert_setup_correct(test);
memset(tmp_buf, 0 xff, TEST_BUFLEN);
for (align = 0 ; align < TEST_BUFLEN; ++align) {
for (len = 0 ; len < MAX_LEN && (align + len) < TEST_BUFLEN;
++len) {
/*
* All carries from input and initial sum.
*/
sum = to_wsum(0 xffffffff);
result = full_csum(&tmp_buf[align], len, sum);
expec = to_sum16((len & 1 ) ? 0 xff00 : 0 );
CHECK_EQ(result, expec);
/*
* All carries from input.
*/
sum = 0 ;
result = full_csum(&tmp_buf[align], len, sum);
if (len & 1 )
expec = to_sum16(0 xff00);
else if (len)
expec = 0 ;
else
expec = to_sum16(0 xffff);
CHECK_EQ(result, expec);
}
}
}
/*
* Test with input that alone doesn't cause any carries. By selecting the
* maximum initial sum, this allows us to test that there are no carries
* where there shouldn't be.
*/
static void test_csum_no_carry_inputs(struct kunit *test)
{
int len, align;
__wsum sum;
__sum16 result, expec;
assert_setup_correct(test);
memset(tmp_buf, 0 x4, TEST_BUFLEN);
for (align = 0 ; align < TEST_BUFLEN; ++align) {
for (len = 0 ; len < MAX_LEN && (align + len) < TEST_BUFLEN;
++len) {
/*
* Expect no carries.
*/
sum = to_wsum(init_sums_no_overflow[len]);
result = full_csum(&tmp_buf[align], len, sum);
expec = 0 ;
CHECK_EQ(result, expec);
/*
* Expect one carry.
*/
sum = to_wsum(init_sums_no_overflow[len] + 1 );
result = full_csum(&tmp_buf[align], len, sum);
expec = to_sum16(len ? 0 xfffe : 0 xffff);
CHECK_EQ(result, expec);
}
}
}
static void test_ip_fast_csum(struct kunit *test)
{
__sum16 csum_result;
u16 expected;
for (int len = IPv4_MIN_WORDS; len < IPv4_MAX_WORDS; len++) {
for (int index = 0 ; index < NUM_IP_FAST_CSUM_TESTS; index++) {
csum_result = ip_fast_csum(random_buf + index, len);
expected =
expected_fast_csum[(len - IPv4_MIN_WORDS) *
NUM_IP_FAST_CSUM_TESTS +
index];
CHECK_EQ(to_sum16(expected), csum_result);
}
}
}
static void test_csum_ipv6_magic(struct kunit *test)
{
const struct in6_addr *saddr;
const struct in6_addr *daddr;
unsigned int len;
unsigned char proto;
__wsum csum;
if (!IS_ENABLED(CONFIG_NET))
return ;
const int daddr_offset = sizeof (struct in6_addr);
const int len_offset = sizeof (struct in6_addr) + sizeof (struct in6_addr);
const int proto_offset = sizeof (struct in6_addr) + sizeof (struct in6_addr) +
sizeof (int );
const int csum_offset = sizeof (struct in6_addr) + sizeof (struct in6_addr) +
sizeof (int ) + sizeof (char );
for (int i = 0 ; i < NUM_IPv6_TESTS; i++) {
saddr = (const struct in6_addr *)(random_buf + i);
daddr = (const struct in6_addr *)(random_buf + i +
daddr_offset);
len = le32_to_cpu(*(__le32 *)(random_buf + i + len_offset));
proto = *(random_buf + i + proto_offset);
csum = *(__wsum *)(random_buf + i + csum_offset);
CHECK_EQ(to_sum16(expected_csum_ipv6_magic[i]),
csum_ipv6_magic(saddr, daddr, len, proto, csum));
}
}
static struct kunit_case __refdata checksum_test_cases[] = {
KUNIT_CASE(test_csum_fixed_random_inputs),
KUNIT_CASE(test_csum_all_carry_inputs),
KUNIT_CASE(test_csum_no_carry_inputs),
KUNIT_CASE(test_ip_fast_csum),
KUNIT_CASE(test_csum_ipv6_magic),
{}
};
static struct kunit_suite checksum_test_suite = {
.name = "checksum" ,
.test_cases = checksum_test_cases,
};
kunit_test_suites(&checksum_test_suite);
MODULE_AUTHOR("Noah Goldstein <goldstein.w.n@gmail.com>" );
MODULE_DESCRIPTION("Test cases csum_* APIs" );
MODULE_LICENSE("GPL" );
Messung V0.5 in Prozent C=94 H=93 G=93