From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f171.google.com (mail-pf0-f171.google.com [209.85.192.171]) by dpdk.org (Postfix) with ESMTP id 071E1235 for ; Fri, 7 Jul 2017 21:53:00 +0200 (CEST) Received: by mail-pf0-f171.google.com with SMTP id q85so21708453pfq.1 for ; Fri, 07 Jul 2017 12:52:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=x7/Pj0n83USVUeWVyop6nRZ4+eOCYxyDtyxA/pP3eCs=; b=cZqLR1zbV20zgAgiLp4MWpet8EW8vUn33NUPWZRJeacUuRpPmxsHYlsTOshIljmbad iAWRJFkBzfNKmkTBIuyp9pbYe3bSaH0VnVOwgD5fOECrt3RbRmtgBU2d0oRjH0W0oDdx jXF0XfdZ2ZxoOllifgNktZADwPsiAsnHkJZMgh/KVSzZ5WCtD+p9aU/WxaW6jnFL9lv6 j20hfTV9gwPI+ipYAljTkquBpzZOnyHAhpsxk2jOtOdtMrnD2DyA+7P2itcx3VvzJVxI ydq0N4Q7a3wUbjV5T4Sh8dwI32u6GBecRM7Rh+xR52+K0Zj3tcv+w3fUd9YUNT9akoLf jL2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=x7/Pj0n83USVUeWVyop6nRZ4+eOCYxyDtyxA/pP3eCs=; b=siRuTgWe/K0qQVQersR9Vr3X0lfQv6D8RuPeoORyBCSEYBg51W6p2vdM9yRCgtGEQa KVOjUqaKX/mbcR0RL0jXlmJ1mGfIS5X4lU6IWXFnPXzYkJNIW6F8Oayla57zQhIo9Myh K5jVKwoAsgJsTBzgG6rds+Vdu2NlD4XLM/XuJPQUooDfNYAXFbwr+v6X4XdJi6D9330H yxJfi9f69kNckoXSBTcznkoD8AGWRgNTuX/+GWCdxqWQ09iSoxd02HpscJqvHCTUIuIP 9jV1tgY+lW7QtQWGvjU01P2vnpzCFmC10ukeLdVEKNDV+7ye6mZQqGWyJc/5cshQUH0Y qXbw== X-Gm-Message-State: AIVw112ovhuREMrQu3bSHn8NjErKrltWz7hUyhe9WZDV9eXsSmvK0BK9 0nE2XExhWS2wSWj+ X-Received: by 10.84.135.1 with SMTP id 1mr4750986pli.185.1499457179312; Fri, 07 Jul 2017 12:52:59 -0700 (PDT) Received: from xeon-e3.wavecable.com (76-14-207-240.or.wavecable.com. [76.14.207.240]) by smtp.gmail.com with ESMTPSA id j14sm7273938pgt.7.2017.07.07.12.52.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 07 Jul 2017 12:52:58 -0700 (PDT) From: Stephen Hemminger To: yliu@fridaylinux.org, maxime.coquelin@redhat.com Cc: dev@dpdk.org, Stephen Hemminger Date: Fri, 7 Jul 2017 12:52:49 -0700 Message-Id: <20170707195250.22259-2-stephen@networkplumber.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170707195250.22259-1-stephen@networkplumber.org> References: <20170707195250.22259-1-stephen@networkplumber.org> Subject: [dpdk-dev] [PATCH 1/2] virtio: don't falsely claim to do IP checksum X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Jul 2017 19:53:00 -0000 The virtio driver is confused about the meaning of the ip_checksum flag. In DPDK, ip_checksum means the hardware is capable of checking the Layer 3 IP checksum. But KVM/QEMU does not do that. The flag VIRTIO_NET_F_GUEST_CSUM controls whether the receive side does Layer 4 (TCP/UDP) checksum offload. Fix by erroring out any requests to do IP checksum. Signed-off-by: Stephen Hemminger --- drivers/net/virtio/virtio_ethdev.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 5c826f47740c..ca607904fa37 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -1664,8 +1664,13 @@ virtio_dev_configure(struct rte_eth_dev *dev) PMD_INIT_LOG(DEBUG, "configure"); req_features = VIRTIO_PMD_DEFAULT_GUEST_FEATURES; - if (rxmode->hw_ip_checksum) - req_features |= (1ULL << VIRTIO_NET_F_GUEST_CSUM); + + /* Virtio does L4 checksum but not L3! */ + if (rxmode->hw_ip_checksum) { + PMD_DRV_LOG(NOTICE, + "virtio does not support IP checksum"); + return -ENOTSUP; + } if (rxmode->enable_lro) req_features |= (1ULL << VIRTIO_NET_F_GUEST_TSO4) | @@ -1678,13 +1683,6 @@ 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 ip 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))) { -- 2.11.0