On Fri, Sep 24, 2021 at 10:29:54PM +0800, Guangbin Huang wrote: > From: Hao Chen <chenhao288@xxxxxxxxxxxxx> > > Add support for ethtool to set/get tx copybreak buf size. > > Signed-off-by: Hao Chen <chenhao288@xxxxxxxxxxxxx> > Signed-off-by: Guangbin Huang <huangguangbin2@xxxxxxxxxx> > --- > Documentation/networking/ethtool-netlink.rst | 24 ++++++++++++++++++++ > include/uapi/linux/ethtool.h | 1 + > net/ethtool/common.c | 1 + > net/ethtool/ioctl.c | 1 + > 4 files changed, 27 insertions(+) > > diff --git a/Documentation/networking/ethtool-netlink.rst b/Documentation/networking/ethtool-netlink.rst > index d9b55b7a1a4d..a47b0255aaf9 100644 > --- a/Documentation/networking/ethtool-netlink.rst > +++ b/Documentation/networking/ethtool-netlink.rst > @@ -1521,6 +1521,30 @@ Kernel response contents: > ``ETHTOOL_A_PHC_VCLOCKS_INDEX`` s32 PHC index array > ==================================== ====== ========================== > > +TUNABLE_SET > +=========== > + > +Request contents: > + > + ===================================== ====== ========================== > + ``ETHTOOL_TX_COPYBREAK_BUF_SIZE`` u32 buf size for tx copybreak > + ===================================== ====== ========================== > + > +Tx copybreak buf size is used for tx copybreak feature, the feature is used > +for small size packet or frag. It adds a queue based tx shared bounce buffer > +to memcpy the small packet when the len of xmitted skb is below tx_copybreak > +(value to distinguish small size and normal size), and reduce the overhead > +of dma map and unmap when IOMMU is on. > + > +TUNABLE_GET > +=========== > + > +Kernel response contents: > + > + ==================================== ====== ========================== > + ``ETHTOOL_TX_COPYBREAK_BUF_SIZE`` u32 buf size for tx copybreak > + ==================================== ====== ========================== I have to repeat my concerns expressed in https://lore.kernel.org/netdev/20210826072618.2lu6spapkzdcuhyv@xxxxxxxxxxxxxx and earlier in more details in https://lore.kernel.org/netdev/20200325164958.GZ31519@xxxxxxxxxxxxxxx That being said, I don't understand why this patch adds description of two new message types to the documentation of ethtool netlink API but it does not actually add them to the API. Instead, it adds the new tunable to ioctl API. Michal > + > Request translation > =================== > > diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h > index b6db6590baf0..266e95e4fb33 100644 > --- a/include/uapi/linux/ethtool.h > +++ b/include/uapi/linux/ethtool.h > @@ -231,6 +231,7 @@ enum tunable_id { > ETHTOOL_RX_COPYBREAK, > ETHTOOL_TX_COPYBREAK, > ETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */ > + ETHTOOL_TX_COPYBREAK_BUF_SIZE, > /* > * Add your fresh new tunable attribute above and remember to update > * tunable_strings[] in net/ethtool/common.c > diff --git a/net/ethtool/common.c b/net/ethtool/common.c > index c63e0739dc6a..0c5210015911 100644 > --- a/net/ethtool/common.c > +++ b/net/ethtool/common.c > @@ -89,6 +89,7 @@ tunable_strings[__ETHTOOL_TUNABLE_COUNT][ETH_GSTRING_LEN] = { > [ETHTOOL_RX_COPYBREAK] = "rx-copybreak", > [ETHTOOL_TX_COPYBREAK] = "tx-copybreak", > [ETHTOOL_PFC_PREVENTION_TOUT] = "pfc-prevention-tout", > + [ETHTOOL_TX_COPYBREAK_BUF_SIZE] = "tx-copybreak-buf-size", > }; > > const char > diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c > index 999e2a6bed13..a6600e361c34 100644 > --- a/net/ethtool/ioctl.c > +++ b/net/ethtool/ioctl.c > @@ -2381,6 +2381,7 @@ static int ethtool_tunable_valid(const struct ethtool_tunable *tuna) > switch (tuna->id) { > case ETHTOOL_RX_COPYBREAK: > case ETHTOOL_TX_COPYBREAK: > + case ETHTOOL_TX_COPYBREAK_BUF_SIZE: > if (tuna->len != sizeof(u32) || > tuna->type_id != ETHTOOL_TUNABLE_U32) > return -EINVAL; > -- > 2.33.0 >
Attachment:
signature.asc
Description: PGP signature