linux/drivers/net/ethernet/intel/i40e
Jacob Keller 9955d4940e i40e: always return VEB 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 VEB statistics strings to always be
reported. Other issues will be fixed in future patches.

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
..
i40e_adminq_cmd.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_adminq.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_adminq.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_alloc.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_client.c i40e/i40evf: cleanup incorrect function doxygen comments 2018-04-30 09:09:04 -07:00
i40e_client.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_common.c i40e/i40evf: cleanup incorrect function doxygen comments 2018-04-30 09:09:04 -07:00
i40e_dcb_nl.c i40e/i40evf: cleanup incorrect function doxygen comments 2018-04-30 09:09:04 -07:00
i40e_dcb.c i40e: fix reading LLDP configuration 2018-04-30 09:12:33 -07:00
i40e_dcb.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_debugfs.c i40e/i40evf: cleanup incorrect function doxygen comments 2018-04-30 09:09:04 -07:00
i40e_devids.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_diag.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_diag.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_ethtool.c i40e: always return VEB stat strings 2018-05-22 08:37:06 -07:00
i40e_hmc.c i40e/i40evf: cleanup incorrect function doxygen comments 2018-04-30 09:09:04 -07:00
i40e_hmc.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_lan_hmc.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_lan_hmc.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_main.c i40evf: Fix a hardware reset support in VF driver 2018-05-14 07:05:16 -07:00
i40e_nvm.c i40e/i40evf: cleanup incorrect function doxygen comments 2018-04-30 09:09:04 -07:00
i40e_osdep.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_prototype.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_ptp.c i40e: free skb after clearing lock in ptp_stop 2018-05-22 08:37:06 -07:00
i40e_register.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_status.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_trace.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_txrx.c i40e/i40evf: cleanup incorrect function doxygen comments 2018-04-30 09:09:04 -07:00
i40e_txrx.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_type.h i40e: fix reading LLDP configuration 2018-04-30 09:12:33 -07:00
i40e_virtchnl_pf.c i40e/i40evf: take into account queue map from vf when handling queues 2018-04-30 09:32:54 -07:00
i40e_virtchnl_pf.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e.h i40e/i40evf: take into account queue map from vf when handling queues 2018-04-30 09:32:54 -07:00
Makefile net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00