Advertisement
Guest User

Untitled

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