From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10088.outbound.protection.outlook.com [40.107.1.88]) by dpdk.org (Postfix) with ESMTP id 549721B040 for ; Thu, 4 Jan 2018 19:55:12 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=+qgPtSkHGMuwjuTV5epwH3vJrueONCG2bap/kodUwow=; b=kOhDzn19i0bGQPzIuhCcrqfK8FxipjuWULmEjVpTfck6z+5dcQGpaIR48OwTXOEPQGZi/Iwj99/eW76BNywm1vXYk/BAHptYFeiwjBZzB+7AGF2RqPtlBLpvcJVIqpM3Cwl9M0oJASREvDifiG5PRoqpTtlUo/+psRnu/j2EpWE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=motih@mellanox.com; Received: from mellanox.com (37.142.13.130) by DB6PR05MB3206.eurprd05.prod.outlook.com (2603:10a6:6:1a::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Thu, 4 Jan 2018 18:55:10 +0000 From: Moti Haimovsky To: pascal.mazon@6wind.com Cc: dev@dpdk.org, Moti Haimovsky Date: Thu, 4 Jan 2018 20:54:32 +0200 Message-Id: <1515092072-184434-3-git-send-email-motih@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1515092072-184434-1-git-send-email-motih@mellanox.com> References: <1515092072-184434-1-git-send-email-motih@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: AM5PR0701CA0024.eurprd07.prod.outlook.com (2603:10a6:203:51::34) To DB6PR05MB3206.eurprd05.prod.outlook.com (2603:10a6:6:1a::32) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 00d50c5c-c14e-47c9-2a54-08d553a4ae8f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060); SRVR:DB6PR05MB3206; X-Microsoft-Exchange-Diagnostics: 1; DB6PR05MB3206; 3:vczziTWtmwll6jTaGYrt2Igdme+2o63Z+53s5nDudnjOdM5Yku4PQ0AwZ6baXqGwYtoPro0qKhITIYUVFnOaUmhDiWBOsHTLAzGdxTHpVwOH0PcEHfNpiHErJi9BgfntkRkYX2ay4BCW0BPpqJhQaRg0ASvROEqDcTH0yLPaFn+Bm6w80/PoxFGzQLQBGFB8KFJtjHHhRKwdIcc2z6c/1upByWDHkKD22bH0RuclfdiRCEPlnTTaX/Yt5gVT0i5t; 25:MASPNDILPXaCvtXUR0NE4JNLGRdD6OadtraZa550itYgaXaJcMmqBwlwUMHG3ifUSZ+5IKlZlQpgKZ54krV+9PyX+S33xs1FPbUs/Yi6CfsALkTzcHT+UEkSCkBVtyo4L6qGVySzuRNNDnDnrRoLxlTL6wKzgnTPjardUgQFwmiUvt1GmOWJ5EGqP3GNfBhmvHBVmOe5KdNkQ8N5gHAoNWJ9vHd4bfjJVMV0yIfi5O5nFOgdrQ3X3mlJ02CNyukA4xrrE84+KQUhBCdS+Wa9cY5oge6LZdtLsytGV9GrxpzdMIs8YHwlsne3bpwhcjbg3rc+aKK5kYzgnbpF9a9uWg==; 31:1mpaSs6Bdp60LlAv5glV+ic7ehFJuG/NrZQ9QVBejLr5bTc2o8cUIlhHnMDS7BepvHgku/IcQBubo/Pzr9b2zJOnhserS7xGOgSOsroC3OT3XaeH09mG1UldDLLaP9U7soryxgCIVwE8H93sjLNxZZ9pQccqC9Doh9/UD2pv6LuBs4G3z/nP9ICb/OoLitdCqgF4CRYBTm3/+MjL9G//NIyb5EVAQBsCr6IZWiOysCk= X-MS-TrafficTypeDiagnostic: DB6PR05MB3206: X-Microsoft-Exchange-Diagnostics: 1; DB6PR05MB3206; 20:maU2Y1vA2+ocAKvsNkXJokQx9rBJ5sbtrbcZBhMYFlXom0enguC3pCcpH4XBH7ilheJgHgid+Wm/lM+DbVffivjXQZrL1fZumdGrKunjK/W2QexFf7BnH3dL+AiztbyzdOuspJK96TrLRa1dnPFiK8ynWuHLGnQS1rhfqNxAPnva0QY5ggDEe71UBSN2X7FxSpEIBtFMACbOTfOYW8HA7JDSb/mCT6sIo9A4OPUNUElCu6AUXEAgCr7cBTpdo70mnSZCs+4afKagNkumo7L3sAJG3MYPIJ2VbEE2L0YRG0kKXJ2HOypgoIbno9hSW0PUuoWMi9tX1HPbUrUynODrZChh40qd7BFLsFvPQW/4PkZf1D0zd6cvufTlu7J8JqpOe+sTwihc/uyMcgYr+gjMh0Ks2fc/pQsMsNsP4PyCk3JS7ECb6xLRE2QBji/gEMIIn4opho4iARR/rA5g67dtJdw73QWWx0tsqKV0NLA0w/Amw/C6xJ9fbPt28Qfj+vkP; 4:IroLGY3vs5W5OFFSEyKnreswlFPnB8DrmXQsvRHpGJXMMNoIxsxbvu1HpCI6Ivc2/DtLCjNH8T5oH6B/ZIs8zs5ZsBLaC/FVgRul5lMnFCxqKHKPn8Q0ouXpgzljfianCpOytJFdplquWyG3tqY3Sr9yCMBZj/77hKsC9+abV05lv+Y3KH0DsuEFuCrAeAF3B40O2PXLcXZEEMgYeiZmN0kGBRggdtkK1rpNAbYAJusxWtTbNtSzDs47BLjVwETR/1frBsPd4W+PKmuo0dn9fw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(6072148)(201708071742011); SRVR:DB6PR05MB3206; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:DB6PR05MB3206; X-Forefront-PRVS: 054231DC40 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(39380400002)(39860400002)(346002)(376002)(396003)(199004)(189003)(6666003)(55016002)(52116002)(76176011)(33026002)(50226002)(7696005)(386003)(81156014)(81166006)(59450400001)(8936002)(7736002)(2906002)(8676002)(107886003)(305945005)(68736007)(4326008)(69596002)(51416003)(48376002)(25786009)(478600001)(16586007)(106356001)(105586002)(2351001)(2361001)(36756003)(50466002)(3846002)(6116002)(5660300001)(53936002)(4720700003)(66066001)(86362001)(16526018)(2950100002)(6916009)(47776003)(97736004)(21086003)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR05MB3206; H:mellanox.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR05MB3206; 23:/q854QKZSe8accIc4OaFj28CClSDdmMwH0EXinT5T?= =?us-ascii?Q?wIMkh7Vs4b7CXIZoV5qrPDQ7mIoc2a7Jbitp8awAtegjv5aTEN5MjC95rnLR?= =?us-ascii?Q?leuMaD1HLQI7lydeyJfcdRgWMttDmAA5EBZwTvxMhc0OrSnYp5FMMSE4Wakp?= =?us-ascii?Q?w8qw4zHpz15mZ5fxB+KgqntiWzzw3lKe2eci+rhVtjiwgOkfZzwtJaX3uKYP?= =?us-ascii?Q?MhGB/Qwaf+05IX1CtSy/63K023ZaNWFTKRxFO6CqJ0yPZbjDxo059TwJOz3l?= =?us-ascii?Q?cYXiw9OCW4+4io62MvUP2PYuU4RBbFwUlsSZrKq0zGIAJLy2PG3nKThgG8+/?= =?us-ascii?Q?HEXS35FCvnrDzH0DPnDcihP/QIDYARqXFWhbTkWmW3nd006L6FpCQy2y5NGH?= =?us-ascii?Q?Ofeqz0tcJ+ON0hziWDL8K+tbqbjSUTXcAc7H7bWLWObZLvuS8tA/7QEkXBFj?= =?us-ascii?Q?66Zcol0Yya8yeULQql/tara7cuy6VsC2tmrxxZfuK9MaBIOuipHXoWKr5/eh?= =?us-ascii?Q?Vs4B3JBYBvMAeZZWzX7OcfD6nJ/gAp0d04ZsVc36xBgvHeuoDZgd4AfVs2um?= =?us-ascii?Q?KIEd9a/fCgUfEuro3rJrAlcoHO/8eO2Jf7jZKZYtwkTRvRBOh6Liim1ekkWW?= =?us-ascii?Q?vH/EFxjoVce9mUCUj5qf1tF3rC63Y7cNgfL0U5MK54IcVeiMWU0KUU7FPSW6?= =?us-ascii?Q?aqq5Pro+2+DoSb4Z//av5ePUTVK3F1wxAwDaRPy8NY/YlOI6SkdejV+6fe3n?= =?us-ascii?Q?QSWzLva1WQQMf6WR5f88/DezdW27yRhoyWV+Y9tzrMKfj0det2DYTSy6D3/E?= =?us-ascii?Q?CpK8wTyXb6Kyl5tkrREAPORS+vYcUd4724hL+tWZRfZASM/HT0eas8WY93rR?= =?us-ascii?Q?L12ForZqCMaEJOIywCyiQIHBgU+ZX8uWEfxwYQTPEFrKXWRHKskgvQhfDHz3?= =?us-ascii?Q?gwyzRmV3j1JtYQICilnZIRpH3GuRSeW3k+jk+GFwWaB8mFqZCwHn2bu7slVk?= =?us-ascii?Q?QI6CIZvQ0lTe/MsGR4jTb3qtYWjdw7hyyfF69J2TZSrvwy4Q/uyw07LoUAc0?= =?us-ascii?Q?jnFZqrWo3EBq24w6Kz1eWv1HXVKx64AuHwXm+BBF8sNey30RWxeTtJWUyDKo?= =?us-ascii?Q?pR/wG44718zOjRqvimtsD5LPI+ODQ9MBl+9MK21GSqD4YUxmqdhn79bEaorl?= =?us-ascii?Q?xInj43q/+pMqZM9hmpHB3AfJbJ9TjdYO04SR++zHalUm02OQEMAPN2ecw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB6PR05MB3206; 6:cVpZYEragfY261eXhC0oio2edBV/csSW+/2zJtk54RYu55PupQHaoW0up5VYGyrg+Ldar8t148GqHc1z1X0wIehgmorNb7hU2iJPi15P9Wx5GRiz+PX3bZI1SSnU80sP1J2klc/uofjGg1ipZZKvHgiMvKff2lrQyUkuJRziXKOlKUSaL8XAxWumi3ZbyDxMis24Bq7fY9AtGz4xY7aaMhhhdid5/3js0JId/ysadSaolnpaCh6bqZiL0mOPxSBz9EPHHSV6KjZQzHXJhu1nf3RXs2t+DLrGjM4pjTOhOIZVhypEIzSnT9+EsOvZeMxEwKr1MBZAYWVj4LZ/vhgq1qsnyU0E02hagbJ1RFl3Uqs=; 5:5an+mzqR5fYQQeHYZwUiDFvmUrfXZ7eitZopPWeT9HnQv6gCaVO7WnkKsh7pis4LM6x87aQ+WRGvivtf7bFS8ASyAAe3e0+pxYDnx1YpmIgLUC1kZoYg+ry1l+hVJwwpIGIuEskUd8wzaU2b/CoB492cjwlGpW3mfradRAJnzs8=; 24:Vj24jQDL86/BJxj8fRZWNoID2nfsg0riz6PsZ0CcSCGYeHz+8tRFqLU0PFqtFcSYSgtSPaqAmj81jCPGvkZXN7wf+MgmOWSFZj2k0P8RJQE=; 7:afQih9abjuZoFvDExZ0wIfFmdz2CrFHayqWWspga9wjAv5RDxIzApLX0u6dbzKWkVKvq4UHBfX9nDlucNFuj7FkZu4meg4guy2oBjFW1qEh/esriBL92CbMbOfF+CgiwWUDjKAhnLZNGhw0xwlVPlDsbAzSc+Mv3NwNKCFEVKo6V69xLjzXYwA/XZtn1c1vXMKvpbbJ2R6RS0Fp3Bum3ybZYv90mWJIF3LovV+bfvvuz73fnH5gSSDhyaWBOoQU+ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2018 18:55:10.6309 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 00d50c5c-c14e-47c9-2a54-08d553a4ae8f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR05MB3206 Subject: [dpdk-dev] [PATCH V2 2/2] net/tap: convert to new Rx offloads API 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: Thu, 04 Jan 2018 18:55:12 -0000 Ethdev Rx offloads API has changed since: commit ce17eddefc20 ("ethdev: introduce Rx queue offloads API") This commit support the new Rx offloads API. Signed-off-by: Moti Haimovsky --- drivers/net/tap/rte_eth_tap.c | 66 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 58 insertions(+), 8 deletions(-) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index 5925709..ba3c714 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -286,6 +286,43 @@ enum ioctl_mode { } } +static uint64_t +tap_rx_offload_get_port_capa(void) +{ + /* + * In order to support legacy apps, + * report capabilities also as port capabilities. + */ + return DEV_RX_OFFLOAD_SCATTER | + DEV_RX_OFFLOAD_IPV4_CKSUM | + DEV_RX_OFFLOAD_UDP_CKSUM | + DEV_RX_OFFLOAD_TCP_CKSUM; +} + +static uint64_t +tap_rx_offload_get_queue_capa(void) +{ + return DEV_RX_OFFLOAD_SCATTER | + DEV_RX_OFFLOAD_IPV4_CKSUM | + DEV_RX_OFFLOAD_UDP_CKSUM | + DEV_RX_OFFLOAD_TCP_CKSUM; +} + +static bool +tap_rxq_are_offloads_valid(struct rte_eth_dev *dev, uint64_t offloads) +{ + uint64_t port_offloads = dev->data->dev_conf.rxmode.offloads; + uint64_t queue_supp_offloads = tap_rx_offload_get_queue_capa(); + uint64_t port_supp_offloads = tap_rx_offload_get_port_capa(); + + if ((offloads & (queue_supp_offloads | port_supp_offloads)) != + offloads) + return false; + if (((port_offloads ^ offloads) & port_supp_offloads)) + return false; + return true; +} + /* Callback to handle the rx burst of packets to the correct interface and * file descriptor(s) in a multi-queue setup. */ @@ -310,8 +347,9 @@ enum ioctl_mode { int len; len = readv(rxq->fd, *rxq->iovecs, - 1 + (rxq->rxmode->enable_scatter ? - rxq->nb_rx_desc : 1)); + 1 + + (rxq->rxmode->offloads & DEV_RX_OFFLOAD_SCATTER ? + rxq->nb_rx_desc : 1)); if (len < (int)sizeof(struct tun_pi)) break; @@ -366,7 +404,7 @@ enum ioctl_mode { seg->next = NULL; mbuf->packet_type = rte_net_get_ptype(mbuf, NULL, RTE_PTYPE_ALL_MASK); - if (rxq->rxmode->hw_ip_checksum) + if (rxq->rxmode->offloads & DEV_RX_OFFLOAD_CHECKSUM) tap_verify_csum(mbuf); /* account for the receive frame */ @@ -727,12 +765,12 @@ enum ioctl_mode { dev_info->min_rx_bufsize = 0; dev_info->pci_dev = NULL; dev_info->speed_capa = tap_dev_speed_capa(); - dev_info->rx_offload_capa = (DEV_RX_OFFLOAD_IPV4_CKSUM | - DEV_RX_OFFLOAD_UDP_CKSUM | - DEV_RX_OFFLOAD_TCP_CKSUM); + dev_info->rx_queue_offload_capa = tap_rx_offload_get_queue_capa(); + dev_info->rx_offload_capa = tap_rx_offload_get_port_capa() | + dev_info->rx_queue_offload_capa; dev_info->tx_queue_offload_capa = tap_tx_offload_get_queue_capa(); - dev_info->tx_offload_capa = dev_info->tx_queue_offload_capa | - tap_tx_offload_get_port_capa(); + dev_info->tx_offload_capa = tap_tx_offload_get_port_capa() | + dev_info->tx_queue_offload_capa; } static int @@ -1048,6 +1086,18 @@ enum ioctl_mode { return -1; } + /* Verify application offloads are valid for our port and queue. */ + if (!tap_rxq_are_offloads_valid(dev, rx_conf->offloads)) { + rte_errno = ENOTSUP; + RTE_LOG(ERR, PMD, + "%p: Rx queue offloads 0x%lx don't match port " + "offloads 0x%lx or supported offloads 0x%lx\n", + (void *)dev, rx_conf->offloads, + dev->data->dev_conf.rxmode.offloads, + (tap_rx_offload_get_port_capa() | + tap_rx_offload_get_queue_capa())); + return -rte_errno; + } rxq->mp = mp; rxq->trigger_seen = 1; /* force initial burst */ rxq->in_port = dev->data->port_id; -- 1.8.3.1