1. 11 1月, 2017 1 次提交
  2. 05 1月, 2017 1 次提交
  3. 18 12月, 2016 1 次提交
  4. 04 12月, 2016 1 次提交
  5. 30 11月, 2016 1 次提交
    • E
      sfc: separate out SFC4000 ("Falcon") support into new sfc-falcon driver · 5a6681e2
      Edward Cree 提交于
      Rationale: The differences between Falcon and Siena are in many ways larger
       than those between Siena and EF10 (despite Siena being nominally "Falcon-
       architecture"); for instance, Falcon has no MCPU, so there is no MCDI.
       Removing Falcon support from the sfc driver should simplify the latter,
       and avoid the possibility of Falcon support being broken by changes to sfc
       (which are rarely if ever tested on Falcon, it being end-of-lifed hardware).
      
      The sfc-falcon driver created in this changeset is essentially a copy of the
       sfc driver, but with Siena- and EF10-specific code, including MCDI, removed
       and with the "efx_" identifier prefix changed to "ef4_" (for "EFX 4000-
       series") to avoid collisions when both drivers are built-in.
      
      This changeset removes Falcon from the sfc driver's PCI ID table; then in
       sfc I've removed obvious Falcon-related code: I removed the Falcon NIC
       functions, Falcon PHY code, and EFX_REV_FALCON_*, then fixed up everything
       that referenced them.
      
      Also, increment minor version of both drivers (to 4.1).
      
      For now, CONFIG_SFC selects CONFIG_SFC_FALCON, so that updating old configs
       doesn't cause Falcon support to disappear; but that should be undone at
       some point in the future.
      Signed-off-by: NEdward Cree <ecree@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5a6681e2
  6. 28 11月, 2016 1 次提交
  7. 19 11月, 2016 2 次提交
    • E
      sfc: remove Software TSO · 46d1efd8
      Edward Cree 提交于
      It gives no advantage over GSO now that xmit_more exists.  If we find
       ourselves unable to handle a TSO skb (because our TXQ doesn't have a
       TSOv2 context and the NIC doesn't support TSOv1), hand it back to GSO.
       Also do that if the TSO handler fails with EINVAL for any other reason.
      As Falcon-architecture NICs don't support any firmware-assisted TSO,
       they no longer advertise TSO feature flags at all.
      Signed-off-by: NEdward Cree <ecree@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      46d1efd8
    • B
      sfc: Firmware-Assisted TSO version 2 · e9117e50
      Bert Kenward 提交于
      Add support for FATSOv2 to the driver. FATSOv2 offloads far more of the task
       of TCP segmentation to the firmware, such that we now just pass a single
       super-packet to the NIC. This means TSO has a great deal in common with a
       normal DMA transmit, apart from adding a couple of option descriptors.
       NIC-specific checks have been moved off the fast path and in to
       initialisation where possible.
      
      This also moves FATSOv1/SWTSO to a new file (tx_tso.c).  The end of transmit
       and some error handling is now outside TSO, since it is common with other
       code.
      Signed-off-by: NEdward Cree <ecree@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e9117e50
  8. 10 11月, 2016 1 次提交
  9. 07 9月, 2016 1 次提交
  10. 27 8月, 2016 1 次提交
  11. 13 8月, 2016 2 次提交
  12. 16 6月, 2016 4 次提交
  13. 01 6月, 2016 1 次提交
  14. 03 12月, 2015 1 次提交
  15. 02 12月, 2015 1 次提交
  16. 03 11月, 2015 1 次提交
  17. 28 10月, 2015 1 次提交
  18. 12 10月, 2015 1 次提交
    • D
      sfc: fully reset if MC_REBOOT event received without warm_boot_count increment · c577e59e
      Daniel Pieczko 提交于
      On EF10, MC_CMD_VPORT_RECONFIGURE can cause a CODE_MC_REBOOT event
      to be sent to a function without incrementing the (adapter-wide)
      warm_boot_count.  In this case, the reboot is not detected by the
      loop on efx_mcdi_poll_reboot(), so prepare for recovery from an MC
      reboot anyway.  When this codepath is run, the MC has always just
      rebooted, so this recovery is valid.
      
      The loop on efx_mcdi_poll_reboot() is still required for other MC
      reboot cases, so that actions in response to an MC reboot are
      performed, such as clearing locally calculated statistics.
      Siena NICs are unaffected by this change as the above scenario
      does not apply.
      Signed-off-by: NShradha Shah <sshah@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c577e59e
  19. 29 8月, 2015 1 次提交
    • S
      sfc: Allow driver to cope with a lower number of VIs than it needs for RSS · b0fbdae1
      Shradha Shah 提交于
      Previously, the driver would refuse to load if it couldn't secure
      enough VIs from the MC to fulfill its RSS requirements.
      This was causing probe to fail on later functions in
      configurations where we'd run out of VIs, such as having many
      VFs.
      
      This change allows the driver to load with fewer VIs, down to a
      minimum of 2. A warning will be printed saying that RSS
      requirements were not met, possibly affecting performance.
      
      efx->max_tx_channels needs to be set to avoid going down the
      failure path in efx_probe_nic() immediately in the loop after the
      probe() NIC-type function.
      Also, Set rc=ENOSPC when bombing out of efx_probe_nic due to lack
      of VIs.
      Signed-off-by: NShradha Shah <sshah@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b0fbdae1
  20. 22 7月, 2015 1 次提交
    • D
      sfc: support cascaded multicast filters · ab8b1f7c
      Daniel Pieczko 提交于
      If the workaround to support cascaded multicast filters ("workaround_26807") is
      enabled, the broadcast filter and individual multicast filters are not inserted
      when in promiscuous or allmulti mode.
      
      There is a race while inserting and removing filters when entering and leaving
      promiscuous mode.  When changing promiscuous state with cascaded multicast
      filters, the old multicast filters are removed before inserting the new filters
      to avoid duplicating packets; this can lead to dropped packets until all
      filters have been inserted.
      
      The efx_nic:mc_promisc flag is added to record the presence of a multicast
      promiscuous filter; this gives a simple way to tell if the promiscuous state is
      changing.
      Signed-off-by: NEdward Cree <ecree@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ab8b1f7c
  21. 09 7月, 2015 1 次提交
    • P
      sfc: Report TX completions to BQL after all TX events in interrupt · c936835c
      Peter Dunning 提交于
      The limit for BQL is updated each time we call
      netdev_tx_completed_queue.
      Without this patch the BQL limit was updated for every TX event we
      see.
      The issue was that this only updated the limit to handle the data
      we complete in two events as the first event wouldn't show that
      enough traffic had been processed between them.
      
      This was OK when interrupt moderation was off but not when it was
      on as more data had to be completed in a single interrupt.
      
      The patch changes this so that we do report the completion to BQL
      only when all the TX events in the interrupt have been processed.
      Signed-off-by: NShradha Shah <sshah@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c936835c
  22. 03 6月, 2015 1 次提交
  23. 22 5月, 2015 5 次提交
    • S
      sfc: set the MAC address using MC_CMD_VADAPTOR_SET_MAC · 910c8789
      Shradha Shah 提交于
      Add a set_mac_address() NIC-type function for EF10 only, and
      use this to set the MAC address on the vadaptor. For Siena and
      earlier, the MAC address continues to be set by MC_CMD_SET_MAC;
      this is still called on EF10, and including a MAC address in
      this command has no effect.
      
      The sriov_mac_address_changed() NIC-type function is no longer
      needed on EF10, but it is needed for Siena where it is used to
      update the peer address of the PF for VFDI.  Change this to use
      the new set_mac_address function pointer.
      
      efx_ef10_sriov_mac_address_changed() is no longer called, as VFs
      will try to change the MAC address on their vadaptor rather than
      trying to change to the context of the PF to alter the vport.
      
      When a VF is running in direct passthrough mode with MAC spoofing
      enabled, it will be able to change the MAC address on its vadaptor.
      In this case, there is a link to the PF, so find the correct VF in
      its ef10_vf array and update the MAC address.
      
      ndo_set_mac_address() can be called during driver unload while
      bonding, and in this case the device has already been stopped, so
      don't call efx_net_open() to restart it after reconfiguration.
      
      efx->port_enabled is set to false in efx_stop_port(), so it is
      indicator of whether the device needs to be restarted.
      Signed-off-by: NShradha Shah <sshah@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      910c8789
    • E
      sfc: add ndo_set_vf_link_state() function for EF10 · 4392dc69
      Edward Cree 提交于
      Exercised with
      "ip link set <PF intf> vf <vf_i> state {auto|enable|disable}"
      Sets the reporting policy for VF link state to either
       - mirror physical link state
       - always up
       - always down
      
      get VF link state mode in efx_ef10_sriov_get_vf_config
      
      Exercised by
      "ip link show <PF intf>";
      output will include a line like
      vf 0 MAC 12:34:56:78:9a:bc, link-state auto
      Signed-off-by: NShradha Shah <sshah@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4392dc69
    • D
      sfc: Enable a VF to get its own MAC address · 0d5e0fbb
      Daniel Pieczko 提交于
      A VF's MAC address is set by its parent PF and added to its vport.
      To get this MAC address, the VF must use MC_CMD_ VPORT_GET_MAC_ADDRESSES.
      In the current scheme, a VF's vport should only have one MAC address,
      so warn if this is not the case.
      Signed-off-by: NShradha Shah <sshah@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0d5e0fbb
    • E
      sfc: protect filter table against use-after-free · 0d322413
      Edward Cree 提交于
      If MCDI timeouts are encountered during efx_ef10_filter_table_remove(),
      an FLR will be queued, but efx->filter_state will still be kfree()d.
      The queued FLR will then call efx_ef10_filter_table_restore(), which
      will try to use efx->filter_state. This previously caused a panic.
      This patch adds an rwsem to protect the existence of efx->filter_state,
      separately from the spinlock protecting its contents.  Users which can
      race against efx_ef10_filter_table_remove() should down_read this rwsem.
      Signed-off-by: NShradha Shah <sshah@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0d322413
    • S
      sfc: save old MAC address in case sriov_mac_address_changed fails · cfc77c2f
      Shradha Shah 提交于
      Otherwise the PF and VF can disagree on the VF's MAC address and
      this leads to strange behaviour, up to and including kernel panics.
      Signed-off-by: NShradha Shah <sshah@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cfc77c2f
  24. 10 5月, 2015 7 次提交
  25. 09 4月, 2015 1 次提交