Message ID | 1358006986-7248-2-git-send-email-dmitry@daynix.com |
---|---|
State | New |
Headers | show |
On Sat, Jan 12, 2013 at 06:09:42PM +0200, Dmitry Fleytman wrote: > +static inline uint32_t > +net_checksum_add(int len, uint8_t *buf) > +{ > + return net_checksum_add_cont(len, buf, 0); > +} > + > +static inline uint16_t > +net_raw_checksum(uint8_t *data, int length) > +{ > + return net_checksum_finish(net_checksum_add(length, data)); > +} 4-space indentation. Don't bother resending because of this, it can be fixed when merging the patch. Stefan
Fixed. Thanks. On Wed, Jan 16, 2013 at 4:27 PM, Stefan Hajnoczi <stefanha@gmail.com> wrote: > On Sat, Jan 12, 2013 at 06:09:42PM +0200, Dmitry Fleytman wrote: > > +static inline uint32_t > > +net_checksum_add(int len, uint8_t *buf) > > +{ > > + return net_checksum_add_cont(len, buf, 0); > > +} > > + > > +static inline uint16_t > > +net_raw_checksum(uint8_t *data, int length) > > +{ > > + return net_checksum_finish(net_checksum_add(length, data)); > > +} > > 4-space indentation. Don't bother resending because of this, it can be > fixed when merging the patch. > > Stefan >
Dmitry Fleytman <dmitry@daynix.com> writes: > Adding utility function net_raw_checksum() that calculates checksum > of buffer given Your subject is excessively long. Please stick to the standard commit message format: subsystem: summary phrase (no more than 75 chars, please) Zero or more paragraphs of description. Wrap long lines, please (75 chars tops).
Thanks Markus, I'll fix this. Dmitry On Mon, Jan 21, 2013 at 2:48 PM, Markus Armbruster <armbru@redhat.com>wrote: > Dmitry Fleytman <dmitry@daynix.com> writes: > > > Adding utility function net_raw_checksum() that calculates checksum > > of buffer given > > Your subject is excessively long. Please stick to the standard commit > message format: > > subsystem: summary phrase (no more than 75 chars, please) > > Zero or more paragraphs of description. Wrap long lines, please (75 > chars tops). >
diff --git a/include/net/checksum.h b/include/net/checksum.h index 1f05298..171924c 100644 --- a/include/net/checksum.h +++ b/include/net/checksum.h @@ -20,10 +20,22 @@ #include <stdint.h> -uint32_t net_checksum_add(int len, uint8_t *buf); +uint32_t net_checksum_add_cont(int len, uint8_t *buf, int seq); uint16_t net_checksum_finish(uint32_t sum); uint16_t net_checksum_tcpudp(uint16_t length, uint16_t proto, uint8_t *addrs, uint8_t *buf); void net_checksum_calculate(uint8_t *data, int length); +static inline uint32_t +net_checksum_add(int len, uint8_t *buf) +{ + return net_checksum_add_cont(len, buf, 0); +} + +static inline uint16_t +net_raw_checksum(uint8_t *data, int length) +{ + return net_checksum_finish(net_checksum_add(length, data)); +} + #endif /* QEMU_NET_CHECKSUM_H */ diff --git a/net/checksum.c b/net/checksum.c index 9919b2e..4fa5563 100644 --- a/net/checksum.c +++ b/net/checksum.c @@ -20,16 +20,17 @@ #define PROTO_TCP 6 #define PROTO_UDP 17 -uint32_t net_checksum_add(int len, uint8_t *buf) +uint32_t net_checksum_add_cont(int len, uint8_t *buf, int seq) { uint32_t sum = 0; int i; - for (i = 0; i < len; i++) { - if (i & 1) - sum += (uint32_t)buf[i]; - else - sum += (uint32_t)buf[i] << 8; + for (i = seq; i < seq + len; i++) { + if (i & 1) { + sum += (uint32_t)buf[i - seq]; + } else { + sum += (uint32_t)buf[i - seq] << 8; + } } return sum; }