mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-18 23:52:14 -06:00
hw/net/net_tx_pkt: Ignore ECN bit
No segmentation should be performed if gso type is
VIRTIO_NET_HDR_GSO_NONE even if ECN bit is set.
Fixes: e263cd49c7
("Packet abstraction for VMWARE network devices")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1544
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
f4fdaf009c
commit
4cf3a63849
1 changed files with 4 additions and 2 deletions
|
@ -796,11 +796,13 @@ bool net_tx_pkt_send_custom(struct NetTxPkt *pkt, bool offload,
|
||||||
{
|
{
|
||||||
assert(pkt);
|
assert(pkt);
|
||||||
|
|
||||||
|
uint8_t gso_type = pkt->virt_hdr.gso_type & ~VIRTIO_NET_HDR_GSO_ECN;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Since underlying infrastructure does not support IP datagrams longer
|
* Since underlying infrastructure does not support IP datagrams longer
|
||||||
* than 64K we should drop such packets and don't even try to send
|
* than 64K we should drop such packets and don't even try to send
|
||||||
*/
|
*/
|
||||||
if (VIRTIO_NET_HDR_GSO_NONE != pkt->virt_hdr.gso_type) {
|
if (VIRTIO_NET_HDR_GSO_NONE != gso_type) {
|
||||||
if (pkt->payload_len >
|
if (pkt->payload_len >
|
||||||
ETH_MAX_IP_DGRAM_LEN -
|
ETH_MAX_IP_DGRAM_LEN -
|
||||||
pkt->vec[NET_TX_PKT_L3HDR_FRAG].iov_len) {
|
pkt->vec[NET_TX_PKT_L3HDR_FRAG].iov_len) {
|
||||||
|
@ -808,7 +810,7 @@ bool net_tx_pkt_send_custom(struct NetTxPkt *pkt, bool offload,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (offload || pkt->virt_hdr.gso_type == VIRTIO_NET_HDR_GSO_NONE) {
|
if (offload || gso_type == VIRTIO_NET_HDR_GSO_NONE) {
|
||||||
if (!offload && pkt->virt_hdr.flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) {
|
if (!offload && pkt->virt_hdr.flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) {
|
||||||
net_tx_pkt_do_sw_csum(pkt, &pkt->vec[NET_TX_PKT_L2HDR_FRAG],
|
net_tx_pkt_do_sw_csum(pkt, &pkt->vec[NET_TX_PKT_L2HDR_FRAG],
|
||||||
pkt->payload_frags + NET_TX_PKT_PL_START_FRAG - 1,
|
pkt->payload_frags + NET_TX_PKT_PL_START_FRAG - 1,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue