From patchwork Wed Jan 10 09:17:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shahaf Shuler X-Patchwork-Id: 33387 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 07EF41B1E5; Wed, 10 Jan 2018 10:17:47 +0100 (CET) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0060.outbound.protection.outlook.com [104.47.1.60]) by dpdk.org (Postfix) with ESMTP id C0D7A1B1A7 for ; Wed, 10 Jan 2018 10:17:32 +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=nptXxR63p6dxQUBASs7PrKg93ozzjrcF0UZH76vjzsQ=; b=K0DTgK2GryeU5bnPMid6vVKEOULe3Lt52A8nci3FJOxR61gE+KiK7VdFY8vs70ctfnWJycNp9XqrdoBRUlW5oj3KNbBucytKdxxRAxMhmvm5kvA4yyrHd7RLMdQ75fAQ4mg4r+UVb+wm0pZIf1j3YyDe8yoBTnzZ8AYCll6VrXc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=shahafs@mellanox.com; Received: from mellanox.com (82.166.227.17) by AM4PR05MB3140.eurprd05.prod.outlook.com (2603:10a6:205:3::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 09:17:30 +0000 From: Shahaf Shuler To: nelio.laranjeiro@6wind.com, adrien.mazarguil@6wind.com, yskoh@mellanox.com Cc: dev@dpdk.org Date: Wed, 10 Jan 2018 11:17:02 +0200 Message-Id: <9f378f9e27415586c8b0555e75ea45e5b3b4ec0e.1515575671.git.shahafs@mellanox.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [82.166.227.17] X-ClientProxiedBy: VI1PR0202CA0030.eurprd02.prod.outlook.com (2603:10a6:803:14::43) To AM4PR05MB3140.eurprd05.prod.outlook.com (2603:10a6:205:3::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b7bbdc7c-1e31-446d-da17-08d5580afa1c X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603307)(7153060)(7193020); SRVR:AM4PR05MB3140; X-Microsoft-Exchange-Diagnostics: 1; AM4PR05MB3140; 3:Mm7nymxzfoB5FsZFgSyB45M8luSpAh7US+oLpweJYLKLO4BPgZlDYhZdwdmUjHILyFelBgOfmzxLX9UygL9z4RnSyx8jbT3nDpiBAYJOuROPqvNxTLWugWayPUP91+qssPVz8+37LYdsadCg84uf9wyMvBL+olHulHHSTMgFmNnxBS0Qfjdv3PjNACPlZbSRfwQ6m/mAXUTqWO7xuJ+UI9JqVxCoj5omD4ddYdHodqdN7NqZWwyuZSv91W+6REBG; 25:RTC/WUKTOa7PPu1yQAixCt59xAKzT7SdZ76XeXN7opnX3hBXK9Tnt+BHm2Pqdgz44LmqWundA01tM6ii7QCbvFB8WB2GakhcfXclgWFL1i6TJYZ89WytkEn0XNhklh5/MCMjf+1wEJvwCb7m5pbYUzvVUci+FoWhZW7OwMtTN/hMOcttkJfkknc254vrhPnmH8FZlx4J1bIdhLQyBgC9sLlsG6j2nwwiKhTE29crD6y4x1aph1Qz398geCzyew3JleWNr/KIg/eS96T8t2Evrk0yIpJ0PRT5X5MWYWSE4KdbJjrg1sfekmXf8zEVg+3hjy8S9iAI/8ZrCoi+dSKnZg==; 31:NNWlQkHzPVf5+rHsOi7fUwaj274v6IAv1ijRw3cRXS/ItwIG6ogpuZ0kmvOcVdAgNJUibhzICtmKZalULq+bQaJCBABFaGgJu0NKZmR5l0i91hw0q7SpYJYm3Jz0hjXDjLrjEVx3EH0t/5m85Yi4guBxH0vy7SHGAgKZ9mn0agS9FBiXCNVLulDM2eov0ZPIlK5E5yAl3yl08lRInwnH3ReyL/ZravpQfsnAWvNRBOI= X-MS-TrafficTypeDiagnostic: AM4PR05MB3140: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; AM4PR05MB3140; 20:sT9tIRwLxfr9CphGQ8RfSBQkY2Lxb6xNVLdtjTYk+kQ7ZKDeMKm7LEPwREdQB3dZbjy2S4M1gynDS5Gd9vfungMAW2jZ+7gFf7JcgK9Q9oaTzcrKIXFXwOGy+7iXJc9doAt47+9w3gXDAyU0o+oTG+vkTC1P+lW+CVOBoYkVy/+eLI5kj1LiKvTvuj9n9atAzsHndur4D7C/LImbjI54r1loBDQaBxcZ4W+lZG2sntFKANv5tXIofjgf0ERFiT35TGjq7oBppLa8XiXPQyWAr83nw0y6vrRnRv5yUh/o8rf8Ez8N7y8SLMeof7LFW/YqCT5kPbNSsrjkjbYLuRgBYeouJfhDcBCzcLNl3qGfGJmbBmww5jP9Z83uS2hVwIUTvvbq2JzO1/5fHlaAGxp+MWkFZYIjF35vuU92zA/rtDP9iAyrfwWvwYoqiQ0mqi1KBheGE9AlS/4/Kb+56aEricUIj2fcPJZrA1qita0g7IvoMQXsMEJCBLOaW+F2HP7Y; 4:h0WfGT+LCugCHTp8hPmHMn8rTHSohPNUV4a3KCVVu955LxdE5po87PVxCEzRFVUQh97Pa1RkzfVBuq2tFdg6Qcw32wTJCJWWpBwWZkgcnUkgKi3EYWS4knbEcR94T7c3WhnQnRIQbhpTqXDZERLiRrYF2q4CEPZc3WBgpXcEOg83/Y2d4+gVvbwY4UnbqbwJkxw7yiSAb19sZ8KKMYcW4hj+iNOuRRrup9XV4BoQ8OlmME7U4HnNWig8e+YWnUf8NCORclttqxUuG58uiMfofg== 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)(93006095)(93001095)(3002001)(10201501046)(3231023)(944501119)(6055026)(6041268)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123564045)(6072148)(201708071742011); SRVR:AM4PR05MB3140; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:AM4PR05MB3140; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(376002)(39860400002)(39380400002)(366004)(189003)(199004)(105586002)(16586007)(118296001)(97736004)(47776003)(66066001)(48376002)(50466002)(478600001)(106356001)(81166006)(25786009)(8676002)(53936002)(68736007)(81156014)(386003)(50226002)(4326008)(8936002)(316002)(16526018)(59450400001)(7696005)(51416003)(7736002)(52116002)(5660300001)(305945005)(6666003)(6636002)(2950100002)(76176011)(55016002)(2906002)(6116002)(3846002)(36756003)(33026002)(21086003)(69596002)(86362001)(575784001)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3140; H:mellanox.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; AM4PR05MB3140; 23:0huUWJOn8xt8yvshYsj6L6lHgVJThQNRsIoD7j0DF?= 0d/ieRcsUHwNt5zVRVAgpT+VL4E4cVgr9HbxaXqkgYBiWCVW3DKmHfPaXaPltLQyjg6ta9tGT5fE3pCfJoxwq760ho+yMPbp1mqkOEnqMtH2aCwa70CXTWL/ydaMER949Q5d4dFd/RF00tnVLWAaYGZ51uwZI1J0LpP+0HVpWQuxkD46rMWyYqCtVEmtLFJmpu+CXfWshzp/p5wHLsn6ZWh3z6PMxlj4UUsypVOngBYsgC3cwYLVKmWFzl1To/W6as2g2U7ArlOtVP5A6LKTK/g9WzjBYBNlwAAaj3EzTBlFYVxBWvYQdd8hBBV5bd285XM2FGspLkSyeTsJhVfojYByiNQ12bfQ7SIJAdxnce6xZ+I7Qv49Z/JmnDudC3v7VbF2ilQMqhLhxpPoMbSskY1Z4WDXTOstOywz3ZCcbY+zJIeEpFPk3VRSC0lgE+tzL+7Qhntzul21iGADoAy8L2Z2+xispA69tZV8GkfUaI8EVIxHOMhCbsQzu6qq/Y/OfjuyRc5PYJeCWiI3OmuubnZ7JkmKnAwzIuhVTaEHyBR/vacU9nFi7YkozjsLkV0Stz/MawQeG2VSCqOiUAgE1jKpLHt94Fake69peMhhA1QLQ/Du+A+rhNLm3jO3amzNYWkkvs5OUPvKhLp9bwauoGth2MuxFp0vl1kjql6tIh8xqX/bSreqcNyNm/7fZnQmzU1BCNsqDzDmPlaS9zi5U/fXD2Yn+ujtOWJnIOPOEpnLMkejcd0QnsrnT3gjoSnqW74Orw1C08u8rSPl3HIGyR/f4JGLbd4GR4OK0ua2oYbuigjjTmsta+nc37bIC4qeDYn4DtPcQYJc8BwUJWCYOsbQSGzgDyy14mlbemP9Om+tXwelY0wgvWWAa61htTmerGVpb0lQbQWJi5ofKgsONqukn34xhT5NgLaCdpAkg2JFaU5D8fyFLu2ZNtxaXsZxPq4oXo6g8GuUudpGQkR+3qKPc26Hk1y3jtuN/GnbEK6B7//iNIdGuH9gqz893L6khqzEzguPGkmENLoM4nyTt8LUGV7Asw4S21pBIRLHTKBzsbqwrhRvd0iqBY9R1BSBe3xgmyzifj2azuKVKjiBtY5o6RQ5i3A5eQMpgRIKhvNPNE4qI8HtdEAf35p2IMFaNAyvuNg2IiToyy/pnz4z94Q X-Microsoft-Exchange-Diagnostics: 1; AM4PR05MB3140; 6:GFZFE3LQHcPSC0if+A47xMWZEA9xGqiJ1UJsOw8vBP6sejkYk9yNTddLfZ9UChmHgFySkrUdVPreaZXm/S+nS3mnOuIO5Yg3I3zDbkTTq0i3qpxKtCzh+wb16v4seU0d166i67UuWlLjHgnV5PnAVu1kvMzapdMgZxZkbYXwMQHIekx9Qhz3KdcepEk3DSYqD1cJJjzyW4cImY+R3k7vUVZc3W4YJlQr4kbGPX4y0soNjiNM9+vxhXpSYhWZmvCuZdJeOTyB8mL00xFKNFxYbMqArPdcguswMGrtxB0VHiA++meW4BKOlE+eybU/Yw+faG+czLhFUJ++3PyodUl9DYNy/i2IphO4Ge09/E6HPYA=; 5:LKFK47vwzhJn8hvN4CN38sl3/whvUtQiCY7JFWk0/Aj/0ROijD1xd1DdYR2T6dkQweDjST4YOWOfEI0xi77ZAZa64ajrtLgeubpAcRXNMztumrUkP43FwL+3mxe8iNGe0i4NsTCWhOKiSuh7h5+JGB59225baoxJZWtBIpAooj0=; 24:tSaGB6x+Pe+dgkufo2aj0kP00XYgKFMI44RdgFsLmOv+xIdOxzEbhrYjAYj2wu31KLllK3dYDUIrXm3Y+KwRa7GiFS88bLYljaw5/X2LeMk=; 7:wf0zNrF06XMZjrIc2LAFjDydNDPRsNRbwl/YYNpUDFn1RZrw+/LxTaTRQvuKii+JHc1BrNIBhQWFeoS2vR9fvAjpIJK+C2LxcRbW4pZt3n1J5TH1JlpyMZtDesGJ7dMvUIwtRXwwIlyovTu9jwumWRdvfNZzlrGiGTPjRxNFEgM2nJxsZfX/cX5WxhuF3CBnRkkvqieqyoZe4UA6k/JlVZKgmO7MIRnmLaegAtyRuxTmkcB9OM5dT4azfXVFQycp SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 09:17:30.4717 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b7bbdc7c-1e31-446d-da17-08d5580afa1c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB3140 Subject: [dpdk-dev] [PATCH v3 6/7] net/mlx4: convert to new Tx 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 Tx offloads API has changed since: commit cba7f53b717d ("ethdev: introduce Tx queue offloads API") This commit support the new Tx offloads API. Signed-off-by: Shahaf Shuler --- drivers/net/mlx4/mlx4_ethdev.c | 7 +--- drivers/net/mlx4/mlx4_rxtx.h | 1 + drivers/net/mlx4/mlx4_txq.c | 69 +++++++++++++++++++++++++++++++++++-- 3 files changed, 68 insertions(+), 9 deletions(-) diff --git a/drivers/net/mlx4/mlx4_ethdev.c b/drivers/net/mlx4/mlx4_ethdev.c index 2f69e7d4f..3602f0ad8 100644 --- a/drivers/net/mlx4/mlx4_ethdev.c +++ b/drivers/net/mlx4/mlx4_ethdev.c @@ -767,17 +767,12 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) info->max_tx_queues = max; info->max_mac_addrs = RTE_DIM(priv->mac); info->rx_offload_capa = 0; - info->tx_offload_capa = 0; + info->tx_offload_capa = mlx4_get_tx_port_offloads(priv); if (priv->hw_csum) { - info->tx_offload_capa |= (DEV_TX_OFFLOAD_IPV4_CKSUM | - DEV_TX_OFFLOAD_UDP_CKSUM | - DEV_TX_OFFLOAD_TCP_CKSUM); info->rx_offload_capa |= (DEV_RX_OFFLOAD_IPV4_CKSUM | DEV_RX_OFFLOAD_UDP_CKSUM | DEV_RX_OFFLOAD_TCP_CKSUM); } - if (priv->hw_csum_l2tun) - info->tx_offload_capa |= DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM; if (mlx4_get_ifname(priv, &ifname) == 0) info->if_index = if_nametoindex(ifname); info->hash_key_size = MLX4_RSS_HASH_KEY_SIZE; diff --git a/drivers/net/mlx4/mlx4_rxtx.h b/drivers/net/mlx4/mlx4_rxtx.h index b93e2bcda..bff5ae43d 100644 --- a/drivers/net/mlx4/mlx4_rxtx.h +++ b/drivers/net/mlx4/mlx4_rxtx.h @@ -180,6 +180,7 @@ uint16_t mlx4_rx_burst_removed(void *dpdk_rxq, struct rte_mbuf **pkts, /* mlx4_txq.c */ +uint64_t mlx4_get_tx_port_offloads(struct priv *priv); int mlx4_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, unsigned int socket, const struct rte_eth_txconf *conf); diff --git a/drivers/net/mlx4/mlx4_txq.c b/drivers/net/mlx4/mlx4_txq.c index d651e4980..7664c3e1a 100644 --- a/drivers/net/mlx4/mlx4_txq.c +++ b/drivers/net/mlx4/mlx4_txq.c @@ -41,6 +41,7 @@ #include #include #include +#include /* Verbs headers do not support -pedantic. */ #ifdef PEDANTIC @@ -182,6 +183,50 @@ mlx4_txq_fill_dv_obj_info(struct txq *txq, struct mlx4dv_obj *mlxdv) } /** + * Returns the per-port supported offloads. + * + * @param priv + * Pointer to private structure. + * + * @return + * Supported Tx offloads. + */ +uint64_t +mlx4_get_tx_port_offloads(struct priv *priv) +{ + uint64_t offloads = DEV_TX_OFFLOAD_MULTI_SEGS; + + if (priv->hw_csum) { + offloads |= (DEV_TX_OFFLOAD_IPV4_CKSUM | + DEV_TX_OFFLOAD_UDP_CKSUM | + DEV_TX_OFFLOAD_TCP_CKSUM); + } + if (priv->hw_csum_l2tun) + offloads |= DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM; + return offloads; +} + +/** + * Checks if the per-queue offload configuration is valid. + * + * @param priv + * Pointer to private structure. + * @param requested + * Per-queue offloads configuration. + * + * @return + * Nonzero when configuration is valid. + */ +static int +mlx4_check_tx_queue_offloads(struct priv *priv, uint64_t requested) +{ + uint64_t mandatory = priv->dev->data->dev_conf.txmode.offloads; + uint64_t supported = mlx4_get_tx_port_offloads(priv); + + return !((mandatory ^ requested) & supported); +} + +/** * DPDK callback to configure a Tx queue. * * @param dev @@ -229,9 +274,22 @@ mlx4_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, }; int ret; - (void)conf; /* Thresholds configuration (ignored). */ DEBUG("%p: configuring queue %u for %u descriptors", (void *)dev, idx, desc); + /* + * Don't verify port offloads for application which + * use the old API. + */ + if ((conf->txq_flags & ETH_TXQ_FLAGS_IGNORE) && + !mlx4_check_tx_queue_offloads(priv, conf->offloads)) { + rte_errno = ENOTSUP; + ERROR("%p: Tx queue offloads 0x%" PRIx64 " don't match port " + "offloads 0x%" PRIx64 " or supported offloads 0x%" PRIx64, + (void *)dev, conf->offloads, + dev->data->dev_conf.txmode.offloads, + mlx4_get_tx_port_offloads(priv)); + return -rte_errno; + } if (idx >= dev->data->nb_tx_queues) { rte_errno = EOVERFLOW; ERROR("%p: queue index out of range (%u >= %u)", @@ -281,8 +339,13 @@ mlx4_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, RTE_MIN(MLX4_PMD_TX_PER_COMP_REQ, desc / 4), .elts_comp_cd_init = RTE_MIN(MLX4_PMD_TX_PER_COMP_REQ, desc / 4), - .csum = priv->hw_csum, - .csum_l2tun = priv->hw_csum_l2tun, + .csum = priv->hw_csum && + (conf->offloads & (DEV_TX_OFFLOAD_IPV4_CKSUM | + DEV_TX_OFFLOAD_UDP_CKSUM | + DEV_TX_OFFLOAD_TCP_CKSUM)), + .csum_l2tun = priv->hw_csum_l2tun && + (conf->offloads & + DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM), /* Enable Tx loopback for VF devices. */ .lb = !!priv->vf, .bounce_buf = bounce_buf,