From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40076.outbound.protection.outlook.com [40.107.4.76]) by dpdk.org (Postfix) with ESMTP id A35337D30 for ; Thu, 4 Jan 2018 19:26:42 +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=xZK7ixsBw1Z+Jdg16YWryN39o+2jng3iMIgDO56hOag=; b=AR6a2miJhZNoDr39G1W+dZHgyFq2rbpspsKIHfA8umKl478mZT8tG0j8RJxZmi/RIlLrbfLpaHPaP80N8oklPjQ0moUwNca45Fj1KYp/VofBDOfUBpJLXZqKP9TOwY31oNN5x2vLpIEzYzWrKYMfFA88ESPuumkfjVwMytbCEvY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=motih@mellanox.com; Received: from mellanox.com (37.142.13.130) by HE1PR05MB3212.eurprd05.prod.outlook.com (2603:10a6:7:35::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.366.8; Thu, 4 Jan 2018 18:26:41 +0000 From: Moti Haimovsky To: pascal.mazon@6wind.com Cc: dev@dpdk.org, Moti Haimovsky Date: Thu, 4 Jan 2018 20:25:54 +0200 Message-Id: <1515090354-183605-3-git-send-email-motih@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1515090354-183605-1-git-send-email-motih@mellanox.com> References: <1515090354-183605-1-git-send-email-motih@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1PR0501CA0009.eurprd05.prod.outlook.com (2603:10a6:800:92::19) To HE1PR05MB3212.eurprd05.prod.outlook.com (2603:10a6:7:35::10) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 81e7323e-6d63-4963-555b-08d553a0b3a6 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060); SRVR:HE1PR05MB3212; X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB3212; 3:mohEujKNG6YkDoLEriSY0vmFXvpp9Rp13MBGcQeYPFMv/II6m5hfzxXSdETlxarsI5FExCiYOn1UeHNkQ4TPAnBfgIH9Cck3drxlGo2Lqb7BraLbVQXhMSzlTsliznh6KhIjQTqBoE/i9N7gzgRwq/Yggf5Hz6DbdXIHhbuDYYYQtaiMMzTxx7Xk6fmlBhNjHt4E7elvhzOo8T28A9SnUWIi7Zk/S+kotrqFWZY2HEAMkibzsnxhhMQUsaKMEaSA; 25:14yyVSqVHCMy52ZBV8uSsx+RzT5pRrh8erfIOJxHvDMXz1ha4htOK7WMz9WE7ee2Or3Mm7GiDVaS10u+pc/OTmuYTi5hedwmUtLorotIOKca/wgSr5VPwRgT7jt4pqirCXRKjvP88lQi20ll3p/x4FjAvAIH/YEBbJVtkFXNOddudu+GwvAKC/2CGYbBFgpyaHNDs8QMByqM63YO8gzx+S/C/AloFgRuq8JLMZyjMV8aWJdygJiWM0Pzf2P21xR6h5rAjcooilft4pNbFhYIyI0m5FYGk3tlVzL5AIf9i2KHOKpimCzsqJlF8ZTceyiRv4vtITeqPcyt2jWj+riIBg==; 31:E0THuzuZmUEXKnHwNglGcpxQPwVF6NICdKHnVdAwkP4wobYOy3rRIBLncyxOkifWvNANGTuaJReNIEdXZRGsBUpqIU8M73QBJPnsDbURXw1LKRglm3917WyTciukOQvZhvwYxSTLcU7swQ2bm5kk0WxCWa3bVh7wkncDmFB9IUjAhva9Pwy7RceyjlPfJYxSmR3OdpjQuFd5oM1VtOIExIXd21RtnyrXaPcji3+8c4Y= X-MS-TrafficTypeDiagnostic: HE1PR05MB3212: X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB3212; 20:Zj1nrAs1P+oPQii25G2A3tNSN6b6k5k5bM0YYGBf7F6l5sDdcOgP7tQT5505QKSWuUu0trtt/Kh6YWnr4fxjy+fLPmRW+lSCkMZFwQx6EfIxriWb3rLoEVDX5n3QwNVpvKQR2pO2EKopMTdlhaCvO8RIzh/V7pTv+myFuT2NZNMnCDd8Q5Iur65WTh/HTRxHYuahhpYnFHFqODD7yXQtnfkERztiVVzBnnl2ZNq44/EDdmin3/9yv58GBUYiOgkjIZRqdUvPbcWVIiP5fzLXpIz0UkYqo+jzc9JQwa5phGAyRZPaejNcz0Mwk8TRdGOYLWgzI9ghMRMHo6DC3RNg7ItBq++aVl3KJDLIS0QK+8SY2xvCeIIJR6kSRY3E87DNXPJZ2/HtgcOMjwrY5H5AFtO9UVe0hloLwxqoAkaa4F/D8PYNYnf0c8fMhvr5gEdfRuIMYkvPzDyvP2ELC1esx2vp7LUyJ46Ub9RMAcuGHbW2sfTAMtOU6ozoGb09FPgm; 4:4HHjWJPVNZyebrBt2iYPKpjlO19yxrTYe0OkBk1c86JDAHgFGrHR69mnYqbzL/loIkNJsnS8VdrAR37Deh2Yh5GmwbX0FFQZIU6jx/5cPVZhKETMWLeNC5tUS1GSnpMvE3GG3kRtx+5wqw9UC8NHZevt64ZE/uYWhvBlWbM1r4LjYyqvzFfy/NxAXKF7hOwnGaY48r7kupmTp2irIXep/5f+G3ycNAjnBuuukJRtHvOcLhQWNSHEfDT2P04UgkQsSK0nKIhWFsxgURdZB7xh2g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3002001)(3231023)(944501075)(93006095)(93001095)(10201501046)(6055026)(6041268)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:HE1PR05MB3212; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR05MB3212; X-Forefront-PRVS: 054231DC40 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(346002)(39860400002)(396003)(366004)(376002)(199004)(189003)(16526018)(478600001)(50466002)(5660300001)(7736002)(305945005)(4326008)(50226002)(97736004)(6116002)(3846002)(25786009)(316002)(4720700003)(48376002)(6666003)(81156014)(68736007)(6916009)(2950100002)(8936002)(16586007)(8676002)(81166006)(107886003)(51416003)(7696005)(86362001)(52116002)(76176011)(69596002)(33026002)(53936002)(386003)(21086003)(2906002)(47776003)(2361001)(106356001)(59450400001)(66066001)(36756003)(55016002)(105586002)(2351001); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR05MB3212; 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; HE1PR05MB3212; 23:nS1j+JFRt4lrhj++w325EUgDIO61U+undvlZX6+Hf?= =?us-ascii?Q?7fkxFHvNGPa1RCrQezRMllx48I++rHYCyPLSxjnSQC4DFmqyF9NTOJ1HCElV?= =?us-ascii?Q?tAiMM6SuCGvZKnUb7J3Dt2DDRTtaDZT3LUmP/t55Pqy7Ks60F6QpAlnwOif1?= =?us-ascii?Q?p2pTOozARCK9AC3p6E3r6j30e4u0GM6/Sw6a6LaOQ/XVd4jDkF7bHxWnwO3p?= =?us-ascii?Q?DIUWhjrhZpCA4PHg3px5Q7gWR2NeX/owdzITX42l6y0H7GnhVOYkwAfB0t6x?= =?us-ascii?Q?mFWqcqynEpMW2Brp92X1UnnP/96CAjo75aaaXoxF3ryZ1WjoNzm1pfhGmrsN?= =?us-ascii?Q?IcowTxlV4JG7E8khRl1IvXWjcdL6emuaF6VkCawHaM+ipPmOR11Foq9qS7jk?= =?us-ascii?Q?aGAF84hhbHReauOPgtt5/g9vfmCEvyj7uWCnyDO5XwWocQK6wU5q4GaJxzCG?= =?us-ascii?Q?ayd0pBXGtuUWl9VtqfjCXKHxirmgBTRE4APe56MxK2qUDxCcPNjiKjVO4UO8?= =?us-ascii?Q?qERK76pj34NlOYv25KHesLvkqtx87xdkh5blNxM5YK3prDo1KQ1NwXCtnvhv?= =?us-ascii?Q?WiTkiVep3qzNkw1OqlHtulPI3YD+SolHCVVYACa19Rfc6j6cxp25b/ylp4dD?= =?us-ascii?Q?eHV6KbWazpseC+phwe1ZrSbQtXjwkDYujj7y7TC+Dt6t6t6gzVVWnGwlVt7B?= =?us-ascii?Q?YLUOEZ5SUnanw2bJGwtn7dj2KAakg/KJLprQE9uqHmsMlisCibEjPGg3aZPO?= =?us-ascii?Q?jGLJxf4fSUSJIEQCChFqwWKAkHIUtSRMlaN8OHUsUr44E1kkgIDyYQVhbcJ0?= =?us-ascii?Q?M20oBHWRTHvG+89B9dmqZN/MQV2zLVgCWy9R9bW0tBJgFCI+if+0OQNcpKed?= =?us-ascii?Q?47v3E0483TnqtbEBEQcficZk75G6Q8ZharlzeKBHSV6dzKj13wQvqOAAKt9D?= =?us-ascii?Q?HGV9KYjYE1zAbkf32bTYsJEqC+eINUwSUQdxutMUPa/pVVY84A1KlIE2/ZJ0?= =?us-ascii?Q?8E9DMrXezT374ng2qV8QcpwfFVjZqTlpZvCz05Wk+wlxcnqkypLOAaaxFks6?= =?us-ascii?Q?GryapDpMVIOT2suvpsqHvCu54D+xMQFoID4qZiIOvGrEaB257Qh9W7vmeU9N?= =?us-ascii?Q?IkMKsdlJZY+qU4gpfZewrrxMRN7IMeu3NnAeeZV4UPBibMF8kuA+a77NCnqJ?= =?us-ascii?Q?bUQngkfEHqjPkXSKYO/dVHlM1R69T64HdEA8vFok0ilKMaRFbj1NQ5ywQ=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB3212; 6:k1HDHYWV2Mpg/+aaNcBEvOeiVr2CaVY65gCp2ptVxpodBWCtmSU4KX25f1oKsyYTawAS9SRqpngiFuykdy4mnZ6CAIUYmeB5ZtukPomm+TC3rjnngkYxrziBBW5730883N+mxi08BKFUC42dK64mnkCeUygJ8oHlEBvDuK9SqvW6bx2NJTdb7m3Q+vdy5Y3Cn52zBxqhVgrfn+q6XvveMx4e6VriY/zgOiIDjBPBhF83GPw5NI5XDr7iQw2DHXSOyQinn6GFr1F1C6xmw+NxNiXmo041jyvgq1qh0pwoP8M+mhvrlcvaKKozqLk/dl8+ExF9l+qD7B350D0gaDhmvtHm8UOWhYlDZxczkdwYnyU=; 5:g+2DO92xdeTPX5o4x/Bb5s0hxBYfDuzREUs4Q9uiRyewyK39BJTTfXIaeXI+oLZ0c+/oyG4qli6hakGcr+QkVS10w1CAXFofI6BmN+6l1ZH4u8xlUAzzr2nNCbus7IUrWipusPbNWfxylkGtIXRyRx+Pr+wSESreY1pPhz3qXJc=; 24:MCqa1F0ZkfmYD2eDIRzyk0dYaSWcdhINbgguTzPvFkHRlrKfNlNM7Buql5fi9M6Lzx1wN9F5/hwWXpPD46lwYtNICvxAD+poiImpKFup6iE=; 7:5VQo3JBwW0o/BFmYK44fZz9R/exSS2/IACn8SlY71OG+xN4M1f7RkMt2dXDt7+ZxP7KdvxFKf5umbD0ja6U41TpJeXyouts4bDyMK6xwc64/oR1TBu4zDx1zl6loKWxyeYTBUSL7zs2n+jGJcM/ivXXJCW9ujRwGwB1wK5VzpRqP0jsIZJXI3F5fNZbsPOYlRpdUyRmrvuub8iB4JuhxlrlvFyYiWBZICckdvZbVEBqAZif39+6Yk84x44V8HZr4 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2018 18:26:41.0594 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 81e7323e-6d63-4963-555b-08d553a0b3a6 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR05MB3212 Subject: [dpdk-dev] [PATCH 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:26:42 -0000 Ethdev Rx offloads API has changed since: commit ce17edd ("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