| From 16756d3e77ad58cd07e36cbed724aa13ae5a0278 Mon Sep 17 00:00:00 2001 |
| From: Jakub Kicinski <kuba@kernel.org> |
| Date: Tue, 13 Apr 2021 20:46:14 -0700 |
| Subject: ethtool: pause: make sure we init driver stats |
| |
| From: Jakub Kicinski <kuba@kernel.org> |
| |
| commit 16756d3e77ad58cd07e36cbed724aa13ae5a0278 upstream. |
| |
| The intention was for pause statistics to not be reported |
| when driver does not have the relevant callback (only |
| report an empty netlink nest). What happens currently |
| we report all 0s instead. Make sure statistics are |
| initialized to "not set" (which is -1) so the dumping |
| code skips them. |
| |
| Fixes: 9a27a33027f2 ("ethtool: add standard pause stats") |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/ethtool/pause.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| --- a/net/ethtool/pause.c |
| +++ b/net/ethtool/pause.c |
| @@ -38,16 +38,16 @@ static int pause_prepare_data(const stru |
| if (!dev->ethtool_ops->get_pauseparam) |
| return -EOPNOTSUPP; |
| |
| + ethtool_stats_init((u64 *)&data->pausestat, |
| + sizeof(data->pausestat) / 8); |
| + |
| ret = ethnl_ops_begin(dev); |
| if (ret < 0) |
| return ret; |
| dev->ethtool_ops->get_pauseparam(dev, &data->pauseparam); |
| if (req_base->flags & ETHTOOL_FLAG_STATS && |
| - dev->ethtool_ops->get_pause_stats) { |
| - ethtool_stats_init((u64 *)&data->pausestat, |
| - sizeof(data->pausestat) / 8); |
| + dev->ethtool_ops->get_pause_stats) |
| dev->ethtool_ops->get_pause_stats(dev, &data->pausestat); |
| - } |
| ethnl_ops_complete(dev); |
| |
| return 0; |