From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: [PATCH 2/2] virtio: don't claim to support LRO Date: Fri, 7 Jul 2017 12:52:50 -0700 Message-ID: <20170707195250.22259-3-stephen@networkplumber.org> References: <20170707195250.22259-1-stephen@networkplumber.org> Cc: dev@dpdk.org, Stephen Hemminger To: yliu@fridaylinux.org, maxime.coquelin@redhat.com Return-path: Received: from mail-pg0-f53.google.com (mail-pg0-f53.google.com [74.125.83.53]) by dpdk.org (Postfix) with ESMTP id 5EEF82BFF for ; Fri, 7 Jul 2017 21:53:01 +0200 (CEST) Received: by mail-pg0-f53.google.com with SMTP id t186so21890991pgb.1 for ; Fri, 07 Jul 2017 12:53:01 -0700 (PDT) In-Reply-To: <20170707195250.22259-1-stephen@networkplumber.org> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The current virtio supports Transmit Segmentation Offload, but does not really support Large Receive Offload. The driver was confusing the two offloads. Signed-off-by: Stephen Hemminger --- drivers/net/virtio/virtio_ethdev.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index ca607904fa37..00a3122780ba 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -1659,11 +1659,8 @@ virtio_dev_configure(struct rte_eth_dev *dev) { const struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode; struct virtio_hw *hw = dev->data->dev_private; - uint64_t req_features; - int ret; PMD_INIT_LOG(DEBUG, "configure"); - req_features = VIRTIO_PMD_DEFAULT_GUEST_FEATURES; /* Virtio does L4 checksum but not L3! */ if (rxmode->hw_ip_checksum) { @@ -1671,23 +1668,10 @@ virtio_dev_configure(struct rte_eth_dev *dev) "virtio does not support IP checksum"); return -ENOTSUP; } - if (rxmode->enable_lro) - req_features |= - (1ULL << VIRTIO_NET_F_GUEST_TSO4) | - (1ULL << VIRTIO_NET_F_GUEST_TSO6); - - /* if request features changed, reinit the device */ - if (req_features != hw->req_guest_features) { - ret = virtio_init_device(dev, req_features); - if (ret < 0) - return ret; - } - if (rxmode->enable_lro && - (!vtpci_with_feature(hw, VIRTIO_NET_F_GUEST_TSO4) || - !vtpci_with_feature(hw, VIRTIO_NET_F_GUEST_TSO4))) { + if (rxmode->enable_lro) { PMD_DRV_LOG(NOTICE, - "lro not available on this host"); + "virtio does not support Large Receive Offload"); return -ENOTSUP; } @@ -1913,8 +1897,6 @@ virtio_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) } tso_mask = (1ULL << VIRTIO_NET_F_GUEST_TSO4) | (1ULL << VIRTIO_NET_F_GUEST_TSO6); - if ((host_features & tso_mask) == tso_mask) - dev_info->rx_offload_capa |= DEV_RX_OFFLOAD_TCP_LRO; dev_info->tx_offload_capa = 0; if (hw->guest_features & (1ULL << VIRTIO_NET_F_CSUM)) { -- 2.11.0