From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80044.outbound.protection.outlook.com [40.107.8.44]) by dpdk.org (Postfix) with ESMTP id 8E26D1F1C for ; Tue, 30 Oct 2018 00:15:21 +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:X-MS-Exchange-SenderADCheck; bh=yv10paHMqaYmu+8ywDOgv/wt2d6uOx5Lk5DgCpetxbM=; b=VXBfnTHL4O/jJ6gqp741/sHKe1KoqynEgjzmUS833jHlSZ9Dem3l+PDlqXrR/z+UdqEw0aigcVNhf3gHA6rujfQUQYyWZgCOiw8/BmoFvUYU4czChGXNJ1BvZMI4WTpRJRYIXaH2P+gZEwovsH/+HjfA9JSzYrsnU/kb7bywG/I= Received: from DB3PR0502MB3980.eurprd05.prod.outlook.com (52.134.72.27) by DB3PR0502MB4027.eurprd05.prod.outlook.com (52.134.66.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1273.27; Mon, 29 Oct 2018 23:15:20 +0000 Received: from DB3PR0502MB3980.eurprd05.prod.outlook.com ([fe80::f8a1:fcab:94f0:97cc]) by DB3PR0502MB3980.eurprd05.prod.outlook.com ([fe80::f8a1:fcab:94f0:97cc%4]) with mapi id 15.20.1273.027; Mon, 29 Oct 2018 23:15:20 +0000 From: Yongseok Koh To: Shahaf Shuler CC: "dev@dpdk.org" , Yongseok Koh Thread-Topic: [PATCH] net/mlx5: make vectorized Tx threshold configurable Thread-Index: AQHUb91CWJEHz75VgE+yAeVJWNc0ow== Date: Mon, 29 Oct 2018 23:15:20 +0000 Message-ID: <20181029231509.39886-1-yskoh@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BYAPR02CA0035.namprd02.prod.outlook.com (2603:10b6:a02:ee::48) To DB3PR0502MB3980.eurprd05.prod.outlook.com (2603:10a6:8:10::27) authentication-results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [209.116.155.178] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB3PR0502MB4027; 6:PFwCokd40jfkFwbY6BK5EGnk6jYg0SH0f26TwCgALD/jkhfEQM1ohQVQ3ohqMK3nmwmacwrctMYTCRQcp5xQcnfLn5/zQCKJn1Qg4vmg9U/ZzoSerLgQrBcsB2y3pWEAlIgm0jjhgtUVZ4Qz08oWYb6SsjVpjmLkYbVXXxUVHKemDYPwKeu0cBbBzOp4ltpu+h522E7dEUASLTNAKBkFl6ph+OypJl/TDiLkiys9jUAfDIKIcINHU1pGUpI6R1+fzlkH7IbENl9Whbgvkn/bCVn6B2Co7Wi5agq3wteHukkKCUjQ6v/+P0VlKs2SG2ORWOQt04koWm1SvlmgZUO8FaerYL77eJsex+nww39EZTfM7I5Mgm/Cc3VzX8f+jNj9bpnK5jVud26h7QD7V2zmOUeDw5TcL425dAnJ8pcjBMY2+RRDcrnebF6WeXpsRmOCys9mxf/ASQJmoMOGlswyrQ==; 5:HvDgn1C5hdkTKGUanHVGiCXJnHRQVs4l3mPbLgduVda6ZbCk/rm1KVRa/FHaGh4y+vF/wHK05asmlXKtMM1vFN31paxgFZTd6nXNO0T61bqinzADWBlt02m9CE0HUek7IXU39ccE653mBS9N2Kq4RHDMSgvkKpxQXiYa5xmW3ZQ=; 7:zSG2U9zPiQR/m0KZl2R+DWdSCdWgH0sn2znpJihkbY0gWEjP6VeIplfIVtVDLX5ZRFM6rWq9kaKZxvU8LfoZD/UFZ4LQzITLKUWuNNRbPpzz+snM9szw/X3GNMe58swPqx6YCHkv3wEDqYM2rH3oXg== x-ms-office365-filtering-correlation-id: ff8a8184-f361-48af-31b7-08d63df46470 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB3PR0502MB4027; x-ms-traffictypediagnostic: DB3PR0502MB4027: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231382)(944501410)(52105095)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(20161123562045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:DB3PR0502MB4027; BCL:0; PCL:0; RULEID:; SRVR:DB3PR0502MB4027; x-forefront-prvs: 084080FC15 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(136003)(396003)(376002)(346002)(366004)(199004)(189003)(71190400001)(3846002)(186003)(1076002)(386003)(68736007)(102836004)(5660300001)(97736004)(2900100001)(7736002)(6506007)(5250100002)(305945005)(2906002)(6636002)(26005)(6116002)(86362001)(52116002)(66066001)(99286004)(36756003)(106356001)(8676002)(37006003)(105586002)(81156014)(81166006)(107886003)(4326008)(54906003)(1857600001)(6486002)(6512007)(14454004)(316002)(256004)(6862004)(71200400001)(2616005)(476003)(25786009)(6436002)(8936002)(53936002)(486006)(478600001)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:DB3PR0502MB4027; H:DB3PR0502MB3980.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: i+HMl6Pvqk7pa/ulmRNhFSeHfHLNA2Oq+YFpXdhOZplFCK07BcC2WcI3ENg3MUyZsEn5X9Whyu6zBZgKU6qEL5njfynGu3MSitQc8sI28yzrOWHBsraDrFQ0XmfCm4p4Ax+nUUAYe4bj64cI0fWF+uc7O+0ikWppWqSS8ltQjK0GCb7X295SHvBBD93MHzJ5wwSlFPLxP98JdH9jVKNwa/XcQfcT9JIpsMaOcqFbU8uhzGlXmJpeWiBw5uPeR5pnCLASzsyR6blpilyvPB1OiBl716Bxu6E2420kpciOkldhcEnpLlKv0ogSBN7v9LkanuBrxex1JyjHLPQR6DP1epq5Fc9k0iJOrYft0ESHr68= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: ff8a8184-f361-48af-31b7-08d63df46470 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2018 23:15:20.2714 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR0502MB4027 Subject: [dpdk-dev] [PATCH] net/mlx5: make vectorized Tx threshold configurable 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: Mon, 29 Oct 2018 23:15:21 -0000 Add txqs_min_vec parameter to configure the maximum number of Tx queues to enable vectorized Tx. And its default value is set according to the architecture and device type. Signed-off-by: Yongseok Koh --- doc/guides/nics/mlx5.rst | 16 +++++++++++++++- drivers/net/mlx5/mlx5.c | 16 ++++++++++++++++ drivers/net/mlx5/mlx5.h | 1 + drivers/net/mlx5/mlx5_defs.h | 2 ++ drivers/net/mlx5/mlx5_rxtx_vec.c | 2 +- 5 files changed, 35 insertions(+), 2 deletions(-) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index 1dc32829ff..9ed015c377 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -338,6 +338,20 @@ Run-time configuration =20 - Set to 8 by default. =20 +- ``txqs_min_vec`` parameter [int] + + Enable vectorized Tx only when the number of TX queues is less than or + equal to this value. Effective only when ``tx_vec_en`` is enabled. + + On ConnectX-5: + + - Set to 8 by default on ARMv8. + - Set to 4 by default otherwise. + + On Bluefield + + - Set to 16 by default. + - ``txq_mpw_en`` parameter [int] =20 A nonzero value enables multi-packet send (MPS) for ConnectX-4 Lx and @@ -383,7 +397,7 @@ Run-time configuration - ``tx_vec_en`` parameter [int] =20 A nonzero value enables Tx vector on ConnectX-5 and Bluefield NICs if th= e number of - global Tx queues on the port is lesser than MLX5_VPMD_MIN_TXQS. + global Tx queues on the port is less than ``txqs_min_vec``. =20 This option cannot be used with certain offloads such as ``DEV_TX_OFFLOA= D_TCP_TSO, DEV_TX_OFFLOAD_VXLAN_TNL_TSO, DEV_TX_OFFLOAD_GRE_TNL_TSO, DEV_TX_OFFLOAD= _VLAN_INSERT``. diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index 6fa50ba1b1..544431e68e 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -75,6 +75,12 @@ */ #define MLX5_TXQS_MIN_INLINE "txqs_min_inline" =20 +/* + * Device parameter to configure the number of TX queues threshold for + * enabling vectorized Tx. + */ +#define MLX5_TXQS_MIN_VEC "txqs_min_vec" + /* Device parameter to enable multi-packet send WQEs. */ #define MLX5_TXQ_MPW_EN "txq_mpw_en" =20 @@ -496,6 +502,8 @@ mlx5_args_check(const char *key, const char *val, void = *opaque) config->txq_inline =3D tmp; } else if (strcmp(MLX5_TXQS_MIN_INLINE, key) =3D=3D 0) { config->txqs_inline =3D tmp; + } else if (strcmp(MLX5_TXQS_MIN_VEC, key) =3D=3D 0) { + config->txqs_vec =3D tmp; } else if (strcmp(MLX5_TXQ_MPW_EN, key) =3D=3D 0) { config->mps =3D !!tmp; } else if (strcmp(MLX5_TXQ_MPW_HDR_DSEG_EN, key) =3D=3D 0) { @@ -543,6 +551,7 @@ mlx5_args(struct mlx5_dev_config *config, struct rte_de= vargs *devargs) MLX5_RXQS_MIN_MPRQ, MLX5_TXQ_INLINE, MLX5_TXQS_MIN_INLINE, + MLX5_TXQS_MIN_VEC, MLX5_TXQ_MPW_EN, MLX5_TXQ_MPW_HDR_DSEG_EN, MLX5_TXQ_MAX_INLINE_LEN, @@ -1443,6 +1452,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_u= nused, }; /* Device speicific configuration. */ switch (pci_dev->id.device_id) { + case PCI_DEVICE_ID_MELLANOX_CONNECTX5BF: + dev_config.txqs_vec =3D MLX5_VPMD_MIN_TXQS_BLUEFIELD; case PCI_DEVICE_ID_MELLANOX_CONNECTX4VF: case PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF: case PCI_DEVICE_ID_MELLANOX_CONNECTX5VF: @@ -1450,6 +1461,11 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_= unused, dev_config.vf =3D 1; break; default: +#if defined(RTE_ARCH_ARM64) + dev_config.txqs_vec =3D MLX5_VPMD_MIN_TXQS_ARM64; +#else + dev_config.txqs_vec =3D MLX5_VPMD_MIN_TXQS; +#endif break; } for (i =3D 0; i !=3D n; ++i) { diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index 24a3415c8d..0b4418b80b 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -140,6 +140,7 @@ struct mlx5_dev_config { unsigned int ind_table_max_size; /* Maximum indirection table size. */ int txq_inline; /* Maximum packet size for inlining. */ int txqs_inline; /* Queue number threshold for inlining. */ + int txqs_vec; /* Queue number threshold for vectorized Tx. */ int inline_max_packet_sz; /* Max packet size for inlining. */ }; =20 diff --git a/drivers/net/mlx5/mlx5_defs.h b/drivers/net/mlx5/mlx5_defs.h index f2a1679511..12b78099e1 100644 --- a/drivers/net/mlx5/mlx5_defs.h +++ b/drivers/net/mlx5/mlx5_defs.h @@ -62,6 +62,8 @@ =20 /* Default minimum number of Tx queues for vectorized Tx. */ #define MLX5_VPMD_MIN_TXQS 4 +#define MLX5_VPMD_MIN_TXQS_ARM64 8 +#define MLX5_VPMD_MIN_TXQS_BLUEFIELD 16 =20 /* Threshold of buffer replenishment for vectorized Rx. */ #define MLX5_VPMD_RXQ_RPLNSH_THRESH(n) \ diff --git a/drivers/net/mlx5/mlx5_rxtx_vec.c b/drivers/net/mlx5/mlx5_rxtx_= vec.c index 1453f4ff63..340292addf 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec.c +++ b/drivers/net/mlx5/mlx5_rxtx_vec.c @@ -277,7 +277,7 @@ mlx5_check_vec_tx_support(struct rte_eth_dev *dev) uint64_t offloads =3D dev->data->dev_conf.txmode.offloads; =20 if (!priv->config.tx_vec_en || - priv->txqs_n > MLX5_VPMD_MIN_TXQS || + priv->txqs_n > (unsigned int)priv->config.txqs_vec || priv->config.mps !=3D MLX5_MPW_ENHANCED || offloads & ~MLX5_VEC_TX_OFFLOAD_CAP) return -ENOTSUP; --=20 2.11.0