1. 27 Jan, 2012 7 commits
    • Ben Hutchings's avatar
      sfc: Remove efx_nic_type::push_multicast_hash operation · 30b81cda
      Ben Hutchings authored
      Both implementations of efx_nic_type::reconfigure_mac operation
      push the multicast hash filter to the hardware.  It is therefore
      redundant to call efx_nic_type::push_multicast_hash as well.
      
      efx_mcdi_mac_reconfigure() also uses this operation, but the
      implementation for Siena just uses MCDI anyway.  Merge that into
      efx_mcdi_mac_reconfigure().
      Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
      30b81cda
    • Ben Hutchings's avatar
      sfc: Merge efx_mcdi_mac_check_fault() and efx_mcdi_get_mac_faults() · 1daf4170
      Ben Hutchings authored
      The latter is only called by the former, which is a very short
      wrapper.  Further, gcc 4.5 may currently wrongly warn that the
      'faults' variable may be used uninitialised.
      Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
      1daf4170
    • Ben Hutchings's avatar
      sfc: Merge efx_mac_operations into efx_nic_type · 710b208d
      Ben Hutchings authored
      No NICs need to switch efx_mac_operations at run-time, and the MAC
      operations are fairly closely bound to NIC types.
      
      Move efx_mac_operations::reconfigure to efx_nic_type::reconfigure_mac
      and efx_mac_operations::check_fault fo efx_nic_type::check_mac_fault.
      Change callers to call through efx->type or directly if the NIC type
      is known.
      
      Remove efx_mac_operations::update_stats.  The implementations for
      Falcon used to fetch MAC statistics synchronously and this was used by
      efx_register_netdev() to clear statistics after running self-tests.
      However, it now only converts statistics that have already been
      fetched (and that only for Falcon), and the call from
      efx_register_netdev() has no effect.
      Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
      710b208d
    • Ben Hutchings's avatar
      sfc: Hold efx_nic::stats_lock while reading efx_nic::mac_stats · 1cb34522
      Ben Hutchings authored
      efx_nic::stats_lock is used to serialise stats updates, but each
      reader was dropping it before it finished reading efx_nic::mac_stats.
      
      If there were concurrent stats reads using procfs, or one using procfs
      and one using ethtool, an update could race with a read.  On a 32-bit
      system, the reader could see word-tearing of 64-bit stats (32 bits of
      the old value and 32 bits of the new).
      Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
      1cb34522
    • Ben Hutchings's avatar
      sfc: Use new names for MC shared memory layout constants · 788ec41c
      Ben Hutchings authored
      These are defined alongside the firmware protocol in mcdi_pcol.h.
      Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
      788ec41c
    • Ben Hutchings's avatar
      sfc: Make handling of MC reboot more reliable · 3f713bf4
      Ben Hutchings authored
      When the MC reboots, either as part of a firmware upgrade or due to a
      bug, it attempts to complete (with an error) any requests that were
      outstanding before the reboot.  Since there is an inherent race
      condition in checking this, it will also write to a status word in
      shared memory.
      
      If we look at each of these separately, we may detect each reboot
      twice, resulting in a spurious command failure after a firmware
      upgrade or frustrating recovery from a firmware bug.  Instead, if a
      request completion indicates a reboot, we must poll and clear the
      status word.
      
      This bug was previously masked by use of an incorrect address for the
      status word.  Fix that, using the definition now included in
      mcdi_pcol.h.
      Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
      3f713bf4
    • Ben Hutchings's avatar
      sfc: Remove fallback for invalid permanent MAC address · e332bcb3
      Ben Hutchings authored
      By the time we look at the MAC address in efx_probe_port(), either the
      driver or the firmware has already validated the board configuration.
      The possibility of having an invalid MAC address just isn't worth
      considering.  It certainly isn't worth having a compile-time option
      for this.
      Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
      e332bcb3
  2. 09 Jan, 2012 5 commits
  3. 05 Jan, 2012 3 commits
  4. 04 Jan, 2012 21 commits
  5. 03 Jan, 2012 4 commits