diff mbox series

[ethtool-next] ethtool: netlink: add support to get/set tx push by ethtool -G/g

Message ID 20220419125030.3230-1-huangguangbin2@huawei.com (mailing list archive)
State Superseded
Delegated to: Michal Kubecek
Headers show
Series [ethtool-next] ethtool: netlink: add support to get/set tx push by ethtool -G/g | expand

Checks

Context Check Description
netdev/tree_selection success Not a local patch

Commit Message

Guangbin Huang April 19, 2022, 12:50 p.m. UTC
From: Jie Wang <wangjie125@huawei.com>

Currently tx push is a standard feature for NICs such as Mellanox, HNS3.
But there is no command to set or get this feature.

So this patch adds support for "ethtool -G <dev> tx-push on|off" and
"ethtool -g <dev>" to set/get tx push mode.

Signed-off-by: Jie Wang <wangjie125@huawei.com>
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
---
 ethtool.8.in                 | 4 ++++
 ethtool.c                    | 1 +
 netlink/rings.c              | 7 +++++++
 uapi/linux/ethtool_netlink.h | 1 +
 4 files changed, 13 insertions(+)

Comments

Michal Kubecek April 19, 2022, 1:07 p.m. UTC | #1
On Tue, Apr 19, 2022 at 08:50:30PM +0800, Guangbin Huang wrote:
> From: Jie Wang <wangjie125@huawei.com>
> 
> Currently tx push is a standard feature for NICs such as Mellanox, HNS3.
> But there is no command to set or get this feature.
> 
> So this patch adds support for "ethtool -G <dev> tx-push on|off" and
> "ethtool -g <dev>" to set/get tx push mode.
> 
> Signed-off-by: Jie Wang <wangjie125@huawei.com>
> Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
> ---
[...]
> diff --git a/uapi/linux/ethtool_netlink.h b/uapi/linux/ethtool_netlink.h
> index d8b19cf98003..79fe0bf686f3 100644
> --- a/uapi/linux/ethtool_netlink.h
> +++ b/uapi/linux/ethtool_netlink.h
> @@ -330,6 +330,7 @@ enum {
>  	ETHTOOL_A_RINGS_RX_JUMBO,			/* u32 */
>  	ETHTOOL_A_RINGS_TX,				/* u32 */
>  	ETHTOOL_A_RINGS_RX_BUF_LEN,                     /* u32 */
> +	ETHTOOL_A_RINGS_TX_PUSH = 13,			/* u8  */
>  
>  	/* add new constants above here */
>  	__ETHTOOL_A_RINGS_CNT,

Please update the uapi headers from sanitized kernel headers as
described here:

  https://www.kernel.org/pub/software/network/ethtool/devel.html

(the paragraph starting "If you need new or updated definitions..." near
the end of the page).

Michal
wangjie (L) April 19, 2022, 1:20 p.m. UTC | #2
On 2022/4/19 21:07, Michal Kubecek wrote:
> On Tue, Apr 19, 2022 at 08:50:30PM +0800, Guangbin Huang wrote:
>> From: Jie Wang <wangjie125@huawei.com>
>>
>> Currently tx push is a standard feature for NICs such as Mellanox, HNS3.
>> But there is no command to set or get this feature.
>>
>> So this patch adds support for "ethtool -G <dev> tx-push on|off" and
>> "ethtool -g <dev>" to set/get tx push mode.
>>
>> Signed-off-by: Jie Wang <wangjie125@huawei.com>
>> Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
>> ---
> [...]
>> diff --git a/uapi/linux/ethtool_netlink.h b/uapi/linux/ethtool_netlink.h
>> index d8b19cf98003..79fe0bf686f3 100644
>> --- a/uapi/linux/ethtool_netlink.h
>> +++ b/uapi/linux/ethtool_netlink.h
>> @@ -330,6 +330,7 @@ enum {
>>  	ETHTOOL_A_RINGS_RX_JUMBO,			/* u32 */
>>  	ETHTOOL_A_RINGS_TX,				/* u32 */
>>  	ETHTOOL_A_RINGS_RX_BUF_LEN,                     /* u32 */
>> +	ETHTOOL_A_RINGS_TX_PUSH = 13,			/* u8  */
>>
>>  	/* add new constants above here */
>>  	__ETHTOOL_A_RINGS_CNT,
>
> Please update the uapi headers from sanitized kernel headers as
> described here:
>
>   https://www.kernel.org/pub/software/network/ethtool/devel.html
>
> (the paragraph starting "If you need new or updated definitions..." near
> the end of the page).
>
> Michal
Thank you for your guidance. I will use the method to update the uapi 
headers in patch v2
>
diff mbox series

Patch

diff --git a/ethtool.8.in b/ethtool.8.in
index 12940e1b32aa..a87f31f90077 100644
--- a/ethtool.8.in
+++ b/ethtool.8.in
@@ -199,6 +199,7 @@  ethtool \- query or control network driver and hardware settings
 .BN rx\-jumbo
 .BN tx
 .BN rx\-buf\-len
+.BN tx\-push
 .HP
 .B ethtool \-i|\-\-driver
 .I devname
@@ -573,6 +574,9 @@  Changes the number of ring entries for the Tx ring.
 .TP
 .BI rx\-buf\-len \ N
 Changes the size of a buffer in the Rx ring.
+.TP
+.BI tx\-push \ on|off
+Specifies whether TX push should be enabled.
 .RE
 .TP
 .B \-i \-\-driver
diff --git a/ethtool.c b/ethtool.c
index 4f5c234304be..4d2a475051a7 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -5733,6 +5733,7 @@  static const struct option args[] = {
 			  "		[ rx-jumbo N ]\n"
 			  "		[ tx N ]\n"
 			  "             [ rx-buf-len N]\n"
+			  "		[ tx-push on|off]\n"
 	},
 	{
 		.opts	= "-k|--show-features|--show-offload",
diff --git a/netlink/rings.c b/netlink/rings.c
index 119178ea336b..a53eed5dbc60 100644
--- a/netlink/rings.c
+++ b/netlink/rings.c
@@ -47,6 +47,7 @@  int rings_reply_cb(const struct nlmsghdr *nlhdr, void *data)
 	show_u32(tb[ETHTOOL_A_RINGS_RX_JUMBO], "RX Jumbo:\t");
 	show_u32(tb[ETHTOOL_A_RINGS_TX], "TX:\t\t");
 	show_u32(tb[ETHTOOL_A_RINGS_RX_BUF_LEN], "RX Buf Len:\t\t");
+	show_bool("tx-push", "TX Push:\t%s\n", tb[ETHTOOL_A_RINGS_TX_PUSH]);
 
 	return MNL_CB_OK;
 }
@@ -105,6 +106,12 @@  static const struct param_parser sring_params[] = {
 		.handler        = nl_parse_direct_u32,
 		.min_argc       = 1,
 	},
+	{
+		.arg            = "tx-push",
+		.type           = ETHTOOL_A_RINGS_TX_PUSH,
+		.handler        = nl_parse_u8bool,
+		.min_argc       = 0,
+	},
 	{}
 };
 
diff --git a/uapi/linux/ethtool_netlink.h b/uapi/linux/ethtool_netlink.h
index d8b19cf98003..79fe0bf686f3 100644
--- a/uapi/linux/ethtool_netlink.h
+++ b/uapi/linux/ethtool_netlink.h
@@ -330,6 +330,7 @@  enum {
 	ETHTOOL_A_RINGS_RX_JUMBO,			/* u32 */
 	ETHTOOL_A_RINGS_TX,				/* u32 */
 	ETHTOOL_A_RINGS_RX_BUF_LEN,                     /* u32 */
+	ETHTOOL_A_RINGS_TX_PUSH = 13,			/* u8  */
 
 	/* add new constants above here */
 	__ETHTOOL_A_RINGS_CNT,