ixgbe: improve EEPROM read/write operations
Introduce buffered read/writes which greatly improves performance on parts with large EEPROMs. Previously reading/writing a word requires taking/releasing of synchronization semaphores which adds 10ms to each operation. The optimization is to read/write in buffers, but make sure the semaphore is not held for >500ms according to the datasheet. Since we can't read the EEPROM page size ixgbe_detect_eeprom_page_size() is used to discover the EEPROM size when needed and keeps the result in word_page_size for the rest of the run time. Use buffered reads for ethtool -e. Signed-off-by:Emil Tantilov <emil.s.tantilov@intel.com> Tested-by:
Evan Swanson <evan.swanson@intel.com> Signed-off-by:
Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Showing
- drivers/net/ixgbe/ixgbe_82598.c 1 addition, 0 deletionsdrivers/net/ixgbe/ixgbe_82598.c
- drivers/net/ixgbe/ixgbe_82599.c 35 additions, 0 deletionsdrivers/net/ixgbe/ixgbe_82599.c
- drivers/net/ixgbe/ixgbe_common.c 351 additions, 89 deletionsdrivers/net/ixgbe/ixgbe_common.c
- drivers/net/ixgbe/ixgbe_common.h 8 additions, 0 deletionsdrivers/net/ixgbe/ixgbe_common.h
- drivers/net/ixgbe/ixgbe_ethtool.c 2 additions, 5 deletionsdrivers/net/ixgbe/ixgbe_ethtool.c
- drivers/net/ixgbe/ixgbe_type.h 7 additions, 0 deletionsdrivers/net/ixgbe/ixgbe_type.h
- drivers/net/ixgbe/ixgbe_x540.c 61 additions, 6 deletionsdrivers/net/ixgbe/ixgbe_x540.c
Loading
Please register or sign in to comment