Revision b10fec9b
b/hw/e1000.c | ||
---|---|---|
89 | 89 |
struct e1000_tx { |
90 | 90 |
unsigned char header[256]; |
91 | 91 |
unsigned char vlan_header[4]; |
92 |
/* Fields vlan and data must not be reordered or separated. */ |
|
92 | 93 |
unsigned char vlan[4]; |
93 | 94 |
unsigned char data[0x10000]; |
94 | 95 |
uint16_t size; |
... | ... | |
383 | 384 |
if (tp->sum_needed & E1000_TXD_POPTS_IXSM) |
384 | 385 |
putsum(tp->data, tp->size, tp->ipcso, tp->ipcss, tp->ipcse); |
385 | 386 |
if (tp->vlan_needed) { |
386 |
memmove(tp->vlan, tp->data, 12); |
|
387 |
memmove(tp->vlan, tp->data, 4); |
|
388 |
memmove(tp->data, tp->data + 4, 8); |
|
387 | 389 |
memcpy(tp->data + 8, tp->vlan_header, 4); |
388 | 390 |
qemu_send_packet(&s->nic->nc, tp->vlan, tp->size + 4); |
389 | 391 |
} else |
Also available in: Unified diff