67 |
} |
} |
68 |
|
|
69 |
/* add up any odd byte */ |
/* add up any odd byte */ |
70 |
if(len == 1) { |
if (len == 1) { |
71 |
acc += htons((u16_t)(*(u8_t *)dataptr) << 8); |
acc += htons((u16_t)(*(u8_t *)dataptr) << 8); |
72 |
} |
} |
73 |
|
|
93 |
swapped = 0; |
swapped = 0; |
94 |
for(q = p; q != NULL; q = q->next) { |
for(q = p; q != NULL; q = q->next) { |
95 |
acc += chksum(q->payload, q->len); |
acc += chksum(q->payload, q->len); |
96 |
while(acc >> 16) { |
while (acc >> 16) { |
97 |
acc = (acc & 0xffff) + (acc >> 16); |
acc = (acc & 0xffff) + (acc >> 16); |
98 |
} |
} |
99 |
if(q->len % 2 != 0) { |
if (q->len % 2 != 0) { |
100 |
swapped = 1 - swapped; |
swapped = 1 - swapped; |
101 |
acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8); |
acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8); |
102 |
} |
} |
103 |
} |
} |
104 |
|
|
105 |
if(swapped) { |
if (swapped) { |
106 |
acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8); |
acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8); |
107 |
} |
} |
108 |
|
|
109 |
for(i = 0; i < 8; i++) { |
for(i = 0; i < 8; i++) { |
110 |
acc += ((u16_t *)src->addr)[i] & 0xffff; |
acc += ((u16_t *)src->addr)[i] & 0xffff; |
111 |
acc += ((u16_t *)dest->addr)[i] & 0xffff; |
acc += ((u16_t *)dest->addr)[i] & 0xffff; |
112 |
while(acc >> 16) { |
while (acc >> 16) { |
113 |
acc = (acc & 0xffff) + (acc >> 16); |
acc = (acc & 0xffff) + (acc >> 16); |
114 |
} |
} |
115 |
} |
} |
117 |
acc += ((u16_t *)&proto_len)[0] & 0xffff; |
acc += ((u16_t *)&proto_len)[0] & 0xffff; |
118 |
acc += ((u16_t *)&proto_len)[1] & 0xffff; |
acc += ((u16_t *)&proto_len)[1] & 0xffff; |
119 |
|
|
120 |
while(acc >> 16) { |
while (acc >> 16) { |
121 |
acc = (acc & 0xffff) + (acc >> 16); |
acc = (acc & 0xffff) + (acc >> 16); |
122 |
} |
} |
123 |
return ~(acc & 0xffff); |
return ~(acc & 0xffff); |
151 |
swapped = 0; |
swapped = 0; |
152 |
for(q = p; q != NULL; q = q->next) { |
for(q = p; q != NULL; q = q->next) { |
153 |
acc += chksum(q->payload, q->len); |
acc += chksum(q->payload, q->len); |
154 |
while(acc >> 16) { |
while (acc >> 16) { |
155 |
acc = (acc & 0xffff) + (acc >> 16); |
acc = (acc & 0xffff) + (acc >> 16); |
156 |
} |
} |
157 |
if(q->len % 2 != 0) { |
if (q->len % 2 != 0) { |
158 |
swapped = 1 - swapped; |
swapped = 1 - swapped; |
159 |
acc = (acc & 0xff << 8) | (acc & 0xff00 >> 8); |
acc = (acc & 0xff << 8) | (acc & 0xff00 >> 8); |
160 |
} |
} |
161 |
} |
} |
162 |
|
|
163 |
if(swapped) { |
if (swapped) { |
164 |
acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8); |
acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8); |
165 |
} |
} |
166 |
return ~(acc & 0xffff); |
return ~(acc & 0xffff); |