Advertisement
Guest User

Untitled

a guest
May 30th, 2017
628
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.44 KB | None | 0 0
  1. u16 __checksum_ex( u16 sum, void const * _data, u16 len )
  2. {
  3. u16 t;
  4. const u08 * data = _data, *dataptr = data, *last_byte = data + len - 1;
  5.  
  6. while(dataptr < last_byte) { /* At least two more bytes */
  7. t = (dataptr[0] << 8) + dataptr[1];
  8. sum += t;
  9. if(sum < t) ++sum; // carry
  10. dataptr += 2;
  11. }
  12.  
  13. if(dataptr == last_byte) {
  14. t = (dataptr[0] << 8) + 0;
  15. sum += t;
  16. if(sum < t) ++sum; // carry
  17. }
  18.  
  19. /* Return sum in host byte order. */
  20. return sum;
  21. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement