net/virtio: revert not claiming IP checksum offload

This reverts
commit 4dab342b7522 ("net/virtio: do not falsely claim to do IP checksum").

The description of rxmode->hw_ip_checksum is:

     hw_ip_checksum   : 1, /**< IP/UDP/TCP checksum offload enable. */

Despite its name, this field can be set by an application to enable L3
and L4 checksums. In case of virtio, only L4 checksum is supported and
L3 checksums flags will always be set to "unknown".

Fixes: 4dab342b7522 ("net/virtio: do not falsely claim to do IP checksum")
Cc: stable@dpdk.org

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
This commit is contained in:
Olivier Matz 2017-09-07 14:13:39 +02:00 committed by Yuanhan Liu
parent ec9f3d122a
commit d67d86ce5b

View File

@ -1671,12 +1671,13 @@ virtio_dev_configure(struct rte_eth_dev *dev)
return ret;
}
/* Virtio does L4 checksum but not L3! */
if (rxmode->hw_ip_checksum) {
PMD_DRV_LOG(NOTICE,
"virtio does not support IP checksum");
return -ENOTSUP;
}
/* The name hw_ip_checksum is a bit confusing since it can be
* set by the application to request L3 and/or L4 checksums. In
* case of virtio, only L4 checksum is supported.
*/
if (rxmode->hw_ip_checksum)
req_features |= (1ULL << VIRTIO_NET_F_GUEST_CSUM);
if (rxmode->enable_lro)
req_features |=
(1ULL << VIRTIO_NET_F_GUEST_TSO4) |
@ -1689,6 +1690,13 @@ virtio_dev_configure(struct rte_eth_dev *dev)
return ret;
}
if (rxmode->hw_ip_checksum &&
!vtpci_with_feature(hw, VIRTIO_NET_F_GUEST_CSUM)) {
PMD_DRV_LOG(NOTICE,
"rx checksum not available on this host");
return -ENOTSUP;
}
if (rxmode->enable_lro &&
(!vtpci_with_feature(hw, VIRTIO_NET_F_GUEST_TSO4) ||
!vtpci_with_feature(hw, VIRTIO_NET_F_GUEST_TSO4))) {