linux/drivers/net/ethernet/intel
Jacob Keller b831236509 i40e: always return all queue stat strings
The ethtool API for obtaining device statistics is not intended to allow
runtime changes in the number of statistics reported. It may *appear*
this way, as there is an ability to request the number of stats using
ethtool_get_set_count(). However, it is expected that this must always
return the same value for invocations of the same device.

If we don't satisfy this contract, and allow the number of stats to
change during run time, we could cause invalid memory accesses or report
the stat strings incorrectly. This is because the API for obtaining
stats is to (1) get the size, (2) get the strings and finally (3) get
the stats. Since these are each separate ethtool op commands, it is not
possible to maintain consistency by holding the RTNL lock over the whole
operation. This results in the potential for a race condition to occur
where the size changed between any of the 3 calls.

Avoid this issue by requiring that we always return the same value for
a given device. We can check any values which remain constant for the
life of the device, but must not report different sizes depending on
runtime attributes.

This patch specifically fixes the queue statistics to always return
every queue even if it's not currently in use.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2018-05-22 08:37:06 -07:00
..
e1000 net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
e1000e net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
fm10k fm10k: don't protect fm10k_queue_mac_request by fm10k_host_mbx_ready 2018-05-09 09:02:48 -07:00
i40e i40e: always return all queue stat strings 2018-05-22 08:37:06 -07:00
i40evf i40evf: Fix a hardware reset support in VF driver 2018-05-14 07:05:16 -07:00
ice ice: Update NVM AQ command functions 2018-05-17 09:14:09 -07:00
igb net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
igbvf net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgb net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe Revert "ixgbe: release lock for the duration of ixgbe_suspend_close()" 2018-05-20 18:23:07 -04:00
ixgbevf ixgbevf: fix MAC address changes through ixgbevf_set_mac() 2018-05-17 09:07:37 -07:00
e100.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
Kconfig ice: Add basic driver framework for Intel(R) E800 Series 2018-03-26 08:28:02 -07:00
Makefile ice: Add basic driver framework for Intel(R) E800 Series 2018-03-26 08:28:02 -07:00