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 |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
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
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 --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,