Message ID | 20180323223925.21678-3-saeedm@mellanox.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net-next,01/15] net/mlx5e: Expose PFC stall prevention counters | expand |
On Fri, Mar 23, 2018 at 03:39:12PM -0700, Saeed Mahameed wrote: > From: Inbar Karmy <inbark@mellanox.com> > > In the event where the device unexpectedly becomes unresponsive > for a long period of time, flow control mechanism may propagate > pause frames which will cause congestion spreading to the entire > network. > To prevent this scenario, when the device is stalled for a period > longer than a pre-configured timeout, flow control mechanisms are > automatically disabled. > > This patch adds support for the ETHTOOL_PFC_STALL_PREVENTION > as a tunable. > This API provides support for configuring flow control storm prevention > timeout (msec). > > Signed-off-by: Inbar Karmy <inbark@mellanox.com> > Cc: Michal Kubecek <mkubecek@suse.cz> > Cc: Andrew Lunn <andrew@lunn.ch> > Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> > --- > include/uapi/linux/ethtool.h | 4 ++++ > net/core/ethtool.c | 6 ++++++ > 2 files changed, 10 insertions(+) > > diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h > index 20da156aaf64..9dc63a14a747 100644 > --- a/include/uapi/linux/ethtool.h > +++ b/include/uapi/linux/ethtool.h > @@ -217,10 +217,14 @@ struct ethtool_value { > __u32 data; > }; > > +#define PFC_STORM_PREVENTION_AUTO 0xffff > +#define PFC_STORM_PREVENTION_DISABLE 0 > + > enum tunable_id { > ETHTOOL_ID_UNSPEC, > ETHTOOL_RX_COPYBREAK, > ETHTOOL_TX_COPYBREAK, > + ETHTOOL_PFC_PREVENTION_TOUT, Hi Inbar Please could you add a comment here about the units. Ideally we want this file to be self documenting. Andrew
On 24-Mar-18 17:57, Andrew Lunn wrote: > On Fri, Mar 23, 2018 at 03:39:12PM -0700, Saeed Mahameed wrote: >> From: Inbar Karmy <inbark@mellanox.com> >> >> In the event where the device unexpectedly becomes unresponsive >> for a long period of time, flow control mechanism may propagate >> pause frames which will cause congestion spreading to the entire >> network. >> To prevent this scenario, when the device is stalled for a period >> longer than a pre-configured timeout, flow control mechanisms are >> automatically disabled. >> >> This patch adds support for the ETHTOOL_PFC_STALL_PREVENTION >> as a tunable. >> This API provides support for configuring flow control storm prevention >> timeout (msec). >> >> Signed-off-by: Inbar Karmy <inbark@mellanox.com> >> Cc: Michal Kubecek <mkubecek@suse.cz> >> Cc: Andrew Lunn <andrew@lunn.ch> >> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> >> --- >> include/uapi/linux/ethtool.h | 4 ++++ >> net/core/ethtool.c | 6 ++++++ >> 2 files changed, 10 insertions(+) >> >> diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h >> index 20da156aaf64..9dc63a14a747 100644 >> --- a/include/uapi/linux/ethtool.h >> +++ b/include/uapi/linux/ethtool.h >> @@ -217,10 +217,14 @@ struct ethtool_value { >> __u32 data; >> }; >> >> +#define PFC_STORM_PREVENTION_AUTO 0xffff >> +#define PFC_STORM_PREVENTION_DISABLE 0 >> + >> enum tunable_id { >> ETHTOOL_ID_UNSPEC, >> ETHTOOL_RX_COPYBREAK, >> ETHTOOL_TX_COPYBREAK, >> + ETHTOOL_PFC_PREVENTION_TOUT, > > Hi Inbar > > Please could you add a comment here about the units. Ideally we want > this file to be self documenting. Thank you for the review, we will fix that. > > Andrew >
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h index 20da156aaf64..9dc63a14a747 100644 --- a/include/uapi/linux/ethtool.h +++ b/include/uapi/linux/ethtool.h @@ -217,10 +217,14 @@ struct ethtool_value { __u32 data; }; +#define PFC_STORM_PREVENTION_AUTO 0xffff +#define PFC_STORM_PREVENTION_DISABLE 0 + enum tunable_id { ETHTOOL_ID_UNSPEC, ETHTOOL_RX_COPYBREAK, ETHTOOL_TX_COPYBREAK, + ETHTOOL_PFC_PREVENTION_TOUT, /* * Add your fresh new tubale attribute above and remember to update * tunable_strings[] in net/core/ethtool.c diff --git a/net/core/ethtool.c b/net/core/ethtool.c index 157cd9efa4be..bb6e498c6e3d 100644 --- a/net/core/ethtool.c +++ b/net/core/ethtool.c @@ -121,6 +121,7 @@ tunable_strings[__ETHTOOL_TUNABLE_COUNT][ETH_GSTRING_LEN] = { [ETHTOOL_ID_UNSPEC] = "Unspec", [ETHTOOL_RX_COPYBREAK] = "rx-copybreak", [ETHTOOL_TX_COPYBREAK] = "tx-copybreak", + [ETHTOOL_PFC_PREVENTION_TOUT] = "pfc-prevention-tout", }; static const char @@ -2311,6 +2312,11 @@ static int ethtool_tunable_valid(const struct ethtool_tunable *tuna) tuna->type_id != ETHTOOL_TUNABLE_U32) return -EINVAL; break; + case ETHTOOL_PFC_PREVENTION_TOUT: + if (tuna->len != sizeof(u16) || + tuna->type_id != ETHTOOL_TUNABLE_U16) + return -EINVAL; + break; default: return -EINVAL; }