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 60D22A034C; Mon, 12 Dec 2022 14:28:17 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 34BC640687; Mon, 12 Dec 2022 14:28:17 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id E16E640684 for ; Mon, 12 Dec 2022 14:28:14 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670851695; x=1702387695; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=OPoOfQto5FcP9Kqv/ODm/tE4qOnwhOTsa95NgMdyaAY=; b=geFtKNr8E/IrQW6qEDrovE1DK8a9o9WKOC1Pr/CC2FJIz/AaOV5Srbl9 pzZttGXIJpSVXmyfk8f78RavlQF/UxDx2uhgSNKeVBoD1dSb2QMxm8aqM AzlDfU90w9GqAC3Bw59P51cG/0VLQ9u8/xnhXRdep+3jug0XVnWm7sO0g SoaLWWNDg/pRyaYIzYAIM71rsBUGlLDeN/6vrE5oxn72TYwI3GHz3M6PA CF08ms3EDrUSRit5JBbyyCcW7KtDKY4tlORFkqY8eKkLKPv1qil+0E/Sq J2aVIfbR+npYbpEM6BGXRfev9JqPfZsIEFEVqB4Ac/wc4m0H0ASTmOiaq Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10558"; a="344904401" X-IronPort-AV: E=Sophos;i="5.96,238,1665471600"; d="scan'208";a="344904401" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Dec 2022 05:27:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10558"; a="678915531" X-IronPort-AV: E=Sophos;i="5.96,238,1665471600"; d="scan'208";a="678915531" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga008.jf.intel.com with ESMTP; 12 Dec 2022 05:27:49 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) 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.2507.16; Mon, 12 Dec 2022 05:27:48 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Mon, 12 Dec 2022 05:27:48 -0800 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Mon, 12 Dec 2022 05:27:47 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M0Ms6x7xIr0dzCinysdKCECO2ZrWHRl6jqlcpcIgod4IyS7SWNUNeY7UEO4nCJ2sq3HlGSkuocYmvqyW2KutmcL+5OhGmX+TFxXUlCRjHY8U/kQ9YE8gOvipMWiy5a4/qpnAt6HcjGrrc+JfvClJno2vNdeUw5NOnVN3VHa+X40OgkL/kRPnfPEoG0jbzRKid9VzYfxWD0d6hR+np2iBvIGA/Y6mv7QgG9jNrTX6K5SfG2zTCkw8CFmoZIfDEsIFdOzcuwfQ0aJhZep+84yF+sWmW3IdcR4ETcPlPj9byRwLfuBV7HJrPVHxcGg/t9spah5G84pOyRm5ts0733UEew== 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=+wk0HtfBqdoxXlFd4+OV9DDu9UGJOCkICG7zPEfU9KY=; b=VyO25mXwDUi8ae6AWH1+F1daz4QnCGsHUkAJQO0oxvYyT9VsCU5dpTjf4LXLBH6I8j70gb9RrbagL9nFp1vnJnfgrtI5yTLo4pQr1HUFQe+8DoSiAHHCOSY9AIKtfuCpRysel/BfLrW+sxXOL9ZLbbtCphFCmKQ7C5OaT8FkaobRptemuhnZVvu5+yV/n0iVW2kssDKeelkwaZH2gju1Ucud7YmQf0y7gEG/7jpxac5y3V9EEGQHRpRmIGp9T7+njPDVqirDO/s3sKuLNMVdh+BTdUFJ/0Ai9Hdr2wTRDn9NEtGVYwuqnyoIQP8x96TfLhn01osLnyRLd7NFuS7s/A== 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 DM4PR11MB5994.namprd11.prod.outlook.com (2603:10b6:8:5d::20) by SA1PR11MB7037.namprd11.prod.outlook.com (2603:10b6:806:2ba::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.22; Mon, 12 Dec 2022 13:27:45 +0000 Received: from DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::f465:abe3:b917:a641]) by DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::f465:abe3:b917:a641%7]) with mapi id 15.20.5880.019; Mon, 12 Dec 2022 13:27:45 +0000 From: "Zhang, Qi Z" To: "mb@smartsharesystems.com" , "Richardson, Bruce" , "Lu, Wenzhuo" CC: "dev@dpdk.org" , "Wu, Wenjun1" Subject: RE: [PATCH v2] net/ice: support IOVA as VA mode Thread-Topic: [PATCH v2] net/ice: support IOVA as VA mode Thread-Index: AQHZDi0uZyKBfVid6kSSJ5bXpx2d7K5qPjQQ Date: Mon, 12 Dec 2022 13:27:45 +0000 Message-ID: References: <20221212154501.1303789-1-qi.z.zhang@intel.com> <20221212213628.1382151-1-qi.z.zhang@intel.com> In-Reply-To: <20221212213628.1382151-1-qi.z.zhang@intel.com> Accept-Language: en-US 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-traffictypediagnostic: DM4PR11MB5994:EE_|SA1PR11MB7037:EE_ x-ms-office365-filtering-correlation-id: 5834e616-c63e-4bfc-aaeb-08dadc44a78d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kXKuR7+c8LVoWjLo01za8TGbTnNp/RuDX9qUTX+VQFhPKHJ8Wh3GgYla4dQRlN9mN8lhRNhC6uGzd6hyU/MDeH63Fq/7X86MQNi7RUeKtnV5chWZyn6q/maXsHpvdgbc0urLGivSDLi6YMtzL0mGJHeu9XAPRH3F2nEVAlmXYgIuwZSgv0LB3EsGDklcMLkfr5EMrwvSXO/lJWBU+KHu0+Vs8ONdzL4MXu3ghHGwQMV1m7tmkdQtxctaTRxjGVTfcGJNJEBvzPeuwNMk00Q0p5Dh8w2X7LSbQJw0V1lp6hSa6bfL+dlumLU6uaUONBIxnkYf++n7A+OrReZJ5qeowB7aWUSCd9Q8UPEvZh3AotOFooruUp5gD7tdAm7uU0SDWmz4W8A2btL8DHb+sJ8pyW3rpcoidg0XxPhdrTGWmWLwYx3vzIQIQeXIAgiS2Mz+tssvdvmrGQBIdHPSokKo8dn3BCwe0AIqZlfXuZQEoRVbHrrN1wIwAYcZbrHTFVkT9nUHPNYrU0UOcg3BzGBbwRMVCCUxdSwg7vUUhM4y70KYBI7Qr/lhcZzif9M3qfP2WMyWL7tB39Be68etc5AXXZ2x2SO3HJKpOXJpjVSxt3uvPF1HgK4EqwLDt62Uzi6eVQQiUriuUw/bQHly6VAn35rswBoTWObaw+r/9xo4uYvLYNhrCKTWJG/qaL3J6gKqjDOu5OUg1zBjKzpKXxENWQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB5994.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(39860400002)(366004)(136003)(376002)(396003)(346002)(451199015)(66574015)(83380400001)(54906003)(107886003)(110136005)(52536014)(7696005)(82960400001)(9686003)(33656002)(71200400001)(38070700005)(66556008)(6506007)(186003)(26005)(122000001)(38100700002)(86362001)(55016003)(66476007)(30864003)(64756008)(66446008)(478600001)(41300700001)(53546011)(8676002)(5660300002)(66946007)(8936002)(76116006)(316002)(4326008)(2906002)(6636002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?v0HvoZGGJ1q18P+5DlQN1QGtogbqIMszwK2V/tuI7o0ovt9yvyaiMGJX/M?= =?iso-8859-1?Q?XImL+1JmJXZxx+HZ1ZU1IiiF9264W0b7JJRt1P5L8Gfm30/3+P85jG1HmI?= =?iso-8859-1?Q?TI1OuEKSHf2aeYcUd9mlkjZaG2BuiVRDrmDyZ4bLTtRjW6Me+MLwxcTUWF?= =?iso-8859-1?Q?VX826VuAsOZt0ZwnpWEnIgNOkR27ZPCHCb29lWbikiVU0RDAgihv8BKyFv?= =?iso-8859-1?Q?/VmIfCUTh3cLW50U+veHWl/Ib3GrF3AoKMe57BPLVWVoP9OvMdkZLdYsJw?= =?iso-8859-1?Q?18RO6yhl4JwygpE8XAAbfPuP7DQR6qKTNX1iXpUnt1L9X/OBy/x0GqnOGF?= =?iso-8859-1?Q?cLwebGauziVIKmyBG/v7DVazGG8Ua7SAUX4NNbAbzux+ZVx1fe7yFifdzq?= =?iso-8859-1?Q?/SD1q15//c6xtihCxyl2DzuOpWFzCaIZ5ikQ0EzjtqwJDUODHsOvmvY3GN?= =?iso-8859-1?Q?2lMUrhhXI/h5ICVrgpAFSIuqb49+MXAFgBC+FLEWq1Ki289lg8oMVBwa1D?= =?iso-8859-1?Q?h1GhYb6pMgp1XkFFLX/RRcEG6l3Zwp8Cgyy3ApXcsOuR1YCO3Rnhcy29Kw?= =?iso-8859-1?Q?XCLP0hyaqfdGnaUpxKoj47kQsSurygepNjLK1M2bc6P261UauBshgLza82?= =?iso-8859-1?Q?FyPTAF9nPWNWG8UlGFrKp42l2cHmGFhydo2KebKnIvqVjQ30qxrVnVqcy9?= =?iso-8859-1?Q?WbOliKH4xtJrtjsQ+zK46b+j5n/BwwmZmAAnDmtu2k6rXm6JimlEycOc98?= =?iso-8859-1?Q?EfI0iVkrQMu9uwQNATwrFm9oGBtkHziQYKU5sdT+bGhVNpJ72ZlOq4ggma?= =?iso-8859-1?Q?IUq3Gta3u9bUyX1McCrJ4b7V4oG9EQNpw7JhNYpbksJwf1x8Vzfp6vehEA?= =?iso-8859-1?Q?mD254lEcDHGcUdLfLIYKAJ1axoUBgvQT//5c02uUqla79YJrdvQTX2U+o7?= =?iso-8859-1?Q?qLAJGluxP/PqrEM63iIVGeLRUewvf0dS/ZaR7vAVGIY3DN7L8e49JE9evM?= =?iso-8859-1?Q?nHx3qEW4ms04tdKfcZg5WFOkUrWce64Z6a9J3uCAx2tg7IKRgrd6dHR3EM?= =?iso-8859-1?Q?HJxllagspyznCX1Yq52AEKw5vskwbsuRRTQB8boP5oSBhuTlhy9PvMR4cK?= =?iso-8859-1?Q?3U/TC4LoKwZUzt0Wvhl4osC2b8fDKjeP3HmL+NI0ijJK7U7RzG3DGnXfGd?= =?iso-8859-1?Q?PelCkGOgLnhB50y4iKtdwT1tfwRlJLSf03Y2fmjooGcdBfazj3J0KeozJg?= =?iso-8859-1?Q?FsKBu+j1REs3u0o8Lki0ekiwvBLofLeXymGFTwTKb/+qqqTLAhf93WqB2e?= =?iso-8859-1?Q?Tl3XAke4eRffKadHqnn0kyqlh3kYR3GBlyDXCZWdOnU6bzqtp0x7Kqq/KH?= =?iso-8859-1?Q?RmcfnEL1dYePn/sIbuet+0NWAohPHvwGX8pAgKAADzJJ0tRXbp1ZJ5Uex8?= =?iso-8859-1?Q?HXGupuqZFRx0szDaIHXxjvCDpEMEhQXkirzbiZuhwVdpp/qfR7EtzgGG7X?= =?iso-8859-1?Q?UlLdBJoC6Bigpm7qUe8jABXK9PjwBXkC8G3jwrgphRPf+XIGugDne5Q6/r?= =?iso-8859-1?Q?vpdABD4MVEz92E4SzKaf7xkEkpW0HBYvCAB6jzzNitxaJd4BQrUfJ5bV1t?= =?iso-8859-1?Q?VgARfMjlyLlOQfecTnAJViKvvDefAaXC4C?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5994.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5834e616-c63e-4bfc-aaeb-08dadc44a78d X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2022 13:27:45.3000 (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: vqkstbAgo1WStdwDuYJjuwt8y3eE7I+DGaAqpWkWEYKhXF2NxH3SCvG4EYciBVWKdFsZS8BgFMqssfEGQkmBKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB7037 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 > -----Original Message----- > From: Zhang, Qi Z > Sent: Tuesday, December 13, 2022 5:36 AM > To: mb@smartsharesystems.com; Richardson, Bruce > ; Lu, Wenzhuo > Cc: dev@dpdk.org; Wu, Wenjun1 ; Zhang, Qi Z > > Subject: [PATCH v2] net/ice: support IOVA as VA mode >=20 > Claim pmd_supports_disable_iova_as_pa. Remove buf_iova access when > RTE_IOVA_AS_PA is not defined. >=20 > The patch simply replace buf_iova with buf_addr at IOVA as VA mode. > Some SIMD instructions in data path may be over used, further optimizatio= n > is expected. >=20 > Signed-off-by: Qi Zhang Forgot to inherent ack from v1 Acked-by: Morten Br=F8rup > --- > v2: > - fix title and commit log > - use rte_pktmbuf_iova >=20 > drivers/common/iavf/meson.build | 1 + > drivers/net/ice/ice_rxtx_common_avx.h | 24 ++++++++++++++++++++++++ > drivers/net/ice/ice_rxtx_vec_avx2.c | 15 +++++---------- > drivers/net/ice/ice_rxtx_vec_avx512.c | 20 ++++++++++---------- > drivers/net/ice/ice_rxtx_vec_sse.c | 11 +++++++++-- > drivers/net/ice/meson.build | 6 +++--- > 6 files changed, 52 insertions(+), 25 deletions(-) >=20 > diff --git a/drivers/common/iavf/meson.build > b/drivers/common/iavf/meson.build index 977652223b..af8a4983e0 100644 > --- a/drivers/common/iavf/meson.build > +++ b/drivers/common/iavf/meson.build > @@ -6,3 +6,4 @@ sources =3D files('iavf_adminq.c', 'iavf_common.c', > 'iavf_impl.c') if cc.has_argument('-Wno-pointer-to-int-cast') > cflags +=3D '-Wno-pointer-to-int-cast' > endif > +pmd_supports_disable_iova_as_pa =3D true > diff --git a/drivers/net/ice/ice_rxtx_common_avx.h > b/drivers/net/ice/ice_rxtx_common_avx.h > index 81e0db5dd3..e69e23997f 100644 > --- a/drivers/net/ice/ice_rxtx_common_avx.h > +++ b/drivers/net/ice/ice_rxtx_common_avx.h > @@ -54,15 +54,23 @@ ice_rxq_rearm_common(struct ice_rx_queue *rxq, > __rte_unused bool avx512) > mb0 =3D rxep[0].mbuf; > mb1 =3D rxep[1].mbuf; >=20 > +#if RTE_IOVA_AS_PA > /* load buf_addr(lo 64bit) and buf_iova(hi 64bit) */ > RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_iova) !=3D > offsetof(struct rte_mbuf, buf_addr) + 8); > +#endif > vaddr0 =3D _mm_loadu_si128((__m128i *)&mb0->buf_addr); > vaddr1 =3D _mm_loadu_si128((__m128i *)&mb1->buf_addr); >=20 > +#if RTE_IOVA_AS_PA > /* convert pa to dma_addr hdr/data */ > dma_addr0 =3D _mm_unpackhi_epi64(vaddr0, vaddr0); > dma_addr1 =3D _mm_unpackhi_epi64(vaddr1, vaddr1); > +#else > + /* convert va to dma_addr hdr/data */ > + dma_addr0 =3D _mm_unpacklo_epi64(vaddr0, vaddr0); > + dma_addr1 =3D _mm_unpacklo_epi64(vaddr1, vaddr1); #endif >=20 > /* add headroom to pa values */ > dma_addr0 =3D _mm_add_epi64(dma_addr0, hdr_room); @@ > -97,9 +105,11 @@ ice_rxq_rearm_common(struct ice_rx_queue *rxq, > __rte_unused bool avx512) > mb6 =3D rxep[6].mbuf; > mb7 =3D rxep[7].mbuf; >=20 > +#if RTE_IOVA_AS_PA > /* load buf_addr(lo 64bit) and buf_iova(hi 64bit) */ > RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, > buf_iova) !=3D > offsetof(struct rte_mbuf, buf_addr) + > 8); > +#endif > vaddr0 =3D _mm_loadu_si128((__m128i *)&mb0- > >buf_addr); > vaddr1 =3D _mm_loadu_si128((__m128i *)&mb1- > >buf_addr); > vaddr2 =3D _mm_loadu_si128((__m128i *)&mb2- > >buf_addr); @@ -132,9 +142,15 @@ ice_rxq_rearm_common(struct > ice_rx_queue *rxq, __rte_unused bool avx512) >=20 > _mm512_inserti64x4(_mm512_castsi256_si512(vaddr4_5), > vaddr6_7, 1); >=20 > +#if RTE_IOVA_AS_PA > /* convert pa to dma_addr hdr/data */ > dma_addr0_3 =3D _mm512_unpackhi_epi64(vaddr0_3, > vaddr0_3); > dma_addr4_7 =3D _mm512_unpackhi_epi64(vaddr4_7, > vaddr4_7); > +#else > + /* convert va to dma_addr hdr/data */ > + dma_addr0_3 =3D _mm512_unpacklo_epi64(vaddr0_3, > vaddr0_3); > + dma_addr4_7 =3D _mm512_unpacklo_epi64(vaddr4_7, > vaddr4_7); #endif >=20 > /* add headroom to pa values */ > dma_addr0_3 =3D _mm512_add_epi64(dma_addr0_3, > hdr_room); @@ -161,9 +177,11 @@ ice_rxq_rearm_common(struct > ice_rx_queue *rxq, __rte_unused bool avx512) > mb2 =3D rxep[2].mbuf; > mb3 =3D rxep[3].mbuf; >=20 > +#if RTE_IOVA_AS_PA > /* load buf_addr(lo 64bit) and buf_iova(hi 64bit) */ > RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, > buf_iova) !=3D > offsetof(struct rte_mbuf, buf_addr) + > 8); > +#endif > vaddr0 =3D _mm_loadu_si128((__m128i *)&mb0- > >buf_addr); > vaddr1 =3D _mm_loadu_si128((__m128i *)&mb1- > >buf_addr); > vaddr2 =3D _mm_loadu_si128((__m128i *)&mb2- > >buf_addr); @@ -180,9 +198,15 @@ ice_rxq_rearm_common(struct > ice_rx_queue *rxq, __rte_unused bool avx512) >=20 > _mm256_inserti128_si256(_mm256_castsi128_si256(vaddr2), > vaddr3, 1); >=20 > +#if RTE_IOVA_AS_PA > /* convert pa to dma_addr hdr/data */ > dma_addr0_1 =3D _mm256_unpackhi_epi64(vaddr0_1, > vaddr0_1); > dma_addr2_3 =3D _mm256_unpackhi_epi64(vaddr2_3, > vaddr2_3); > +#else > + /* convert va to dma_addr hdr/data */ > + dma_addr0_1 =3D _mm256_unpacklo_epi64(vaddr0_1, > vaddr0_1); > + dma_addr2_3 =3D _mm256_unpacklo_epi64(vaddr2_3, > vaddr2_3); #endif >=20 > /* add headroom to pa values */ > dma_addr0_1 =3D _mm256_add_epi64(dma_addr0_1, > hdr_room); diff --git a/drivers/net/ice/ice_rxtx_vec_avx2.c > b/drivers/net/ice/ice_rxtx_vec_avx2.c > index 31d6af42fd..fd13ff18f1 100644 > --- a/drivers/net/ice/ice_rxtx_vec_avx2.c > +++ b/drivers/net/ice/ice_rxtx_vec_avx2.c > @@ -821,8 +821,7 @@ ice_vtx1(volatile struct ice_tx_desc *txdp, > if (offload) > ice_txd_enable_offload(pkt, &high_qw); >=20 > - __m128i descriptor =3D _mm_set_epi64x(high_qw, > - pkt->buf_iova + pkt->data_off); > + __m128i descriptor =3D _mm_set_epi64x(high_qw, > rte_pktmbuf_iova(pkt)); > _mm_store_si128((__m128i *)txdp, descriptor); } >=20 > @@ -868,16 +867,12 @@ ice_vtx(volatile struct ice_tx_desc *txdp, >=20 > __m256i desc2_3 =3D > _mm256_set_epi64x > - (hi_qw3, > - pkt[3]->buf_iova + pkt[3]->data_off, > - hi_qw2, > - pkt[2]->buf_iova + pkt[2]->data_off); > + (hi_qw3, rte_pktmbuf_iova(pkt[3]), > + hi_qw2, rte_pktmbuf_iova(pkt[2])); > __m256i desc0_1 =3D > _mm256_set_epi64x > - (hi_qw1, > - pkt[1]->buf_iova + pkt[1]->data_off, > - hi_qw0, > - pkt[0]->buf_iova + pkt[0]->data_off); > + (hi_qw1, rte_pktmbuf_iova(pkt[1]), > + hi_qw0, rte_pktmbuf_iova(pkt[0])); > _mm256_store_si256((void *)(txdp + 2), desc2_3); > _mm256_store_si256((void *)txdp, desc0_1); > } > diff --git a/drivers/net/ice/ice_rxtx_vec_avx512.c > b/drivers/net/ice/ice_rxtx_vec_avx512.c > index 5bfd5152df..7e388b7569 100644 > --- a/drivers/net/ice/ice_rxtx_vec_avx512.c > +++ b/drivers/net/ice/ice_rxtx_vec_avx512.c > @@ -56,8 +56,13 @@ ice_rxq_rearm(struct ice_rx_queue *rxq) > } > } >=20 > +#if RTE_IOVA_AS_PA > const __m512i iova_offsets =3D _mm512_set1_epi64 > (offsetof(struct rte_mbuf, buf_iova)); > +#else > + const __m512i iova_offsets =3D _mm512_set1_epi64 > + (offsetof(struct rte_mbuf, buf_addr)); #endif > const __m512i headroom =3D > _mm512_set1_epi64(RTE_PKTMBUF_HEADROOM); >=20 > #ifndef RTE_LIBRTE_ICE_16BYTE_RX_DESC > @@ -1092,8 +1097,7 @@ ice_vtx1(volatile struct ice_tx_desc *txdp, > if (do_offload) > ice_txd_enable_offload(pkt, &high_qw); >=20 > - __m128i descriptor =3D _mm_set_epi64x(high_qw, > - pkt->buf_iova + pkt->data_off); > + __m128i descriptor =3D _mm_set_epi64x(high_qw, > rte_pktmbuf_iova(pkt)); > _mm_store_si128((__m128i *)txdp, descriptor); } >=20 > @@ -1132,14 +1136,10 @@ ice_vtx(volatile struct ice_tx_desc *txdp, struct > rte_mbuf **pkt, >=20 > __m512i desc0_3 =3D > _mm512_set_epi64 > - (hi_qw3, > - pkt[3]->buf_iova + pkt[3]->data_off, > - hi_qw2, > - pkt[2]->buf_iova + pkt[2]->data_off, > - hi_qw1, > - pkt[1]->buf_iova + pkt[1]->data_off, > - hi_qw0, > - pkt[0]->buf_iova + pkt[0]->data_off); > + (hi_qw3, rte_pktmbuf_iova(pkt[3]), > + hi_qw2, rte_pktmbuf_iova(pkt[2]), > + hi_qw1, rte_pktmbuf_iova(pkt[1]), > + hi_qw0, rte_pktmbuf_iova(pkt[0])); > _mm512_storeu_si512((void *)txdp, desc0_3); > } >=20 > diff --git a/drivers/net/ice/ice_rxtx_vec_sse.c > b/drivers/net/ice/ice_rxtx_vec_sse.c > index fd94cedde3..72dfd58308 100644 > --- a/drivers/net/ice/ice_rxtx_vec_sse.c > +++ b/drivers/net/ice/ice_rxtx_vec_sse.c > @@ -68,15 +68,23 @@ ice_rxq_rearm(struct ice_rx_queue *rxq) > mb0 =3D rxep[0].mbuf; > mb1 =3D rxep[1].mbuf; >=20 > +#if RTE_IOVA_AS_PA > /* load buf_addr(lo 64bit) and buf_iova(hi 64bit) */ > RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_iova) !=3D > offsetof(struct rte_mbuf, buf_addr) + 8); > +#endif > vaddr0 =3D _mm_loadu_si128((__m128i *)&mb0->buf_addr); > vaddr1 =3D _mm_loadu_si128((__m128i *)&mb1->buf_addr); >=20 > +#if RTE_IOVA_AS_PA > /* convert pa to dma_addr hdr/data */ > dma_addr0 =3D _mm_unpackhi_epi64(vaddr0, vaddr0); > dma_addr1 =3D _mm_unpackhi_epi64(vaddr1, vaddr1); > +#else > + /* convert va to dma_addr hdr/data */ > + dma_addr0 =3D _mm_unpacklo_epi64(vaddr0, vaddr0); > + dma_addr1 =3D _mm_unpacklo_epi64(vaddr1, vaddr1); #endif >=20 > /* add headroom to pa values */ > dma_addr0 =3D _mm_add_epi64(dma_addr0, hdr_room); @@ > -671,8 +679,7 @@ ice_vtx1(volatile struct ice_tx_desc *txdp, struct rte_m= buf > *pkt, > ((uint64_t)flags << ICE_TXD_QW1_CMD_S) | > ((uint64_t)pkt->data_len << ICE_TXD_QW1_TX_BUF_SZ_S)); >=20 > - __m128i descriptor =3D _mm_set_epi64x(high_qw, > - pkt->buf_iova + pkt->data_off); > + __m128i descriptor =3D _mm_set_epi64x(high_qw, > rte_pktmbuf_iova(pkt)); > _mm_store_si128((__m128i *)txdp, descriptor); } >=20 > diff --git a/drivers/net/ice/meson.build b/drivers/net/ice/meson.build in= dex > 8efa533e0b..123b190f72 100644 > --- a/drivers/net/ice/meson.build > +++ b/drivers/net/ice/meson.build > @@ -20,7 +20,6 @@ testpmd_sources =3D files('ice_testpmd.c') >=20 > deps +=3D ['hash', 'net', 'common_iavf'] > includes +=3D include_directories('base', '../../common/iavf') -iova_as_= pa =3D > dpdk_conf.get('RTE_IOVA_AS_PA') >=20 > if arch_subdir =3D=3D 'x86' > sources +=3D files('ice_rxtx_vec_sse.c') @@ -35,7 +34,7 @@ if arch_s= ubdir > =3D=3D 'x86' > if cc.get_define('__AVX2__', args: machine_args) !=3D '' > cflags +=3D ['-DCC_AVX2_SUPPORT'] > sources +=3D files('ice_rxtx_vec_avx2.c') > - elif iova_as_pa =3D=3D 1 and cc.has_argument('-mavx2') > + elif cc.has_argument('-mavx2') > cflags +=3D ['-DCC_AVX2_SUPPORT'] > ice_avx2_lib =3D static_library('ice_avx2_lib', > 'ice_rxtx_vec_avx2.c', > @@ -56,7 +55,7 @@ if arch_subdir =3D=3D 'x86' > cc.has_argument('-mavx512bw') > ) >=20 > - if iova_as_pa =3D=3D 1 and (ice_avx512_cpu_support =3D=3D true or > ice_avx512_cc_support =3D=3D true) > + if ice_avx512_cpu_support =3D=3D true or ice_avx512_cc_support =3D= =3D true > cflags +=3D ['-DCC_AVX512_SUPPORT'] > avx512_args =3D [cflags, '-mavx512f', '-mavx512bw'] > if cc.has_argument('-march=3Dskylake-avx512') > @@ -79,3 +78,4 @@ sources +=3D files( > 'ice_dcf_parent.c', > 'ice_dcf_sched.c', > ) > +pmd_supports_disable_iova_as_pa =3D true > -- > 2.31.1