Message ID | 20100906115026.GA16300@redhat.com |
---|---|
State | New |
Headers | show |
"Michael S. Tsirkin" <mst@redhat.com> wrote: > Patch b0b900070c7cb29bbefb732ec00397abe5de6d73 made > TOR valuer incorrect: the spec says it should always > include the CRC field. > No one seems to use this field, but better to stick to spec. > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Acked-by: Juan Quintela <quintela@redhat.com> Thanks for the v2 O:-)
On Tue, Sep 07, 2010 at 11:50:38AM +0200, Juan Quintela wrote: > "Michael S. Tsirkin" <mst@redhat.com> wrote: > > Patch b0b900070c7cb29bbefb732ec00397abe5de6d73 made > > TOR valuer incorrect: the spec says it should always > > include the CRC field. > > No one seems to use this field, but better to stick to spec. > > > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > > Acked-by: Juan Quintela <quintela@redhat.com> > > Thanks for the v2 O:-) BTW, I think this patch is good for the release branch.
diff --git a/hw/e1000.c b/hw/e1000.c index 80b78bc..7d7d140 100644 --- a/hw/e1000.c +++ b/hw/e1000.c @@ -345,7 +345,7 @@ is_vlan_txd(uint32_t txd_lower) /* FCS aka Ethernet CRC-32. We don't get it from backends and can't * fill it in, just pad descriptor length by 4 bytes unless guest - * told us to trip it off the packet. */ + * told us to strip it off the packet. */ static inline int fcs_len(E1000State *s) { @@ -690,9 +690,14 @@ e1000_receive(VLANClientState *nc, const uint8_t *buf, size_t size) s->mac_reg[GPRC]++; s->mac_reg[TPR]++; - n = s->mac_reg[TORL]; - if ((s->mac_reg[TORL] += size) < n) + /* TOR - Total Octets Received: + * This register includes bytes received in a packet from the <Destination + * Address> field through the <CRC> field, inclusively. + */ + n = s->mac_reg[TORL] + size + /* Always include FCS length. */ 4; + if (n < s->mac_reg[TORL]) s->mac_reg[TORH]++; + s->mac_reg[TORL] = n; n = E1000_ICS_RXT0; if ((rdt = s->mac_reg[RDT]) < s->mac_reg[RDH])
Patch b0b900070c7cb29bbefb732ec00397abe5de6d73 made TOR valuer incorrect: the spec says it should always include the CRC field. No one seems to use this field, but better to stick to spec. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- Changes from v1: minor refactoring to avoid += within if statement. hw/e1000.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-)