55 |
|
|
56 |
DEBUGF(INET_DEBUG, ("lwip_chksum(%p, %d)\n", dataptr, len)); |
DEBUGF(INET_DEBUG, ("lwip_chksum(%p, %d)\n", dataptr, len)); |
57 |
for(acc = 0; len > 1; len -= 2) { |
for(acc = 0; len > 1; len -= 2) { |
58 |
// acc = acc + *((u16_t *)dataptr)++; |
/* acc = acc + *((u16_t *)dataptr)++;*/ |
59 |
acc += *(u16_t *)dataptr; |
acc += *(u16_t *)dataptr; |
60 |
dataptr = (void *)((u16_t *)dataptr + 1); |
dataptr = (void *)((u16_t *)dataptr + 1); |
61 |
} |
} |
94 |
swapped = 0; |
swapped = 0; |
95 |
/* iterate through all pbuf in chain */ |
/* iterate through all pbuf in chain */ |
96 |
for(q = p; q != NULL; q = q->next) { |
for(q = p; q != NULL; q = q->next) { |
97 |
DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n", q, q->next)); |
DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n", (void *) q, (void *)q->next)); |
98 |
acc += lwip_chksum(q->payload, q->len); |
acc += lwip_chksum(q->payload, q->len); |
99 |
//DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%lx \n", acc)); |
/*DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%lx \n", acc));*/ |
100 |
while(acc >> 16) { |
while(acc >> 16) { |
101 |
acc = (acc & 0xffffUL) + (acc >> 16); |
acc = (acc & 0xffffUL) + (acc >> 16); |
102 |
} |
} |
104 |
swapped = 1 - swapped; |
swapped = 1 - swapped; |
105 |
acc = ((acc & 0xff) << 8) | ((acc & 0xff00UL) >> 8); |
acc = ((acc & 0xff) << 8) | ((acc & 0xff00UL) >> 8); |
106 |
} |
} |
107 |
//DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%lx \n", acc)); |
/*DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%lx \n", acc));*/ |
108 |
} |
} |
109 |
|
|
110 |
if(swapped) { |
if(swapped) { |