From patchwork Thu Nov 23 12:19:13 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shahaf Shuler X-Patchwork-Id: 31558 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A05EB2BAC; Thu, 23 Nov 2017 13:20:01 +0100 (CET) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30077.outbound.protection.outlook.com [40.107.3.77]) by dpdk.org (Postfix) with ESMTP id 048752BA7 for ; Thu, 23 Nov 2017 13:19:59 +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=hSd2oz+cU2IxbfXGj6KtavgHBzF7v+b096yUbBgeeo4=; b=UXoFanj7m9fpPE7dfk8h/eeqJI+QnonVXTjw+8biESijB7I7PxRrj6kv1BMTYMCihmPGbs0LOK6vdFDeoop3XbvvPKlKi6G9S1THPj2apoeZ0cUhurSxh4Wm5jy3FQYgwHq0NKZr8gLBwucEetkbCl1T95FJzPW0kTKwtceWDQ8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=shahafs@mellanox.com; Received: from mellanox.com (82.166.227.17) by DB6PR05MB3142.eurprd05.prod.outlook.com (2603:10a6:6:1a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.260.4; Thu, 23 Nov 2017 12:19:54 +0000 From: Shahaf Shuler To: dev@dpdk.org Date: Thu, 23 Nov 2017 14:19:13 +0200 Message-Id: <20171123121941.144335-2-shahafs@mellanox.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20171123121941.144335-1-shahafs@mellanox.com> References: <20171123121941.144335-1-shahafs@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [82.166.227.17] X-ClientProxiedBy: HE1PR0402CA0044.eurprd04.prod.outlook.com (2603:10a6:7:7c::33) To DB6PR05MB3142.eurprd05.prod.outlook.com (2603:10a6:6:1a::16) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 531f36cf-4c8c-49fb-3602-08d5326c8207 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(5600025)(4604075)(2017052603199); SRVR:DB6PR05MB3142; X-Microsoft-Exchange-Diagnostics: 1; DB6PR05MB3142; 3:fUj7mrOvltLhxqZZmPKuKRgaqjdNct/FfcBxUsnfxhPBitBbGoi9PNE6LqJvQojx/pJ9zPUXTcfydNZ24E5cYKrTO0jMtbtZ4nWeTCdobOlNCqgLh1v4HCjcUifcbIpIqSZLWVrQpdyQa/XSelF/xRQk1ag9h/TPVQZqzniGXyQweqJ5GFTqGxXN30KoywC+LsQlS23+qwSD6OghIo722eIgQsn6RWUm3A9XHQ2tHAd5N7Em33mdUkfyGSZGQGHW; 25:jHa+TjJcZg+AY8i9m7xI7sskmDY/fnc1D3P4mRAo++OFPPovJho7uJNgwIN2zy9y0/gCUi5A/Tkt96SAPZnSSA9LYSC7klgRkl6InZQFLffB2tjl2ZvmQN62ZOJvbAYt/y+ZeHWAJMgkwZvaZf1w9YM4zlyp1KcCbq0yxFVXYq+fbRV4d7bYlvd1XTUhGmbY/+Sr9m1iRkOIiae23oTRcQ6Oxk5iBzOWmBvRNYQkhDGZLK4uKfZsd29XgefWteFtw8Q7Rd32loPkSFAo1XqZumDhApot/r/9TDY4aPSTcNaTwTvbN/te+1yM0JEG/jO6VN16KWEk1Ft6aKlVGh370zHrVQiuoWrWFyNQjP9wt/w=; 31:iGrkmzB2zShrNuQKtCbNYCH45bjSTGTczFXgn+ynvv41nBzEw90DqCWEy6OHlIo2pPdFTo/KwD7WT8w0x1GkDL18bZ3w7HHeOttad42vnu0V8tTrGD8mBvn2ZObj8+//XZA2Ra7jjzxaIiOlcWgT5b3YrMpmZ+3FqURQs2iG7WCYsVmj5khgdb2PYUUlRBO8POHEN+3F3CoYSezgD2UQcvGPiHzrW02zWX2pqLT6O68= X-MS-TrafficTypeDiagnostic: DB6PR05MB3142: X-Microsoft-Exchange-Diagnostics: 1; DB6PR05MB3142; 20:y6TnXdU546SOBa9XrpaIr6ZCTw4AbuKAtBkalrmzCzmBZp1ZXladszELDrNHqRw1GPvnU+qrAdjpzo5hATDEN9tfMb48ffndDLn58Gox0mtWocyQY2aUzkiBB/adgnKcn60OKXmr2s+UuSYMOJVtfjTVrq68v6u28LBblLL5vAKWBzOkcSLeNSRLnWF/fXDku5RhS/QWqspu+RkRkVY7VetnU6c2w0KXgITvCZuxzN07WWPzVuNeYJ8BJBPr1QNbTw8in8Aokk6y1aQNqF+yRZ84tW9THMR7VEU9/ZzoPsqzS7ecnMyFfFqsFH+6XX78IQ6FEUtp3kkPi7rBlGsm/bRSnvlwqSuBzr8M3iDq0EBRA4UhqsVmK5w9/UVzyRlnyL3jTxMsXNjdvtTmqKlEMcYHjk/wapxZdl3fcNeSXw+DZnUn+9x+uPxsXqk++xzbmzGhra2gKs2sPpSDZJylPhrLo9+JM+9sQyag+p+db0+h4U5GA0t/rOG8yOP5Cdm8; 4:yCr3uxiwAYtM3xaI3AABPsDIRuTH2WcfENpupf8emcIXv5WBBBXUyhRFf8gVaU5p4kdZ0M6F7AJbT9Plvvw4myNNc7WGCyf0H0UR1uW06xHJrH876vzvyyTH/zenYHzlGBYOombg9MUFYXPbYUqXajd8uS++zmctYIT08/Jup7SfrKHjXXiQ0EAUQHw269y9RVQ1OuOk8FlaDK3/aRUga37skZHJvFnqUok9Sm/QziLO4osYJL7GxWzlRhal/srFcIN3b9nvph22aGQHZ3BjAA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3231022)(3002001)(6055026)(6041248)(20161123562025)(20161123560025)(20161123555025)(20161123564025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB6PR05MB3142; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB6PR05MB3142; X-Forefront-PRVS: 05009853EF X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(366004)(346002)(376002)(39860400002)(199003)(189002)(50466002)(16586007)(101416001)(5660300001)(478600001)(6116002)(47776003)(69596002)(6666003)(3846002)(33026002)(97736004)(52116002)(8936002)(36756003)(16526018)(76176999)(55016002)(5003940100001)(50226002)(48376002)(50986999)(33646002)(6916009)(81166006)(53936002)(81156014)(8676002)(21086003)(1076002)(305945005)(68736007)(86362001)(2906002)(189998001)(105586002)(2361001)(25786009)(66066001)(7736002)(106356001)(2950100002)(316002)(2351001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR05MB3142; 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; DB6PR05MB3142; 23:+ASDu2qTxVydyIKpW3BNrsv/0/fFViJOWx/rznQI4?= I2+2w9znyOAdeLMynfOQnj+1m98gtF8rRjMezw3KvjgUOjxw0YDhN49L3racOSoV+pWId9O0i0SoCaQ2Nw65PBgWc2wFOj7NhcTn2ITIlGIXlrRi9NXyOCHnnKXS4ouTyzs4ZuMgNvZhmXXNquKUKTZojoV0H4+c0y0UzH9Vf74szplxdmd70Gsg+BcjANbMOILkWGbmw0RefWSw+ItKJRJEzG8OGjNxZ7KhIL8h0gsyqF/Puc6p284OxMzmUo+vKndg6Yxsj0n8I/nne5fYiqpR9yI75KkKnFeHKgdJhRP+ZrAagfh7gS9DkFg0vfBzagSkHw8SVrJilBEowoyuS+eryy0NVSU5jZIdrrT312XUjf0n8k/NDEcgriWKSFtYjehUiRXFI4zEFeeVJwHnisdkI4ZdaLefYfnrezx53QFyo84VRZa5bUGOHHji8Mg/9cWvN5tkmX3S+yjSplMlpxNhXZmOEI/zm8kdcpl5JuX9w5Xk6f1P16eRrIl6zlq5erROxmkd+OdbING2u+2Yc8Hu+xjndaXjwQb/R77jQnWGqi0kfhGOxvwe5ZZbnx9rsoRszIQT5RX2HV/FNXb7ptQg2yzfVEduLTVNQ4OqUIgHyeAhjg6PzgImYbt0G///O3T+kkXxKZK9Zv8Oo07IOXf3ZBHs/MExtFKagPxJyXqLnZLD65BONzwmAA0yYNBbfM7qeuY2Gh2f9Pt51QefJx/m92zFtH1DC9b/4Ot9yfjujm+AQFycjYY9oKbQh+SENpcUmaKqru18tPQwqtHeBQyn2SlV4CLU22QMIulbeGwGJkpUDpjxHv5F6zSNPKbw6GPGhSh5WuQiaGW7mA3lWcaCDaiKm3BxQMV+QHzRgzCTE1CJYk8GZmLthVYji+YD1nnVQ4ZWcG8UJGrb+JXhLkpDcL/44B8u60Z9GWNSfgKT9Jxxo9+EjY/4Tsm0jSIgNrEkzXwOsURGOgNbaiI4Sn8tk/AL0Ws2TAOlOXzCI3oW/QPrzqO66rylfF/c4hV9g7jJF7rl6xdtnU/krixH+U0OG176XuOoLs5Kbp7p8U8+qv+e63b3+x6eZW2V1mF/CI45rYgyK2hnPrJ1G6MlJ6kuZHUmoLwM+8wOy/fAOFQJVz50jzUsyca4dkXt7pGI+0= X-Microsoft-Exchange-Diagnostics: 1; DB6PR05MB3142; 6:AZo6/mjEJvErGhWSouWfiZ9sbmDN8oIm17w4ETqxePFGr4iykHBG2JXyuB9LrTFooTZrXwerNEmHZnm3i/DtOtHGimw8N9PHePXCalsAiglfebORaHMMPmvriRCBTq6Wtmsz8s7/BtWwCZ4DHcByvRR+lspGpQOpgkua9ItVkVJC4SGTrdpBpujpSvpzm7YgT8249MTRU9vJK1YkHIbtTu3+DrHnxVq2CI8Jzarbe5Xdah/zmNDVyN0h6cquCE02YJDPq4EYkGXc+OapDeKRQCm/+QZENa1AQ7D4zk/v7IccRfxW27mkVqkvsr5spxk4WK7iG9RKjY6/oIDQU99azBMnQKcKlfBiflo6aarkEq4=; 5:6SsjHuGM5ZnX40SSFYxkeLmNAJDFvhu+CeyNpt2Ruawmxel81c9svXSt3wvdbOX48NNNh99tj5eBkTl5+bpOCrZU2dZ16VAexVkjtdZiQsDepoK7KmBeUktYGmwdvUUfBYcKCJyorbUb8nBrVK8WMOnki2P1IxfIKXJCP3GAvVk=; 24:pqcdKvmL6NpsU2gxAuUcDJniIcQ5yFu/6OjahTEOoqzbgFaqOj5yNGnvoiHNMfNKJ/BwtJMWgDIw/dPKTaTDgE+TcS/fzgbXGEsaAqs9e8o=; 7:EoGp/slTDeMcKnJ7W0JrhkjAelR5H4CAZyWd3odCE+kFOD1K+RTV3RT8OK1C/ikVLoZk9M8AqawaUP52AgtNCpKksAMFOwOQTQWPgKErXs6MqbA42vZWGwxVYIDl/ZjArHIWWQrZrJyap/w6f+I745OWFNLDNJF51s8ndxKOfyyvhJSLYPk2CY0dLMSXURFBoWIWBEhg+8U9suVau4QwX3TK55PqaIUpcje4T+U3aqNeBi0wJnxR79EEC3o/sx9E SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Nov 2017 12:19:54.5441 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 531f36cf-4c8c-49fb-3602-08d5326c8207 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR05MB3142 Subject: [dpdk-dev] [PATCH 11/39] examples/kni: convert to new ethdev 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Ethdev offloads API has changed since: commit ce17eddefc20 ("ethdev: introduce Rx queue offloads API") commit cba7f53b717d ("ethdev: introduce Tx queue offloads API") This commit support the new API. Signed-off-by: Shahaf Shuler --- examples/kni/main.c | 67 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/examples/kni/main.c b/examples/kni/main.c index 3f1738544..ae5a8c61c 100644 --- a/examples/kni/main.c +++ b/examples/kni/main.c @@ -124,11 +124,8 @@ static struct kni_port_params *kni_port_params_array[RTE_MAX_ETHPORTS]; /* Options for configuring ethernet port */ static struct rte_eth_conf port_conf = { .rxmode = { - .header_split = 0, /* Header Split disabled */ - .hw_ip_checksum = 0, /* IP checksum offload disabled */ - .hw_vlan_filter = 0, /* VLAN filtering disabled */ - .jumbo_frame = 0, /* Jumbo Frame Support disabled */ - .hw_strip_crc = 1, /* CRC stripped by hardware */ + .ignore_offload_bitfield = 1, + .offloads = DEV_RX_OFFLOAD_CRC_STRIP, }, .txmode = { .mq_mode = ETH_MQ_TX_NONE, @@ -607,10 +604,30 @@ init_port(uint16_t port) int ret; uint16_t nb_rxd = NB_RXD; uint16_t nb_txd = NB_TXD; + struct rte_eth_dev_info dev_info; + struct rte_eth_rxconf rxq_conf; + struct rte_eth_txconf txq_conf; /* Initialise device and RX/TX queues */ RTE_LOG(INFO, APP, "Initialising port %u ...\n", (unsigned)port); fflush(stdout); + rte_eth_dev_info_get(port, &dev_info); + if ((dev_info.rx_offload_capa & port_conf.rxmode.offloads) != + port_conf.rxmode.offloads) { + printf("Some Rx offloads are not supported " + "by port %d: requested 0x%lx supported 0x%lx\n", + port, port_conf.rxmode.offloads, + dev_info.rx_offload_capa); + port_conf.rxmode.offloads &= dev_info.rx_offload_capa; + } + if ((dev_info.tx_offload_capa & port_conf.txmode.offloads) != + port_conf.txmode.offloads) { + printf("Some Tx offloads are not supported " + "by port %d: requested 0x%lx supported 0x%lx\n", + port, port_conf.txmode.offloads, + dev_info.tx_offload_capa); + port_conf.txmode.offloads &= dev_info.tx_offload_capa; + } ret = rte_eth_dev_configure(port, 1, 1, &port_conf); if (ret < 0) rte_exit(EXIT_FAILURE, "Could not configure port%u (%d)\n", @@ -621,14 +638,19 @@ init_port(uint16_t port) rte_exit(EXIT_FAILURE, "Could not adjust number of descriptors " "for port%u (%d)\n", (unsigned)port, ret); + rxq_conf = dev_info.default_rxconf; + rxq_conf.offloads = port_conf.rxmode.offloads; ret = rte_eth_rx_queue_setup(port, 0, nb_rxd, - rte_eth_dev_socket_id(port), NULL, pktmbuf_pool); + rte_eth_dev_socket_id(port), &rxq_conf, pktmbuf_pool); if (ret < 0) rte_exit(EXIT_FAILURE, "Could not setup up RX queue for " "port%u (%d)\n", (unsigned)port, ret); + txq_conf = dev_info.default_txconf; + txq_conf.txq_flags = ETH_TXQ_FLAGS_IGNORE; + txq_conf.offloads = port_conf.txmode.offloads; ret = rte_eth_tx_queue_setup(port, 0, nb_txd, - rte_eth_dev_socket_id(port), NULL); + rte_eth_dev_socket_id(port), &txq_conf); if (ret < 0) rte_exit(EXIT_FAILURE, "Could not setup up TX queue for " "port%u (%d)\n", (unsigned)port, ret); @@ -702,7 +724,10 @@ static int kni_change_mtu(uint16_t port_id, unsigned int new_mtu) { int ret; + uint16_t nb_rxd = NB_RXD; struct rte_eth_conf conf; + struct rte_eth_dev_info dev_info; + struct rte_eth_rxconf rxq_conf; if (port_id >= rte_eth_dev_count()) { RTE_LOG(ERR, APP, "Invalid port id %d\n", port_id); @@ -717,19 +742,43 @@ kni_change_mtu(uint16_t port_id, unsigned int new_mtu) memcpy(&conf, &port_conf, sizeof(conf)); /* Set new MTU */ if (new_mtu > ETHER_MAX_LEN) - conf.rxmode.jumbo_frame = 1; + conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; else - conf.rxmode.jumbo_frame = 0; + conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; /* mtu + length of header + length of FCS = max pkt length */ conf.rxmode.max_rx_pkt_len = new_mtu + KNI_ENET_HEADER_SIZE + KNI_ENET_FCS_SIZE; + rte_eth_dev_info_get(port_id, &dev_info); + if ((dev_info.rx_offload_capa & conf.rxmode.offloads) != + conf.rxmode.offloads) { + printf("Some Rx offloads are not supported " + "by port %d: requested 0x%lx supported 0x%lx\n", + port_id, conf.rxmode.offloads, + dev_info.rx_offload_capa); + conf.rxmode.offloads &= dev_info.rx_offload_capa; + } ret = rte_eth_dev_configure(port_id, 1, 1, &conf); if (ret < 0) { RTE_LOG(ERR, APP, "Fail to reconfigure port %d\n", port_id); return ret; } + ret = rte_eth_dev_adjust_nb_rx_tx_desc(port_id, &nb_rxd, NULL); + if (ret < 0) + rte_exit(EXIT_FAILURE, "Could not adjust number of descriptors " + "for port%u (%d)\n", (unsigned)port_id, ret); + + rxq_conf = dev_info.default_rxconf; + rxq_conf.offloads = conf.rxmode.offloads; + ret = rte_eth_rx_queue_setup(port_id, 0, nb_rxd, + rte_eth_dev_socket_id(port_id), &rxq_conf, pktmbuf_pool); + if (ret < 0) { + RTE_LOG(ERR, APP, "Fail to setup Rx queue of port %d\n", + port_id); + return ret; + } + /* Restart specific port */ ret = rte_eth_dev_start(port_id); if (ret < 0) {