diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/dnet/ip.h | 44 | ||||
-rw-r--r-- | ext/drampower/src/Utils.h | 1 |
2 files changed, 5 insertions, 40 deletions
diff --git a/ext/dnet/ip.h b/ext/dnet/ip.h index 95b7718fb..d2f9ad1d8 100644 --- a/ext/dnet/ip.h +++ b/ext/dnet/ip.h @@ -428,47 +428,13 @@ inline int ip_cksum_add(const void *buf, size_t len, int cksum) { uint16_t *sp = (uint16_t *)buf; - int n, sn; + int sn; sn = len / 2; - n = (sn + 15) / 16; - - /* XXX - unroll loop using Duff's device. */ - switch (sn % 16) { - case 0: do { - cksum += *sp++; - case 15: - cksum += *sp++; - case 14: - cksum += *sp++; - case 13: - cksum += *sp++; - case 12: - cksum += *sp++; - case 11: - cksum += *sp++; - case 10: - cksum += *sp++; - case 9: - cksum += *sp++; - case 8: - cksum += *sp++; - case 7: - cksum += *sp++; - case 6: - cksum += *sp++; - case 5: - cksum += *sp++; - case 4: - cksum += *sp++; - case 3: - cksum += *sp++; - case 2: - cksum += *sp++; - case 1: - cksum += *sp++; - } while (--n > 0); - } + + do { + cksum += *sp++; + } while (--sn > 0); if (len & 1) cksum += htons(*(u_char *)sp << 8); diff --git a/ext/drampower/src/Utils.h b/ext/drampower/src/Utils.h index 80f4390c7..7c165a303 100644 --- a/ext/drampower/src/Utils.h +++ b/ext/drampower/src/Utils.h @@ -46,7 +46,6 @@ template<typename T> T fromString(const std::string& s, std::ios_base& (*f)(std::ios_base &) = std::dec) -throw(std::runtime_error) { std::istringstream is(s); T t; |