From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8010DA0557; Fri, 10 Jun 2022 05:50:58 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 20EB240689; Fri, 10 Jun 2022 05:50:58 +0200 (CEST) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id 4AD5640221 for ; Fri, 10 Jun 2022 05:50:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1654833056; x=1686369056; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=rofIgJsOetO8wFCDeLCPh3axaM/plegVi0s/N8/Jc2M=; b=UPMrWoPNPTX/yAQSYhf+m+9aRXP9ub1g+RHM3oABMCxp+ZlaT6d9xUDU mLAS+UtCZqTk78+bOjzvAVI4fkZw8kNuLZyYSKHGQ0nc3g69pKcVRfNTI dT/VdTi6aLvCSvXvkHCV3MEfFQTTie5yyVKoHGLm+VO0V1QGIvDly4oxl azWQSw/oeEKEtvtdmCtyhqEYSS1IFai19ipzYZQkPego5v1y8rBLPlL3O OyeQTNgdfgpMkspGrq4gvPx3HAVCdWXWEf5k4JP2cewlg3U+z3QPj3N7N t9uCBvfdjb9PPfOvkhxuT55aGS40vwNYTjaEvvssF/esrY5ZOof0/XSnr w==; X-IronPort-AV: E=McAfee;i="6400,9594,10373"; a="339257229" X-IronPort-AV: E=Sophos;i="5.91,288,1647327600"; d="scan'208";a="339257229" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2022 20:49:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,288,1647327600"; d="scan'208";a="585977280" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga007.fm.intel.com with ESMTP; 09 Jun 2022 20:49:37 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Thu, 9 Jun 2022 20:49:36 -0700 Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) by ORSMSX608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Thu, 9 Jun 2022 20:49:36 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Thu, 9 Jun 2022 20:49:36 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.177) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Thu, 9 Jun 2022 20:49:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aJTm8riiG0WR4PheXlCI34aoExGcm38j6Q3nYpR9mC+0ThTdZzH+9vbP0tF/tuhv2ASg8Tgl2R1t/uj6qN7KFc53LO36k3Ej88kdom3wo/y7yk1zGqAo4zxsOcPu+krht/ZdOI7l44yl5oPgAoNG9HgrczVwxsYRgx7t9tLYv6XM/T7hQzzwIOZzUBCNgkn3hvvhdlELZzZrzxP3b1yG2q2o38RdMA7SsL0mLoYIUzQbg9dbqKZf9jlnV9+oK5nu9WBlg6iQYxuRz960d2tXCKmWUVHflSKQ4UTgYUfzq0eg1E7/+UwCr2HfNxUZVUHnmzAThTpfNe+fikaP3vrRkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FU2tZO6joLcni/yuY9fHsS1ppJcCoePeb9skmKfYFFc=; b=cmbbWGekD7tQnEKKhai20AqevoaUWNLpYFP2iZHXQYdVkTXrayOgZFzPpdUw5kjXL1EJg5yhCe1ynJKmj5WFdRWDxcoGb9c3UmFtS9RJm8qbQMvCDz0mqlEsYRj5ZzrjgCvjxlk4fDUszoQFlhCOVebLo7ZUw7L8OuolC65neBwUlyXKXauNEamOcf4jHKzfkv29sqDwDylkwt1W+VJ9ka7l79+b/HZRqbufOSDkfAbRkGys4J94DdmJR/haXQzU3BHjS/jkuvktD78ZuOhnynyQ1yr09iggNrmQMeK5T8u12+h5bB4Dj1U6t2K4M10yTFdVhZ3u1SRWo1qJ/xMQ/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SN6PR11MB3504.namprd11.prod.outlook.com (2603:10b6:805:d0::17) by MWHPR11MB2016.namprd11.prod.outlook.com (2603:10b6:300:26::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.13; Fri, 10 Jun 2022 03:49:28 +0000 Received: from SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::d4ff:ac50:621a:60e7]) by SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::d4ff:ac50:621a:60e7%7]) with mapi id 15.20.5314.019; Fri, 10 Jun 2022 03:49:28 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "jasowang@redhat.com" , "david.marchand@redhat.com" , "Matz, Olivier" , "Ma, WenwuX" , "Zhang, Yuying" , "Singh, Aman Deep" , "Jiang, Cheng1" Subject: RE: [PATCH v2 5/6] net/vhost: perform SW checksum in Rx path Thread-Topic: [PATCH v2 5/6] net/vhost: perform SW checksum in Rx path Thread-Index: AQHYezZXF2VWLR/Yb0SiRX6w8kvTFK1IA3wg Date: Fri, 10 Jun 2022 03:49:28 +0000 Message-ID: References: <20220608124946.102623-1-maxime.coquelin@redhat.com> <20220608124946.102623-6-maxime.coquelin@redhat.com> In-Reply-To: <20220608124946.102623-6-maxime.coquelin@redhat.com> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 66c8287d-868e-4775-8738-08da4a943821 x-ms-traffictypediagnostic: MWHPR11MB2016:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: MGZlaxtOtSxC5RYM8CN49K2nexhnLkeIY9HWNA6vBcQZB7vLoO6yDpc0Qz5oLWYEe9+ZncU6h5DU7ffJUIgd+htVkzjL2fi6dXIOOc4ZTGbxDAQTF8MhG6QrvX9N5ccRYa6Ts6zi3IVazGsOnAW9jJOv4hgszpw0rWmWz6hkZNZrIGfoJ50RJ44UwCurYANxAmxOJTh2KD4hsa5BHKc9EdNiJqQLTJppRLcGDq37zyI/NWOImEKogzQtU79QOhyckSk3J10IrG+OO43Thw09ggjNj2hKuMp190Jq9Vrf1nx9niK7k9e/674i6w2qxQGROFCYWjZzcgqSkAPqe/1X7NX/K9QoGXYKBGaWmoeUpAEb6v28JmancdopnGvphyPdddWpMRBRjlDgXeah8bgazwhJl4iJNluPmYHl1HlVpoqGJK66FwWM7xmPMdNn7y9Krv04N0NQBV0HB7JF+mf+c37+3qBreJOvHYz+qdVhZ9sOBM2FgxTJlQn/1gt7pttf5LsYnh8daWfZ6q3cXlDahxOJFNgNADJ81x1GsNuja1th/m1icfWB1UDF9eiCTHwcVQKSx+iyYzEZn6NFxth1Xm1ynOGSQa61ykLjnf8tcdO0r0m02HIcvKO4Lrya5/bVFavWKuRp0AeGhMYAqLxCOUOWWAnXLsqyxNXHDN/ipqBYK8Fc7QTbx10aI2Hy8xzu3rEo3BDRjx++eD6aKkK9aG/hH9DpPM8PfiazTNCoWwY= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB3504.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(122000001)(26005)(2906002)(38070700005)(316002)(110136005)(6636002)(86362001)(921005)(9686003)(55016003)(5660300002)(71200400001)(186003)(82960400001)(52536014)(76116006)(33656002)(38100700002)(8936002)(66946007)(7696005)(83380400001)(508600001)(53546011)(66446008)(66476007)(64756008)(66556008)(8676002)(6506007); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?1rxPv0lgovvvBbmzXi8qptFeHEtmaS6PNAEq9goX+MJYh0lH1VZF3nXEO06C?= =?us-ascii?Q?ntDRxVWE11ESIu+e5QiHCPtYZCm+D7AD7W9GnKJcrRblTzY0A93+ciff94zs?= =?us-ascii?Q?qhVl/VWa8b19ocF7JySG6f+/Wsikh7gj/n84OnwlhVOCXS38xAcahQqeFirg?= =?us-ascii?Q?lAF/joytRMmp63u05BiLxZOClAglREXKb+qvJvDBCsg7YwDqDN7+4U5K3OgO?= =?us-ascii?Q?t1F+Oe09iLlZ08QtZjHlluU2QKJ2vdpWdDaGW2Thidu4BaP43MxsB9QzdrvX?= =?us-ascii?Q?Un7Pg5boM/Eu40QtP93nphyhBgVuzy8bphlOlAlj61Ce0n7iD46fjKKmZnqP?= =?us-ascii?Q?8Pp3gujSn/+z3e3whqn68JL9W/WUo4ws/drQPNMbiBLpreKin9Xlbjc7y1XR?= =?us-ascii?Q?70WRQk/H46eQlPSJeOxXnnTukH5wKNXBxo7Dwbl1Ef3abb4Iusjliw/MyxbK?= =?us-ascii?Q?OhSz2rv5hOdnPCNIQ5tZCyWmqSL53FoPmOnLdQOHHuXraFU300AN7HAIheHb?= =?us-ascii?Q?7KtWNOLN9wUYBNahD9jSJt0T8sD8OnwlT/AZ6bzkgz0lceVzJFLi7m7w3Ewp?= =?us-ascii?Q?/wwED3bVTTgbVqa+9lMlDAyiIbKU1dVBSWUjQEn9r57hW3LEC997F2tirfwp?= =?us-ascii?Q?BaUcKIy1TFZYp+UYDMpTnaTKDVw2OTobJASUPGYVwk9gMnWF9NOtrX0Wf98j?= =?us-ascii?Q?0yPZ8zLqf1hwYVY1Uee9yAP+K6tottg+qxHV+1PD3Q+BN7AKoVGItz8mEC+P?= =?us-ascii?Q?pUtsazYmuCQyVQTiGprGrMMTuKPbQ6Axq/3drJwdbK0PyQGLRjIcaOUL8gnK?= =?us-ascii?Q?PKOdCygNnWs26tayg3E+WC7VDBBQnGW6M+5GWMc1WMMIoPzlIG9eFfez2iPy?= =?us-ascii?Q?WZLwZ2LlSv8eD0JWLnF830Y9OYI53BGmLRtaicpgtiRg2pKk8z1x+yqhU5SN?= =?us-ascii?Q?DqmLvDI7TPJBiApMJVAhzpKm8ufTfZkSQKM4ExLxMOeWsb0BcxfJnk/8jYrc?= =?us-ascii?Q?IGCPomnzN4sk0yN764MBBSNM5bPB7IyOO5Q/I5bs9NZ44m1pTQ2Gtc0dhljf?= =?us-ascii?Q?gszmSXTb0Gxdk7+blApzyRgUoPsnID4AIKmQfHHr7Gn5EEWZQeMSedATApC9?= =?us-ascii?Q?tONEMzPuVHdZpcE6QRCXZRiSXaEaQkeVYDqwqcXqTFFM0oQYidF8hcDyqllM?= =?us-ascii?Q?WT0MqH3+Gf7H2cJA93xZuufbdCQuY5Yrz9zN4OSASwPtAIqmVg7WaVuhmupn?= =?us-ascii?Q?unlbqgEIL8CmEIwF8pjex+IPemtILdgRMI3yv0wr4/R9NMeTRjdS410CBf9M?= =?us-ascii?Q?ZNxIfN+L+qr7DDLNtj9wtvLi3FpfSMTrD8xpR9tJoOAfIEuZb/drwlAlB8+T?= =?us-ascii?Q?xDka3C/j3BoTTjljTbkR38feLrKmGpL40hfOuwDfgxBx7OWgjqIOrBd5rC9G?= =?us-ascii?Q?kbuWeN1ddhmmKs0S1GeF1OstvlZHh5oPi7YYbVaFHQlEk0QtZ98o70fLG4Km?= =?us-ascii?Q?X95DJD0YRN41aZ+6jNg78IoEcOwkDWvTLiPGdWyN0yOeH2vqeUe3kdA7jC7A?= =?us-ascii?Q?44VNCBaSBbGAHNxA3IxZn78qusU5MJNCzqacPgpcAwdAB+XWVCc9dJZQgEHv?= =?us-ascii?Q?tRzz9+EvGxIkDie3i4PWgtc0M0B4tlbrmRVJHCbX59vfkCehLo3YLdi99FSF?= =?us-ascii?Q?3bFg6TyiPcNAfSnZaBInl2gLOACeDLsNgKT71r6L2DGZsIZ96kIh+2IdpACg?= =?us-ascii?Q?JDE1L6C/GQ=3D=3D?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB3504.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 66c8287d-868e-4775-8738-08da4a943821 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2022 03:49:28.3526 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 1kx5ksL6G0HW0hRiTQgF3BkbwtdIYN6JvogHVMqZILTnZEranrbtC4/k35y4yytlQrVi7ZR2/Sf14makQUvyUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB2016 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org + Cheng for review > -----Original Message----- > From: Maxime Coquelin > Sent: Wednesday, June 8, 2022 8:50 PM > To: dev@dpdk.org; jasowang@redhat.com; Xia, Chenbo = ; > david.marchand@redhat.com; Matz, Olivier ; Ma, > WenwuX ; Zhang, Yuying ; > Singh, Aman Deep > Cc: Maxime Coquelin > Subject: [PATCH v2 5/6] net/vhost: perform SW checksum in Rx path >=20 > Virtio specification supports host checksum offloading > for L4, which is enabled with VIRTIO_NET_F_CSUM feature > negotiation. However, the Vhost PMD does not advertise > Rx checksum offload capabilities, so we can end-up with > the VIRTIO_NET_F_CSUM feature being negotiated, implying > the Vhost library returns packets with checksum being > offloaded while the application did not request for it. >=20 > Advertising these offload capabilities at the ethdev level > is not enough, because we could still end-up with the > application not enabling these offloads while the guest > still negotiate them. >=20 > This patch advertises the Rx checksum offload capabilities, > and introduces a compatibility layer to cover the case > VIRTIO_NET_F_CSUM has been negotiated but the application > does not configure the Rx checksum offloads. This function > performis the L4 Rx checksum in SW for UDP and TCP. Note > that it is not needed to calculate the pseudo-header > checksum, because the Virtio specification requires that > the driver do it. >=20 > This patch does not advertise SCTP checksum offloading > capability for now, but it could be handled later if the > need arises. >=20 > Reported-by: Jason Wang > Signed-off-by: Maxime Coquelin > --- > doc/guides/nics/features/vhost.ini | 1 + > drivers/net/vhost/rte_eth_vhost.c | 83 ++++++++++++++++++++++++++++++ > 2 files changed, 84 insertions(+) >=20 > diff --git a/doc/guides/nics/features/vhost.ini > b/doc/guides/nics/features/vhost.ini > index ef81abb439..15f4dfe5e8 100644 > --- a/doc/guides/nics/features/vhost.ini > +++ b/doc/guides/nics/features/vhost.ini > @@ -7,6 +7,7 @@ > Link status =3D Y > Free Tx mbuf on demand =3D Y > Queue status event =3D Y > +L4 checksum offload =3D P > Basic stats =3D Y > Extended stats =3D Y > x86-32 =3D Y > diff --git a/drivers/net/vhost/rte_eth_vhost.c > b/drivers/net/vhost/rte_eth_vhost.c > index e931d59053..42f0d52ebc 100644 > --- a/drivers/net/vhost/rte_eth_vhost.c > +++ b/drivers/net/vhost/rte_eth_vhost.c > @@ -12,6 +12,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -85,10 +86,12 @@ struct pmd_internal { > char *iface_name; > uint64_t flags; > uint64_t disable_flags; > + uint64_t features; > uint16_t max_queues; > int vid; > rte_atomic32_t started; > bool vlan_strip; > + bool rx_sw_csum; > }; >=20 > struct internal_list { > @@ -275,6 +278,70 @@ vhost_dev_xstats_get(struct rte_eth_dev *dev, struct > rte_eth_xstat *xstats, > return nstats; > } >=20 > +static void > +vhost_dev_csum_configure(struct rte_eth_dev *eth_dev) > +{ > + struct pmd_internal *internal =3D eth_dev->data->dev_private; > + const struct rte_eth_rxmode *rxmode =3D ð_dev->data- > >dev_conf.rxmode; > + > + internal->rx_sw_csum =3D false; > + > + /* SW checksum is not compatible with legacy mode */ > + if (!(internal->flags & RTE_VHOST_USER_NET_COMPLIANT_OL_FLAGS)) > + return; > + > + if (internal->features & (1ULL << VIRTIO_NET_F_CSUM)) { > + if (!(rxmode->offloads & > + (RTE_ETH_RX_OFFLOAD_UDP_CKSUM | > RTE_ETH_RX_OFFLOAD_TCP_CKSUM))) { > + VHOST_LOG(NOTICE, "Rx csum will be done in SW, may > impact performance."); > + internal->rx_sw_csum =3D true; > + } > + } > +} > + > +static void > +vhost_dev_rx_sw_csum(struct rte_mbuf *mbuf) > +{ > + struct rte_net_hdr_lens hdr_lens; > + uint32_t ptype, hdr_len; > + uint16_t csum =3D 0, csum_offset; > + > + /* Return early if the L4 checksum was not offloaded */ > + if ((mbuf->ol_flags & RTE_MBUF_F_RX_L4_CKSUM_MASK) !=3D > RTE_MBUF_F_RX_L4_CKSUM_NONE) > + return; > + > + ptype =3D rte_net_get_ptype(mbuf, &hdr_lens, RTE_PTYPE_ALL_MASK); > + > + hdr_len =3D hdr_lens.l2_len + hdr_lens.l3_len; > + > + switch (ptype & RTE_PTYPE_L4_MASK) { > + case RTE_PTYPE_L4_TCP: > + csum_offset =3D offsetof(struct rte_tcp_hdr, cksum) + hdr_len; > + break; > + case RTE_PTYPE_L4_UDP: > + csum_offset =3D offsetof(struct rte_udp_hdr, dgram_cksum) + > hdr_len; > + break; > + default: > + /* Unsupported packet type */ > + return; > + } > + > + /* The pseudo-header checksum is already performed, as per Virtio > spec */ > + if (rte_raw_cksum_mbuf(mbuf, hdr_len, rte_pktmbuf_pkt_len(mbuf) - > hdr_len, &csum) < 0) > + return; > + > + csum =3D ~csum; > + /* See RFC768 */ > + if (unlikely((ptype & RTE_PTYPE_L4_UDP) && csum =3D=3D 0)) > + csum =3D 0xffff; > + > + if (rte_pktmbuf_data_len(mbuf) >=3D csum_offset + 1) > + *rte_pktmbuf_mtod_offset(mbuf, uint16_t *, csum_offset) =3D csum; > + > + mbuf->ol_flags &=3D ~RTE_MBUF_F_RX_L4_CKSUM_MASK; > + mbuf->ol_flags |=3D RTE_MBUF_F_RX_L4_CKSUM_GOOD; > +} > + > static uint16_t > eth_vhost_rx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) > { > @@ -315,6 +382,9 @@ eth_vhost_rx(void *q, struct rte_mbuf **bufs, uint16_= t > nb_bufs) > if (r->internal->vlan_strip) > rte_vlan_strip(bufs[i]); >=20 > + if (r->internal->rx_sw_csum) > + vhost_dev_rx_sw_csum(bufs[i]); > + > r->stats.bytes +=3D bufs[i]->pkt_len; > } >=20 > @@ -711,6 +781,11 @@ new_device(int vid) > eth_dev->data->numa_node =3D newnode; > #endif >=20 > + if (rte_vhost_get_negotiated_features(vid, &internal->features)) { > + VHOST_LOG(ERR, "Failed to get device features\n"); > + return -1; > + } > + > internal->vid =3D vid; > if (rte_atomic32_read(&internal->started) =3D=3D 1) { > queue_setup(eth_dev, internal); > @@ -733,6 +808,8 @@ new_device(int vid) >=20 > eth_dev->data->dev_link.link_status =3D RTE_ETH_LINK_UP; >=20 > + vhost_dev_csum_configure(eth_dev); > + > rte_atomic32_set(&internal->dev_attached, 1); > update_queuing_status(eth_dev); >=20 > @@ -1039,6 +1116,8 @@ eth_dev_configure(struct rte_eth_dev *dev) >=20 > internal->vlan_strip =3D !!(rxmode->offloads & > RTE_ETH_RX_OFFLOAD_VLAN_STRIP); >=20 > + vhost_dev_csum_configure(dev); > + > return 0; > } >=20 > @@ -1189,6 +1268,10 @@ eth_dev_info(struct rte_eth_dev *dev, > dev_info->tx_offload_capa =3D RTE_ETH_TX_OFFLOAD_MULTI_SEGS | > RTE_ETH_TX_OFFLOAD_VLAN_INSERT; > dev_info->rx_offload_capa =3D RTE_ETH_RX_OFFLOAD_VLAN_STRIP; > + if (internal->flags & RTE_VHOST_USER_NET_COMPLIANT_OL_FLAGS) { > + dev_info->rx_offload_capa |=3D RTE_ETH_RX_OFFLOAD_UDP_CKSUM | > + RTE_ETH_RX_OFFLOAD_TCP_CKSUM; > + } >=20 > return 0; > } > -- > 2.35.3