* [net-next 00/15][pull request] Intel Wired LAN Driver updates
@ 2012-02-13 21:47 Jeff Kirsher
2012-02-13 23:48 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2012-02-13 21:47 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
The following series contains updates to e1000e only. All of the
patches are cleanup of the e1000e driver.
The following are changes since commit fafdbf84d7eb2cd7aee435cc381a0796e1a5ccb0:
trivial: typo hnalder -> handler
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Bruce Allan (15):
e1000e: cleanup: use goto for common work needed by multiple exit
points
e1000e: cleanup: rename goto labels to be more meaningful
e1000e: potentially incorrect return for
e1000_cfg_kmrn_10_100_80003es2lan
e1000e: potential incorrect return for
e1000_setup_copper_link_80003es2lan
e1000e: cleanup: remove unnecessary assignments just before returning
e1000e: cleanup: always return 0
e1000e: potentially incorrect return for
e1000_set_d3_lplu_state_ich8lan
e1000e: cleanup: remove unreachable statement
e1000e: cleanup: remove unnecessary variable ret_val
e1000e: cleanup: remove unnecessary test and return
e1000e: cleanup: remove unnecessary variable initializations
e1000e: cleanup: minor whitespace addition (insert blank line
separator)
e1000e: potentially incorrect return for e1000_init_hw_ich8lan
e1000e: potentially incorrect return for
e1000e_setup_fiber_serdes_link
e1000e: cleanup goto statements to exit points without common work
drivers/net/ethernet/intel/e1000e/80003es2lan.c | 36 +---
drivers/net/ethernet/intel/e1000e/82571.c | 36 ++---
drivers/net/ethernet/intel/e1000e/ich8lan.c | 220 +++++++++------------
drivers/net/ethernet/intel/e1000e/mac.c | 25 +--
drivers/net/ethernet/intel/e1000e/manage.c | 32 +--
drivers/net/ethernet/intel/e1000e/netdev.c | 16 +-
drivers/net/ethernet/intel/e1000e/nvm.c | 32 ++--
drivers/net/ethernet/intel/e1000e/phy.c | 241 ++++++++++-------------
8 files changed, 265 insertions(+), 373 deletions(-)
--
1.7.7.6
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver updates
2012-02-13 21:47 [net-next 00/15][pull request] Intel Wired LAN Driver updates Jeff Kirsher
@ 2012-02-13 23:48 ` David Miller
0 siblings, 0 replies; 58+ messages in thread
From: David Miller @ 2012-02-13 23:48 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Mon, 13 Feb 2012 13:47:35 -0800
> The following series contains updates to e1000e only. All of the
> patches are cleanup of the e1000e driver.
>
> The following are changes since commit fafdbf84d7eb2cd7aee435cc381a0796e1a5ccb0:
> trivial: typo hnalder -> handler
> and are available in the git repository at:
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Pulled, thanks.
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2013-01-11 10:23 Jeff Kirsher
0 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-01-11 10:23 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to e1000e only.
The following are changes since commit 1def9238d4aa2146924994aa4b7dc861f03b9362:
net_sched: more precise pkt_len computation
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Bruce Allan (15):
e1000e: SerDes autoneg flow control
e1000e: Acquire/release semaphore when writing each EEPROM page
e1000e: Invalid Image CSUM bit changed for I217
e1000e: helper functions for accessing EMI registers
e1000e: 82577: workaround for link drop issue
e1000e: fix enabling of EEE on 82579 and I217
e1000e: unexpected "Reset adapter" message when cable pulled
e1000e: add missing bailout on error
e1000e: resolve checkpatch PREFER_PR_LEVEL warning
e1000e: cleanup redundant statistics counter
e1000e: cleanup unusual comment placement
e1000e: cleanup unnecessary line wrap
e1000e: cleanup magic number
e1000e: cleanup code duplication
e1000e: merge multiple conditional statements into one
drivers/net/ethernet/intel/e1000e/defines.h | 10 +-
drivers/net/ethernet/intel/e1000e/e1000.h | 2 +-
drivers/net/ethernet/intel/e1000e/ethtool.c | 1 -
drivers/net/ethernet/intel/e1000e/hw.h | 4 +
drivers/net/ethernet/intel/e1000e/ich8lan.c | 213 +++++++++++++++++++++-------
drivers/net/ethernet/intel/e1000e/mac.c | 125 ++++++++++++++++
drivers/net/ethernet/intel/e1000e/netdev.c | 67 ++++-----
drivers/net/ethernet/intel/e1000e/nvm.c | 26 ++--
drivers/net/ethernet/intel/e1000e/param.c | 3 +-
9 files changed, 340 insertions(+), 111 deletions(-)
--
1.7.11.7
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2013-03-08 10:07 Jeff Kirsher
2013-03-08 17:25 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2013-03-08 10:07 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to ixgbevf and e1000e.
Alex's ixgbevf patch is meant to address several race issues that become
possible because next_to_watch could possibly be set to a value that shows
that the descriptor is done when it is not. In order to correct that we
instead make next_to_watch a pointer that is set to NULL during cleanup,
and set to the eop_desc after the descriptor rings have been written.
Stephen's ixgbevf patch makes the PCI id table a const and reformats the
table to match what the ixgbe driver does.
The remaining 13 patches from Bruce are cleanup patches for e1000e to
resolve checkpatch.pl warnings/errors, removing blank lines where
necessary and fix code formatting.
The following are changes since commit 7f0e44ac9f7f12a2519bfed9ea4df3c1471bd8bb:
ipv6 flowlabel: add __rcu annotations
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Alexander Duyck (1):
ixgbevf: Make next_to_watch a pointer and adjust memory barriers to
avoid races
Bruce Allan (13):
e1000e: cleanup CODE_INDENT checkpatch errors
e1000e: cleanup SPACING checkpatch errors and warnings
e1000e: cleanup LONG_LINE checkpatch warnings
e1000e: cleanup LEADING_SPACE checkpatch warnings
e1000e: cleanup PARENTHESIS_ALIGNMENT checkpatch checks
e1000e: cleanup SPACING checkpatch checks
e1000e: cleanup (add/remove) blank lines where appropriate
e1000e: cleanup unusually placed comments
e1000e: cleanup formatting of static structs
e1000e: cleanup unnecessary line breaks
e1000e: cleanup USLEEP_RANGE checkpatch checks
e1000e: cleanup format of struct e1000_opt_list struct
e1000e: cleanup - move defines to appropriate header file
Stephen Hemminger (1):
ixgbevf: use PCI_DEVICE_TABLE macro
drivers/net/ethernet/intel/e1000e/80003es2lan.c | 131 ++++++-----
drivers/net/ethernet/intel/e1000e/82571.c | 38 ++-
drivers/net/ethernet/intel/e1000e/82571.h | 2 +
drivers/net/ethernet/intel/e1000e/defines.h | 25 +-
drivers/net/ethernet/intel/e1000e/e1000.h | 18 +-
drivers/net/ethernet/intel/e1000e/ethtool.c | 177 +++++++-------
drivers/net/ethernet/intel/e1000e/hw.h | 4 +-
drivers/net/ethernet/intel/e1000e/ich8lan.c | 195 ++++++++--------
drivers/net/ethernet/intel/e1000e/mac.c | 10 +-
drivers/net/ethernet/intel/e1000e/netdev.c | 269 ++++++++++------------
drivers/net/ethernet/intel/e1000e/nvm.c | 2 +-
drivers/net/ethernet/intel/e1000e/param.c | 62 +++--
drivers/net/ethernet/intel/e1000e/phy.c | 130 +++++------
drivers/net/ethernet/intel/ixgbevf/ixgbevf.h | 2 +-
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 80 ++++---
15 files changed, 574 insertions(+), 571 deletions(-)
--
1.7.11.7
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2013-03-08 10:07 Jeff Kirsher
@ 2013-03-08 17:25 ` David Miller
0 siblings, 0 replies; 58+ messages in thread
From: David Miller @ 2013-03-08 17:25 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Fri, 8 Mar 2013 02:07:02 -0800
> This series contains updates to ixgbevf and e1000e.
>
> Alex's ixgbevf patch is meant to address several race issues that become
> possible because next_to_watch could possibly be set to a value that shows
> that the descriptor is done when it is not. In order to correct that we
> instead make next_to_watch a pointer that is set to NULL during cleanup,
> and set to the eop_desc after the descriptor rings have been written.
>
> Stephen's ixgbevf patch makes the PCI id table a const and reformats the
> table to match what the ixgbe driver does.
>
> The remaining 13 patches from Bruce are cleanup patches for e1000e to
> resolve checkpatch.pl warnings/errors, removing blank lines where
> necessary and fix code formatting.
>
> The following are changes since commit 7f0e44ac9f7f12a2519bfed9ea4df3c1471bd8bb:
> ipv6 flowlabel: add __rcu annotations
> and are available in the git repository at:
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Pulled, thanks Jeff.
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2013-04-18 23:30 Jeff Kirsher
2013-04-19 18:19 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2013-04-18 23:30 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to ixgbe and igb.
The ixgbe changes contains 2 patches from the community, one which is a
fix from akepner to fix a issue where netif_running() in shutdown was
not done under rtnl_lock. The other community fix from Joe Perches
cleans up #ifdef CONFIG_DEBUG_FS which is no longer necessary. The
last ixgbe patch, from Jacob Keller, adds support for WoL on 82559
SFP+ LOM.
The remaining patches are against igb, 10 of which were previously
submitted in a pull request where changes were requested.
The following igb patches:
igb: Support for 100base-fx SFP
igb: Support to read and export SFF-8472/8079 data
are v2 based on feedback from Dan Carpenter and Ben Hutchings in
the previous pull request.
The largest set of changes are in my patch to cleanup code comments
and whitespace to align the igb driver with the networking style of
code comments. While cleaning up the code comments, fixed several
other whitespace/checkpatch.pl code formatting issues.
Other notable igb patches are EEE capable devices query the PHY to
determine what the link partner is advertising, added support for
i354 devices and added support for spoofchk config.
The following are changes since commit c1cb0d3b569b1d21ada8666efb42dfd437617a09:
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Akeem G. Abodunrin (5):
igb: Support for 100base-fx SFP
igb: Support to read and export SFF-8472/8079 data
igb: Implement support to power sfp cage and turn on I2C
igb: random code and comments fix
igb: Fix sparse warnings on function pointers
Alexander Duyck (3):
igb: Mask off check of frag_off as we only want fragment offset
igb: Pull adapter out of main path in igb_xmit_frame_ring
igb: Use rx/tx_itr_setting when setting up initial value of itr
Carolyn Wyborny (1):
igb: Add support for i354 devices
Jacob Keller (1):
ixgbe: Add support for WoL on 82599 SFP+ LOM
Jeff Kirsher (1):
igb: Fix code comments and whitespace
Joe Perches (1):
ixgbe: Remove unnecessary #ifdef CONFIG_DEBUG_FS tests
Lior Levy (1):
igb: add support for spoofchk config
Matthew Vick (1):
igb: Enable EEE LP advertisement
akepner (1):
ixgbe: in shutdown, do netif_running() under rtnl_lock
drivers/net/ethernet/intel/igb/e1000_82575.c | 252 +++--
drivers/net/ethernet/intel/igb/e1000_82575.h | 2 +
drivers/net/ethernet/intel/igb/e1000_defines.h | 50 +-
drivers/net/ethernet/intel/igb/e1000_hw.h | 57 +-
drivers/net/ethernet/intel/igb/e1000_i210.c | 93 +-
drivers/net/ethernet/intel/igb/e1000_i210.h | 4 +
drivers/net/ethernet/intel/igb/e1000_mac.c | 124 +--
drivers/net/ethernet/intel/igb/e1000_mac.h | 17 +-
drivers/net/ethernet/intel/igb/e1000_mbx.c | 11 +-
drivers/net/ethernet/intel/igb/e1000_mbx.h | 52 +-
drivers/net/ethernet/intel/igb/e1000_nvm.c | 27 +-
drivers/net/ethernet/intel/igb/e1000_phy.c | 259 ++---
drivers/net/ethernet/intel/igb/e1000_regs.h | 53 +-
drivers/net/ethernet/intel/igb/igb.h | 133 +--
drivers/net/ethernet/intel/igb/igb_ethtool.c | 345 +++++--
drivers/net/ethernet/intel/igb/igb_hwmon.c | 29 +-
drivers/net/ethernet/intel/igb/igb_main.c | 1270 +++++++++++++-----------
drivers/net/ethernet/intel/igb/igb_ptp.c | 61 +-
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 5 +
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 15 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 1 +
21 files changed, 1604 insertions(+), 1256 deletions(-)
--
1.7.11.7
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2013-04-18 23:30 Jeff Kirsher
@ 2013-04-19 18:19 ` David Miller
0 siblings, 0 replies; 58+ messages in thread
From: David Miller @ 2013-04-19 18:19 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 18 Apr 2013 16:30:07 -0700
> This series contains updates to ixgbe and igb.
>
> The ixgbe changes contains 2 patches from the community, one which is a
> fix from akepner to fix a issue where netif_running() in shutdown was
> not done under rtnl_lock. The other community fix from Joe Perches
> cleans up #ifdef CONFIG_DEBUG_FS which is no longer necessary. The
> last ixgbe patch, from Jacob Keller, adds support for WoL on 82559
> SFP+ LOM.
>
> The remaining patches are against igb, 10 of which were previously
> submitted in a pull request where changes were requested.
>
> The following igb patches:
> igb: Support for 100base-fx SFP
> igb: Support to read and export SFF-8472/8079 data
> are v2 based on feedback from Dan Carpenter and Ben Hutchings in
> the previous pull request.
>
> The largest set of changes are in my patch to cleanup code comments
> and whitespace to align the igb driver with the networking style of
> code comments. While cleaning up the code comments, fixed several
> other whitespace/checkpatch.pl code formatting issues.
>
> Other notable igb patches are EEE capable devices query the PHY to
> determine what the link partner is advertising, added support for
> i354 devices and added support for spoofchk config.
>
> The following are changes since commit c1cb0d3b569b1d21ada8666efb42dfd437617a09:
> Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
> and are available in the git repository at:
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Pulled, thanks a lot Jeff.
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2013-07-29 12:51 Jeff Kirsher
0 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-07-29 12:51 UTC (permalink / raw)
To: davem, bhelgaas; +Cc: Jeff Kirsher, netdev, gospo, sassmann, linux-pci
This series contains updates to ixgbe and pci.
The first patch for ixgbe from Greg Rose is the second submission. The
first submission of "ixgbe: Retain VLAN filtering in promiscuous + VT
mode" had a typo, which Joe Perches pointed out and is fixed in this
submission.
Alex updates the ixgbe driver to use the generic helper pci_vfs_assigned
instead of the driver specific function ixgbe_vfs_are_assigned.
Don Skidmore provides 4 patches for ixgbe, the first being a fix for
flow control ethtool reporting. Originally ixgbe_device_supports_autoneg_fc()
was expected to be called by only copper devices, which lead to false
information being displayed via ethtool. Two other patches add support
for fixed fiber for SFP+ devices and the addition of a quad-port x520
adapter. The last patch simply bumps the driver version.
Emil Tantilov provides 3 fixes for ixgbe, two of which resolve
semaphore lock issues. The third fix resolves several issues in the
previous implementation of the SFF data dumps of SFP+ modules.
The remaining ixgbe and pci patches are from Jacob Keller. The pci
patches exposes bus speed, link speed and bus width so that drivers
can take advantage of this information. In addition, adds a pci function
which obtains minimum link width and speed. Jacob also provides the
ixgbe patch to incorporate the pci function. He provides a patch that
fixes a lockdep issue created due to ixgbe_ptp_stop always running
cancel_work_sync even if the work item had not been created properly with
INIT_WORK. This issue was found and reported by Stephen Hemminger.
The following are changes since commit fe6f700d6cbb7e8a61711e325f53d9c9e0a42a4c:
net/mlx4_core: Respond to operation request by firmware
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Alexander Duyck (1):
ixgbe: Use pci_vfs_assigned instead of ixgbe_vfs_are_assigned
Don Skidmore (4):
ixgbe: fix fc autoneg ethtool reporting.
ixgbe: add new media type
ixgbe: bump version number
ixgbe: add support for quad-port x520 adapter
Emil Tantilov (3):
ixgbe: fix semaphore lock for I2C read/writes on 82598
ixgbe: fix SFF data dumps of SFP+ modules
ixgbe: clear semaphore bits on timeouts
Greg Rose (1):
ixgbe: Retain VLAN filtering in promiscuous + VT mode
Jacob Keller (6):
pci: expose pcie_link_speed and pcix_bus_speed arrays
pci: move enum pcie_link_width into pci.h
pci: Add function to obtain minimum link width and speed
ixgbe: call pcie_get_mimimum_link to check if device has enough
bandwidth
ixgbe: fix lockdep annotation issue for ptp's work item
ixgbe: rename LL_EXTENDED_STATS to use queue instead of q
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 7 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c | 34 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c | 231 ++++++++++-
drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | 88 +++--
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 94 ++---
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 158 +++++++-
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 470 ++++++++++++++++-------
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.h | 41 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | 12 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 101 +++--
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 12 +
drivers/pci/pci.c | 43 +++
drivers/pci/probe.c | 4 +-
include/linux/pci.h | 18 +
include/linux/pci_hotplug.h | 13 -
15 files changed, 983 insertions(+), 343 deletions(-)
--
1.7.11.7
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2013-08-21 8:23 Jeff Kirsher
0 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-08-21 8:23 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to igb and e1000e.
Akeem provides 3 igb patches, the first resets the link when EEE is enabled
or disabled if the link is up. His second patch changes a register read
which normally stores of the read value to "just-read" so that hardware
can accurately latch the register read. Lastly, he adds rcu_lock to avoid
a possible race condition with igb_update_stats function.
Mitch provides a fix for SR-IOV, where MSI-X interrupts are required, so
make sure that MSI-X is enabled before allowing the user to turn on SR-IOV.
Alex's igb patch make it so that we limit the lower bound for max_frame_size
to the size of a standard Ethernet frame. This allows for feature parity
with other Intel based drivers such as ixgbe.
Carolyn adds a SKU for a flashless i210 device and a fix for get_fw_version()
so that it works for all parts for igb. In addition, she has 2 igb patches
to refactor NVM code to accommodate devices with no flash. Lastly, she
adds code to check for the failure of pci_disable_link_state() to attempt
to work around a problem found with some systems.
Laura provides the remaining 2 igb patches. One removing the hard-coded
value for the size of the RETA indirection table, and creates a macro instead
for the RETA indirection table. The second adds the ethtool callbacks
necessary to change the RETA indirection table from userspace.
Bruce fixes a whitespace issue in a recent commit and resolves a jiffies
comparison warning by using time_after().
Li provides a fix for e1000e to avoid a kernel crash on shutdown by adding
one more check in e1000e_shutdown(). This is due to e1000e_shutdown()
trying to clear correctable errors on the upstream P2P bridge, when under
some cases we do not have the upstream P2P bridge.
The following are changes since commit 84ce22df92f5cf9ecb76d53f4bf5f6d504684540:
net: davinci_mdio: use platform_{get,set}_drvdata()
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Akeem G Abodunrin (3):
igb: Reset the link when EEE setting changed
igb: Read register for latch_on without return value
igb: Added rcu_lock to avoid race
Alexander Duyck (1):
igb: Update MTU so that it is always at least a standard frame size
Bruce Allan (2):
e1000e: cleanup whitespace in recent commit
e1000e: resolve checkpatch JIFFIES_COMPARISON warning
Carolyn Wyborny (5):
igb: Refactor of init_nvm_params
igb: Refactor NVM read functions to accommodate devices with no flash
igb: Add device support for flashless SKU of i210 device
igb: Fix get_fw_version function for all parts
e1000e: Add code to check for failure of pci_disable_link_state call
Laura Mihaela Vasilescu (2):
igb: Add macro for size of RETA indirection table
igb: Expose RSS indirection table for ethtool
Li Zhang (1):
e1000e: Avoid kernel crash during shutdown
Mitch A Williams (1):
igb: don't allow SR-IOV without MSI-X
drivers/net/ethernet/intel/e1000e/ethtool.c | 2 +-
drivers/net/ethernet/intel/e1000e/hw.h | 3 +-
drivers/net/ethernet/intel/e1000e/netdev.c | 92 ++++++++++-----
drivers/net/ethernet/intel/igb/e1000_82575.c | 117 ++++++++-----------
drivers/net/ethernet/intel/igb/e1000_defines.h | 34 ++++--
drivers/net/ethernet/intel/igb/e1000_hw.h | 3 +
drivers/net/ethernet/intel/igb/e1000_i210.c | 155 ++++++++++++++++---------
drivers/net/ethernet/intel/igb/e1000_i210.h | 5 +-
drivers/net/ethernet/intel/igb/e1000_nvm.c | 80 +++++++++----
drivers/net/ethernet/intel/igb/e1000_nvm.h | 1 +
drivers/net/ethernet/intel/igb/igb.h | 5 +
drivers/net/ethernet/intel/igb/igb_ethtool.c | 106 ++++++++++++++++-
drivers/net/ethernet/intel/igb/igb_main.c | 105 ++++++++++-------
drivers/net/ethernet/intel/igb/igb_ptp.c | 8 +-
14 files changed, 476 insertions(+), 240 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2013-12-06 8:06 Jeff Kirsher
2013-12-06 19:49 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-06 8:06 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to i40e only.
Christopher Pau provides a patch to set pf_id based on device and
function numbers since NICs with ARI enabled can have function
numbers larger than 8.
Anjali provides 3 i40e patches to update hardware defines to keep
in sync with hardware updates.
Shannon provides the majority of i40e patches, with 7. First patch
clears the admin queue head and tail registers during admin queue
shutdown. Then simplifies the admin queue head-tail-len setups to
use more virtual registers. Provides several patches to cleanup
and fix driver load and reset procedures to make more robust. Lastly,
provides an ethtool test for interrupts using the software interrupt.
Mitch provides some i40e patches which fixes up VF code in the PF
driver, specifically the number of vectors per VF are reported by the
hardware does not include vector 0, so we need to account for this
when checking. In addition, cleans up debugging messages.
Kamil provides an i40e patch to fix the diagnostics test by restricting
the diagnostic test length.
The following are changes since commit d70f2cf520cf8c86c6b467fc5dcea524ec51dc2f:
macvlan: Support creating macvtaps from macvlans
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Anjali Singhai Jain (3):
i40e: sync header files with hardware
i40e: register file updates
i40e: firmware version fields offsets update
Christopher Pau (1):
i40e: set pf_id based on device and function numbers
Kamil Krawczyk (1):
i40e: restrict diag test length
Mitch Williams (3):
i40e: allow one more vector for VFs
i40e: properly add VF MAC addresses
i40e: fix debugging messages
Shannon Nelson (7):
i40e: clear AQ head and tail registers
i40e: simplify aq head-tail-len setups
i40e: select reset counters correctly
i40e: retry call on timeout
i40e: default debug mask setting
i40e: add interrupt test
i40e: add support for triggering EMPR
drivers/net/ethernet/intel/i40e/i40e.h | 19 +--
drivers/net/ethernet/intel/i40e/i40e_adminq.c | 66 +++++-----
drivers/net/ethernet/intel/i40e/i40e_adminq.h | 1 +
drivers/net/ethernet/intel/i40e/i40e_common.c | 6 +-
drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 4 +
drivers/net/ethernet/intel/i40e/i40e_diag.c | 8 +-
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 10 +-
drivers/net/ethernet/intel/i40e/i40e_lan_hmc.h | 4 +-
drivers/net/ethernet/intel/i40e/i40e_main.c | 37 +++++-
drivers/net/ethernet/intel/i40e/i40e_register.h | 134 +++++++--------------
drivers/net/ethernet/intel/i40e/i40e_type.h | 11 +-
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 8 +-
12 files changed, 155 insertions(+), 153 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2013-12-06 8:06 Jeff Kirsher
@ 2013-12-06 19:49 ` David Miller
0 siblings, 0 replies; 58+ messages in thread
From: David Miller @ 2013-12-06 19:49 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Fri, 6 Dec 2013 00:06:13 -0800
> This series contains updates to i40e only.
>
> Christopher Pau provides a patch to set pf_id based on device and
> function numbers since NICs with ARI enabled can have function
> numbers larger than 8.
>
> Anjali provides 3 i40e patches to update hardware defines to keep
> in sync with hardware updates.
>
> Shannon provides the majority of i40e patches, with 7. First patch
> clears the admin queue head and tail registers during admin queue
> shutdown. Then simplifies the admin queue head-tail-len setups to
> use more virtual registers. Provides several patches to cleanup
> and fix driver load and reset procedures to make more robust. Lastly,
> provides an ethtool test for interrupts using the software interrupt.
>
> Mitch provides some i40e patches which fixes up VF code in the PF
> driver, specifically the number of vectors per VF are reported by the
> hardware does not include vector 0, so we need to account for this
> when checking. In addition, cleans up debugging messages.
>
> Kamil provides an i40e patch to fix the diagnostics test by restricting
> the diagnostic test length.
Pulled, thanks a lot Jeff.
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2013-12-12 12:40 Jeff Kirsher
0 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-12 12:40 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to i40e only (again).
Jesse provides a fix for when tx_rings structure is NULL and we do not want
to panic. Then refactors the flow control set up and disables L2 flow control
by default. Provides some trivial fixes as well as prevent compiler warnings.
Then to align to similar behaviour in ixgbe, use the total number of CPUs in
the system to suggest the number of transmit and receive queue pairs.
Shannon provides a i40e ethtool fix to get some more reasonable information
reports back out to the ethtool. In addition, fixes PF reset after offline
test, where it reorders the test to put the register test last as it is the
only one that needs a reset, and we wait to trigger the reset until after we
clear the testing bit. Lastly provides basic support for handling suspend
and resume for now, later on Wake-On-LAN support will be added.
Elizabeth Kappler adds netdev ops helper function.
Anjali provides changes to tell the stack about our actual number of queues
in order for RFS/RPS/XFS to work correctly. Then provides several patches to
implement dynamically changing the queue count for the main VSI. Adds
basic support for get/set channels for RSS so that the number of receive and
transmit queue pair can be changed via ethtool. Cleans up the use of
rtnl_lock in the reset patch since it runs from a work time.
Neerav Parikh cleans up the VF interface to remove FCoE code as this
feature will not be supported on VF interfaces.
The following are changes since commit c45f812f0280c13f1b7992be5e0de512312a9e8f:
8390 : Replace ei_debug with msg_enable/NETIF_MSG_* feature
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Anjali Singhai Jain (6):
i40e: Tell the stack about our actual number of queues
i40e: reinit flow for the main VSI
i40e: function to reconfigure RSS queues and rebuild
i40e: debugfs command to change RSS queue count
i40e: Add basic support for get/set channels for RSS
i40e: rtnl_lock in reset path fixes
Elizabeth Kappler (1):
i40e: add netdev ops helper function
Jesse Brandeburg (5):
i40e: fix null dereference
i40e: fix up some of the ethtool connection reporting
i40e: init flow control settings to disabled
i40e: trivial fixes
i40e: use same number of queues as CPUs
Neerav Parikh (1):
i40e: Remove FCoE in i40e_virtchnl_pf.c code
Shannon Nelson (2):
i40e: fix pf reset after offline test
i40e: support for suspend and resume
drivers/net/ethernet/intel/i40e/i40e.h | 6 +-
drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 22 +-
drivers/net/ethernet/intel/i40e/i40e_diag.c | 2 +-
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 146 +++++++-
drivers/net/ethernet/intel/i40e/i40e_hmc.c | 2 +-
drivers/net/ethernet/intel/i40e/i40e_main.c | 380 ++++++++++++++++++---
drivers/net/ethernet/intel/i40e/i40e_type.h | 4 +
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 29 +-
8 files changed, 499 insertions(+), 92 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2013-12-19 6:34 Jeff Kirsher
2013-12-19 6:34 ` [net-next 01/15] i40e: Suppress HMC error to Interrupt message level Jeff Kirsher
` (15 more replies)
0 siblings, 16 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to i40e only.
Anjali provides a patch to prevent messages from stray HMC events, except
at interrupt message level, and refactors the HMC error handling.
Catherine adds routines in probe to populate/check PCI bus speed and width,
then verify we are in a 8GT/s x8 PCIe slot and warn when we are not.
Shannon adds Wake-on-LAN support for i40e, fixes curly brace use as well as
return type for i40e_vsi_clear_rings(). Lastly implements the set_settings
and set_pauseparam ethtool functionality.
Joseph implements receive offload for VXLAN for i40e, where the hardware
supports checksum offload/verification of the inner/outer header.
Mitch provides the bulk of the changes, where he refactors the VF reset
code so that it works on real hardware. Then does code cleanup by
calling existing functions to enable and disable queues for VFs and
remove unused functions. Removes a unnecessary log messages that are
seen at every VF reset, for example complaining about disabling queues
that are already disabled. Fixes an error return when the VF asks to
add an invalid MAC address and if the VF sends a bad message, make it
more informative about what is actually going on.
Jesse refactors the LED function to flash LED lights correctly.
The following are changes since commit 020e867c755610fa5a2a08a69707e636cf368b55:
isdn: use strlcpy() instead strcpy()
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Anjali Singhai Jain (1):
i40e: Suppress HMC error to Interrupt message level
Catherine Sullivan (1):
i40e: Populate and check pci bus speed and width
Jesse Brandeburg (1):
i40e: update led set args
Joseph Gasparakis (1):
i40e: Rx checksum offload for VXLAN
Mitch Williams (8):
i40e: move i40e_reset_vf
i40e: refactor VF reset flow
i40e: remove redundant code
i40e: remove chatty log messages
i40e: fix error return
i40e: be more informative
i40e: make a define from a large constant
i40e: report VF MAC addresses correctly
Shannon Nelson (3):
i40e: add wake-on-lan support
i40e: fix curly brace use and return type
i40e: add set settings and pauseparam
drivers/net/ethernet/intel/i40e/i40e.h | 3 +
drivers/net/ethernet/intel/i40e/i40e_common.c | 136 ++++-
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 145 +++++-
drivers/net/ethernet/intel/i40e/i40e_main.c | 105 ++--
drivers/net/ethernet/intel/i40e/i40e_prototype.h | 3 +-
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 56 ++-
drivers/net/ethernet/intel/i40e/i40e_txrx.h | 20 +
drivers/net/ethernet/intel/i40e/i40e_type.h | 61 ++-
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 559 ++++++---------------
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h | 2 +-
10 files changed, 572 insertions(+), 518 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 01/15] i40e: Suppress HMC error to Interrupt message level
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 02/15] i40e: Populate and check pci bus speed and width Jeff Kirsher
` (14 subsequent siblings)
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Anjali Singhai Jain, netdev, gospo, sassmann, Shannon Nelson,
Jesse Brandeburg, Jeff Kirsher
From: Anjali Singhai Jain <anjali.singhai@intel.com>
Prevent messages from stray HMC events, except at interrupt message
level, and refactor HMC error handling.
Change-Id: Iabd203ba1dfc26a136b638597f3e9991acfa29f3
Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_main.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index efdf8a2..f14b31c 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -2814,6 +2814,11 @@ static irqreturn_t i40e_intr(int irq, void *data)
pf->empr_count++;
}
+ if (icr0 & I40E_PFINT_ICR0_HMC_ERR_MASK) {
+ icr0 &= ~I40E_PFINT_ICR0_HMC_ERR_MASK;
+ dev_info(&pf->pdev->dev, "HMC error interrupt\n");
+ }
+
/* If a critical error is pending we have no choice but to reset the
* device.
* Report and mask out any remaining unexpected interrupts.
@@ -2822,18 +2827,13 @@ static irqreturn_t i40e_intr(int irq, void *data)
if (icr0_remaining) {
dev_info(&pf->pdev->dev, "unhandled interrupt icr0=0x%08x\n",
icr0_remaining);
- if ((icr0_remaining & I40E_PFINT_ICR0_HMC_ERR_MASK) ||
- (icr0_remaining & I40E_PFINT_ICR0_PE_CRITERR_MASK) ||
+ if ((icr0_remaining & I40E_PFINT_ICR0_PE_CRITERR_MASK) ||
(icr0_remaining & I40E_PFINT_ICR0_PCI_EXCEPTION_MASK) ||
(icr0_remaining & I40E_PFINT_ICR0_ECC_ERR_MASK) ||
(icr0_remaining & I40E_PFINT_ICR0_MAL_DETECT_MASK)) {
- if (icr0 & I40E_PFINT_ICR0_HMC_ERR_MASK) {
- dev_info(&pf->pdev->dev, "HMC error interrupt\n");
- } else {
- dev_info(&pf->pdev->dev, "device will be reset\n");
- set_bit(__I40E_PF_RESET_REQUESTED, &pf->state);
- i40e_service_event_schedule(pf);
- }
+ dev_info(&pf->pdev->dev, "device will be reset\n");
+ set_bit(__I40E_PF_RESET_REQUESTED, &pf->state);
+ i40e_service_event_schedule(pf);
}
ena_mask &= ~icr0_remaining;
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 02/15] i40e: Populate and check pci bus speed and width
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2013-12-19 6:34 ` [net-next 01/15] i40e: Suppress HMC error to Interrupt message level Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 03/15] i40e: add wake-on-lan support Jeff Kirsher
` (13 subsequent siblings)
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Catherine Sullivan, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Catherine Sullivan <catherine.sullivan@intel.com>
Call i40e_set_pci_config_data from probe, then check that
we are in a 8GT/s x8 PCIe slot and send a warning if we are not.
Change-Id: I62815c574cee50d2787c50bbe956dde7a7a75a11
Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_common.c | 44 ++++++++++++++++++++++++
drivers/net/ethernet/intel/i40e/i40e_main.c | 23 +++++++++++++
drivers/net/ethernet/intel/i40e/i40e_prototype.h | 1 +
drivers/net/ethernet/intel/i40e/i40e_type.h | 9 +++++
4 files changed, 77 insertions(+)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c
index 8b6d56a..cba1eb4 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_common.c
@@ -2029,3 +2029,47 @@ i40e_status i40e_set_filter_control(struct i40e_hw *hw,
return 0;
}
+/**
+ * i40e_set_pci_config_data - store PCI bus info
+ * @hw: pointer to hardware structure
+ * @link_status: the link status word from PCI config space
+ *
+ * Stores the PCI bus info (speed, width, type) within the i40e_hw structure
+ **/
+void i40e_set_pci_config_data(struct i40e_hw *hw, u16 link_status)
+{
+ hw->bus.type = i40e_bus_type_pci_express;
+
+ switch (link_status & PCI_EXP_LNKSTA_NLW) {
+ case I40E_PCI_LINK_WIDTH_1:
+ hw->bus.width = i40e_bus_width_pcie_x1;
+ break;
+ case I40E_PCI_LINK_WIDTH_2:
+ hw->bus.width = i40e_bus_width_pcie_x2;
+ break;
+ case I40E_PCI_LINK_WIDTH_4:
+ hw->bus.width = i40e_bus_width_pcie_x4;
+ break;
+ case I40E_PCI_LINK_WIDTH_8:
+ hw->bus.width = i40e_bus_width_pcie_x8;
+ break;
+ default:
+ hw->bus.width = i40e_bus_width_unknown;
+ break;
+ }
+
+ switch (link_status & PCI_EXP_LNKSTA_CLS) {
+ case I40E_PCI_LINK_SPEED_2500:
+ hw->bus.speed = i40e_bus_speed_2500;
+ break;
+ case I40E_PCI_LINK_SPEED_5000:
+ hw->bus.speed = i40e_bus_speed_5000;
+ break;
+ case I40E_PCI_LINK_SPEED_8000:
+ hw->bus.speed = i40e_bus_speed_8000;
+ break;
+ default:
+ hw->bus.speed = i40e_bus_speed_unknown;
+ break;
+ }
+}
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index f14b31c..22a2c0e 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -7369,6 +7369,7 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
struct i40e_pf *pf;
struct i40e_hw *hw;
static u16 pfs_found;
+ u16 link_status;
int err = 0;
u32 len;
@@ -7603,6 +7604,28 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
mod_timer(&pf->service_timer,
round_jiffies(jiffies + pf->service_timer_period));
+ /* Get the negotiated link width and speed from PCI config space */
+ pcie_capability_read_word(pf->pdev, PCI_EXP_LNKSTA, &link_status);
+
+ i40e_set_pci_config_data(hw, link_status);
+
+ dev_info(&pdev->dev, "PCI Express: %s %s\n",
+ (hw->bus.speed == i40e_bus_speed_8000 ? "Speed 8.0GT/s" :
+ hw->bus.speed == i40e_bus_speed_5000 ? "Speed 5.0GT/s" :
+ hw->bus.speed == i40e_bus_speed_2500 ? "Speed 2.5GT/s" :
+ "Unknown"),
+ (hw->bus.width == i40e_bus_width_pcie_x8 ? "Width x8" :
+ hw->bus.width == i40e_bus_width_pcie_x4 ? "Width x4" :
+ hw->bus.width == i40e_bus_width_pcie_x2 ? "Width x2" :
+ hw->bus.width == i40e_bus_width_pcie_x1 ? "Width x1" :
+ "Unknown"));
+
+ if (hw->bus.width < i40e_bus_width_pcie_x8 ||
+ hw->bus.speed < i40e_bus_speed_8000) {
+ dev_warn(&pdev->dev, "PCI-Express bandwidth available for this device may be insufficient for optimal performance.\n");
+ dev_warn(&pdev->dev, "Please move the device to a different PCI-e link with more lanes and/or higher transfer rate.\n");
+ }
+
return 0;
/* Unwind what we've done if something failed in the setup */
diff --git a/drivers/net/ethernet/intel/i40e/i40e_prototype.h b/drivers/net/ethernet/intel/i40e/i40e_prototype.h
index 2fc9ce5..db7bf93 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_prototype.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_prototype.h
@@ -215,6 +215,7 @@ i40e_status i40e_read_nvm_buffer(struct i40e_hw *hw, u16 offset,
u16 *words, u16 *data);
i40e_status i40e_validate_nvm_checksum(struct i40e_hw *hw,
u16 *checksum);
+void i40e_set_pci_config_data(struct i40e_hw *hw, u16 link_status);
/* prototype for functions used for SW locks */
diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h b/drivers/net/ethernet/intel/i40e/i40e_type.h
index 72a6028..008a7a0 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_type.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_type.h
@@ -116,6 +116,15 @@ enum i40e_debug_mask {
I40E_DEBUG_ALL = 0xFFFFFFFF
};
+/* PCI Bus Info */
+#define I40E_PCI_LINK_WIDTH_1 0x10
+#define I40E_PCI_LINK_WIDTH_2 0x20
+#define I40E_PCI_LINK_WIDTH_4 0x40
+#define I40E_PCI_LINK_WIDTH_8 0x80
+#define I40E_PCI_LINK_SPEED_2500 0x1
+#define I40E_PCI_LINK_SPEED_5000 0x2
+#define I40E_PCI_LINK_SPEED_8000 0x3
+
/* These are structs for managing the hardware information and the operations.
* The structures of function pointers are filled out at init time when we
* know for sure exactly which hardware we're working with. This gives us the
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 03/15] i40e: add wake-on-lan support
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2013-12-19 6:34 ` [net-next 01/15] i40e: Suppress HMC error to Interrupt message level Jeff Kirsher
2013-12-19 6:34 ` [net-next 02/15] i40e: Populate and check pci bus speed and width Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 04/15] i40e: fix curly brace use and return type Jeff Kirsher
` (12 subsequent siblings)
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Shannon Nelson, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Shannon Nelson <shannon.nelson@intel.com>
Wake on LAN is disabled by default and will remain that way for most
platforms, but there is an NVM setting that allows vendors to enable it
for a port if they think they've provided the right power environment
for the device. This patch adds code to check the NVM setting and enable
Magic Packet use if WoL is enabled for the port.
Since only Magic Packet is supported, there's not a lot of HW configuration
needed.
Change-Id: I44e904a7b15695e34683009f487064cd86ea59b0
Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e.h | 1 +
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 42 ++++++++++++++++++++++++--
drivers/net/ethernet/intel/i40e/i40e_main.c | 16 ++++++++--
drivers/net/ethernet/intel/i40e/i40e_type.h | 1 +
4 files changed, 56 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index 40706c1..31dd265 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -205,6 +205,7 @@ struct i40e_pf {
u16 rss_size_max; /* HW defined max RSS queues */
u16 fdir_pf_filter_count; /* num of guaranteed filters for this PF */
u8 atr_sample_rate;
+ bool wol_en;
enum i40e_interrupt_policy int_policy;
u16 rx_itr_default;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index d6681f6..255a138 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -844,8 +844,45 @@ static void i40e_diag_test(struct net_device *netdev,
static void i40e_get_wol(struct net_device *netdev,
struct ethtool_wolinfo *wol)
{
- wol->supported = 0;
- wol->wolopts = 0;
+ struct i40e_netdev_priv *np = netdev_priv(netdev);
+ struct i40e_pf *pf = np->vsi->back;
+ struct i40e_hw *hw = &pf->hw;
+ u16 wol_nvm_bits;
+
+ /* NVM bit on means WoL disabled for the port */
+ i40e_read_nvm_word(hw, I40E_SR_NVM_WAKE_ON_LAN, &wol_nvm_bits);
+ if ((1 << hw->port) & wol_nvm_bits) {
+ wol->supported = 0;
+ wol->wolopts = 0;
+ } else {
+ wol->supported = WAKE_MAGIC;
+ wol->wolopts = (pf->wol_en ? WAKE_MAGIC : 0);
+ }
+}
+
+static int i40e_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
+{
+ struct i40e_netdev_priv *np = netdev_priv(netdev);
+ struct i40e_pf *pf = np->vsi->back;
+ struct i40e_hw *hw = &pf->hw;
+ u16 wol_nvm_bits;
+
+ /* NVM bit on means WoL disabled for the port */
+ i40e_read_nvm_word(hw, I40E_SR_NVM_WAKE_ON_LAN, &wol_nvm_bits);
+ if (((1 << hw->port) & wol_nvm_bits))
+ return -EOPNOTSUPP;
+
+ /* only magic packet is supported */
+ if (wol->wolopts && (wol->wolopts != WAKE_MAGIC))
+ return -EOPNOTSUPP;
+
+ /* is this a new value? */
+ if (pf->wol_en != !!wol->wolopts) {
+ pf->wol_en = !!wol->wolopts;
+ device_set_wakeup_enable(&pf->pdev->dev, pf->wol_en);
+ }
+
+ return 0;
}
static int i40e_nway_reset(struct net_device *netdev)
@@ -1568,6 +1605,7 @@ static const struct ethtool_ops i40e_ethtool_ops = {
.nway_reset = i40e_nway_reset,
.get_link = ethtool_op_get_link,
.get_wol = i40e_get_wol,
+ .set_wol = i40e_set_wol,
.get_eeprom_len = i40e_get_eeprom_len,
.get_eeprom = i40e_get_eeprom,
.get_ringparam = i40e_get_ringparam,
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 22a2c0e..45b2198 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -7537,6 +7537,10 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
pf->flags |= I40E_FLAG_NEED_LINK_UPDATE;
pf->link_check_timeout = jiffies;
+ /* WoL defaults to disabled */
+ pf->wol_en = false;
+ device_set_wakeup_enable(&pf->pdev->dev, pf->wol_en);
+
/* set up the main switch operations */
i40e_determine_queue_usage(pf);
i40e_init_interrupt_scheme(pf);
@@ -7858,6 +7862,7 @@ static void i40e_pci_error_resume(struct pci_dev *pdev)
static void i40e_shutdown(struct pci_dev *pdev)
{
struct i40e_pf *pf = pci_get_drvdata(pdev);
+ struct i40e_hw *hw = &pf->hw;
set_bit(__I40E_SUSPENDED, &pf->state);
set_bit(__I40E_DOWN, &pf->state);
@@ -7865,8 +7870,11 @@ static void i40e_shutdown(struct pci_dev *pdev)
i40e_prep_for_reset(pf);
rtnl_unlock();
+ wr32(hw, I40E_PFPM_APM, (pf->wol_en ? I40E_PFPM_APM_APME_MASK : 0));
+ wr32(hw, I40E_PFPM_WUFC, (pf->wol_en ? I40E_PFPM_WUFC_MAG_MASK : 0));
+
if (system_state == SYSTEM_POWER_OFF) {
- pci_wake_from_d3(pdev, false); /* No WoL support yet */
+ pci_wake_from_d3(pdev, pf->wol_en);
pci_set_power_state(pdev, PCI_D3hot);
}
}
@@ -7879,6 +7887,7 @@ static void i40e_shutdown(struct pci_dev *pdev)
static int i40e_suspend(struct pci_dev *pdev, pm_message_t state)
{
struct i40e_pf *pf = pci_get_drvdata(pdev);
+ struct i40e_hw *hw = &pf->hw;
set_bit(__I40E_SUSPENDED, &pf->state);
set_bit(__I40E_DOWN, &pf->state);
@@ -7886,7 +7895,10 @@ static int i40e_suspend(struct pci_dev *pdev, pm_message_t state)
i40e_prep_for_reset(pf);
rtnl_unlock();
- pci_wake_from_d3(pdev, false); /* No WoL support yet */
+ wr32(hw, I40E_PFPM_APM, (pf->wol_en ? I40E_PFPM_APM_APME_MASK : 0));
+ wr32(hw, I40E_PFPM_WUFC, (pf->wol_en ? I40E_PFPM_WUFC_MAG_MASK : 0));
+
+ pci_wake_from_d3(pdev, pf->wol_en);
pci_set_power_state(pdev, PCI_D3hot);
return 0;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h b/drivers/net/ethernet/intel/i40e/i40e_type.h
index 008a7a0..d683c30 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_type.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_type.h
@@ -1031,6 +1031,7 @@ struct i40e_hw_port_stats {
#define I40E_SR_NVM_CONTROL_WORD 0x00
#define I40E_SR_EMP_MODULE_PTR 0x0F
#define I40E_SR_NVM_IMAGE_VERSION 0x18
+#define I40E_SR_NVM_WAKE_ON_LAN 0x19
#define I40E_SR_ALTERNATE_SAN_MAC_ADDRESS_PTR 0x27
#define I40E_SR_NVM_EETRACK_LO 0x2D
#define I40E_SR_NVM_EETRACK_HI 0x2E
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 04/15] i40e: fix curly brace use and return type
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (2 preceding siblings ...)
2013-12-19 6:34 ` [net-next 03/15] i40e: add wake-on-lan support Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 05/15] i40e: add set settings and pauseparam Jeff Kirsher
` (11 subsequent siblings)
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Shannon Nelson, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Shannon Nelson <shannon.nelson@intel.com>
Add curly-braces on a multi-line function. While we're here we
also change to return void in i40e_vsi_clear_rings() since no
caller cares.
Change-Id: I261fcef20e2a39e18d83ec08fdd14456131dee91
Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_main.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 45b2198..b0cfb4c 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -5300,18 +5300,17 @@ free_vsi:
* i40e_vsi_clear_rings - Deallocates the Rx and Tx rings for the provided VSI
* @vsi: the VSI being cleaned
**/
-static s32 i40e_vsi_clear_rings(struct i40e_vsi *vsi)
+static void i40e_vsi_clear_rings(struct i40e_vsi *vsi)
{
int i;
- if (vsi->tx_rings[0])
+ if (vsi->tx_rings[0]) {
for (i = 0; i < vsi->num_queue_pairs; i++) {
kfree_rcu(vsi->tx_rings[i], rcu);
vsi->tx_rings[i] = NULL;
vsi->rx_rings[i] = NULL;
}
-
- return 0;
+ }
}
/**
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 05/15] i40e: add set settings and pauseparam
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (3 preceding siblings ...)
2013-12-19 6:34 ` [net-next 04/15] i40e: fix curly brace use and return type Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 20:42 ` Ben Hutchings
2013-12-19 6:34 ` [net-next 06/15] i40e: Rx checksum offload for VXLAN Jeff Kirsher
` (10 subsequent siblings)
15 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Shannon Nelson, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Shannon Nelson <shannon.nelson@intel.com>
This implements the set_settings and set_pauseparam ethtool
functionality.
Change-Id: I4634ee2c8bce00204edac7df9f0af4fb7bf33b75
Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 97 ++++++++++++++++++++++++++
1 file changed, 97 insertions(+)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index 255a138..a12dd01 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -261,6 +261,61 @@ static int i40e_get_settings(struct net_device *netdev,
}
/**
+ * i40e_set_settings - Set Speed and Duplex
+ * @netdev: network interface device structure
+ * @ecmd: ethtool command
+ *
+ * Set speed/duplex per media_types advertised/forced
+ **/
+static int i40e_set_settings(struct net_device *netdev,
+ struct ethtool_cmd *ecmd)
+{
+ struct i40e_netdev_priv *np = netdev_priv(netdev);
+ struct i40e_pf *pf = np->vsi->back;
+ struct i40e_vsi *vsi = np->vsi;
+ struct i40e_hw *hw = &pf->hw;
+ u32 old_link, advertised;
+ int err = 0;
+
+ if (vsi != pf->vsi[pf->lan_vsi])
+ return -EOPNOTSUPP;
+
+ while (test_and_set_bit(__I40E_CONFIG_BUSY, &vsi->state))
+ usleep_range(1000, 2000);
+
+ if ((hw->phy.media_type == I40E_MEDIA_TYPE_BASET) ||
+ (hw->phy.media_type == I40E_MEDIA_TYPE_FIBER)) {
+ if (ecmd->autoneg == AUTONEG_DISABLE)
+ goto clear_reset;
+ if (ecmd->advertising & ~ecmd->supported)
+ goto clear_reset;
+ old_link = hw->phy.autoneg_advertised;
+ advertised = 0;
+
+ if (ecmd->advertising & (ADVERTISED_40000baseCR4_Full |
+ ADVERTISED_40000baseKR4_Full |
+ ADVERTISED_40000baseSR4_Full |
+ ADVERTISED_40000baseLR4_Full))
+ advertised |= I40E_LINK_SPEED_40GB;
+ if (ecmd->advertising & (ADVERTISED_10000baseKX4_Full |
+ ADVERTISED_10000baseKR_Full |
+ ADVERTISED_10000baseT_Full))
+ advertised |= I40E_LINK_SPEED_10GB;
+ if (ecmd->advertising & ADVERTISED_1000baseT_Full)
+ advertised |= I40E_LINK_SPEED_1GB;
+ if (old_link == advertised) {
+ err = 0;
+ goto clear_reset;
+ }
+ hw->phy.get_link_info = true;
+ }
+clear_reset:
+ clear_bit(__I40E_CONFIG_BUSY, &vsi->state);
+
+ return err;
+}
+
+/**
* i40e_get_pauseparam - Get Flow Control status
* Return tx/rx-pause status
**/
@@ -286,6 +341,46 @@ static void i40e_get_pauseparam(struct net_device *netdev,
}
}
+/**
+ * i40e_set_pauseparam - Set Flow Control parameter
+ * @netdev: network interface device structure
+ * @pause: return tx/rx flow control status
+ **/
+static int i40e_set_pauseparam(struct net_device *netdev,
+ struct ethtool_pauseparam *pause)
+{
+ struct i40e_netdev_priv *np = netdev_priv(netdev);
+ struct i40e_pf *pf = np->vsi->back;
+ struct i40e_vsi *vsi = np->vsi;
+ struct i40e_hw *hw = &pf->hw;
+ struct i40e_fc_info fc;
+
+ if (vsi != pf->vsi[pf->lan_vsi])
+ return -EOPNOTSUPP;
+
+ fc = hw->fc;
+ pf->fc_autoneg_status = pause->autoneg;
+
+ if ((pause->rx_pause && pause->tx_pause) || pause->autoneg)
+ fc.requested_mode = I40E_FC_FULL;
+ else if (pause->rx_pause && !pause->tx_pause)
+ fc.requested_mode = I40E_FC_RX_PAUSE;
+ else if (!pause->rx_pause && pause->tx_pause)
+ fc.requested_mode = I40E_FC_TX_PAUSE;
+ else if (!pause->rx_pause && !pause->tx_pause)
+ fc.requested_mode = I40E_FC_NONE;
+ else
+ return -EINVAL;
+
+ fc.current_mode = fc.requested_mode;
+
+ /* if the status changed, then we will use updated autoneg*/
+ if (memcmp(&fc, &hw->fc, sizeof(struct i40e_fc_info)))
+ hw->fc = fc;
+
+ return 0;
+}
+
static u32 i40e_get_msglevel(struct net_device *netdev)
{
struct i40e_netdev_priv *np = netdev_priv(netdev);
@@ -1599,6 +1694,7 @@ static int i40e_set_channels(struct net_device *dev,
static const struct ethtool_ops i40e_ethtool_ops = {
.get_settings = i40e_get_settings,
+ .set_settings = i40e_set_settings,
.get_drvinfo = i40e_get_drvinfo,
.get_regs_len = i40e_get_regs_len,
.get_regs = i40e_get_regs,
@@ -1611,6 +1707,7 @@ static const struct ethtool_ops i40e_ethtool_ops = {
.get_ringparam = i40e_get_ringparam,
.set_ringparam = i40e_set_ringparam,
.get_pauseparam = i40e_get_pauseparam,
+ .set_pauseparam = i40e_set_pauseparam,
.get_msglevel = i40e_get_msglevel,
.set_msglevel = i40e_set_msglevel,
.get_rxnfc = i40e_get_rxnfc,
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 06/15] i40e: Rx checksum offload for VXLAN
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (4 preceding siblings ...)
2013-12-19 6:34 ` [net-next 05/15] i40e: add set settings and pauseparam Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 17:46 ` Or Gerlitz
2013-12-19 6:34 ` [net-next 07/15] i40e: move i40e_reset_vf Jeff Kirsher
` (9 subsequent siblings)
15 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Joseph Gasparakis, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Joseph Gasparakis <joseph.gasparakis@intel.com>
This implements receive offload for VXLAN for i40e. The hardware
supports checksum offload/verification of the inner/outer header.
Change-Id: I450db300af6713f2044fef1191a0d1d294c13369
Signed-off-by: Joseph Gasparakis <joseph.gasparakis@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e.h | 1 +
drivers/net/ethernet/intel/i40e/i40e_main.c | 2 ++
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 56 ++++++++++++++++++++++++++---
drivers/net/ethernet/intel/i40e/i40e_type.h | 51 ++++++++++++++------------
4 files changed, 82 insertions(+), 28 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index 31dd265..3207568 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -29,6 +29,7 @@
#define _I40E_H_
#include <net/tcp.h>
+#include <net/udp.h>
#include <linux/init.h>
#include <linux/types.h>
#include <linux/errno.h>
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index b0cfb4c..7094ff7 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -27,6 +27,7 @@
/* Local includes */
#include "i40e.h"
+#include <net/vxlan.h>
const char i40e_driver_name[] = "i40e";
static const char i40e_driver_string[] =
@@ -3993,6 +3994,7 @@ static int i40e_open(struct net_device *netdev)
"couldn't set broadcast err %d aq_err %d\n",
err, pf->hw.aq.asq_last_status);
}
+ vxlan_get_rx_port(netdev);
return 0;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 01d0334..6d36616 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -860,12 +860,25 @@ static void i40e_receive_skb(struct i40e_ring *rx_ring,
* @skb: skb currently being received and modified
* @rx_status: status value of last descriptor in packet
* @rx_error: error value of last descriptor in packet
+ * @rx_ptype: ptype value of last descriptor in packet
**/
static inline void i40e_rx_checksum(struct i40e_vsi *vsi,
struct sk_buff *skb,
u32 rx_status,
- u32 rx_error)
+ u32 rx_error,
+ u16 rx_ptype)
{
+ bool ipv4_tunnel, ipv6_tunnel;
+ __wsum rx_udp_csum;
+ __sum16 csum;
+ struct iphdr *iph;
+
+ ipv4_tunnel = (rx_ptype > I40E_RX_PTYPE_GRENAT4_MAC_PAY3) &&
+ (rx_ptype < I40E_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4);
+ ipv6_tunnel = (rx_ptype > I40E_RX_PTYPE_GRENAT6_MAC_PAY3) &&
+ (rx_ptype < I40E_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4);
+
+ skb->encapsulation = ipv4_tunnel || ipv6_tunnel;
skb->ip_summed = CHECKSUM_NONE;
/* Rx csum enabled and ip headers found? */
@@ -873,13 +886,42 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi,
rx_status & (1 << I40E_RX_DESC_STATUS_L3L4P_SHIFT)))
return;
- /* IP or L4 checksum error */
+ /* IP or L4 or outmost IP checksum error */
if (rx_error & ((1 << I40E_RX_DESC_ERROR_IPE_SHIFT) |
- (1 << I40E_RX_DESC_ERROR_L4E_SHIFT))) {
+ (1 << I40E_RX_DESC_ERROR_L4E_SHIFT) |
+ (1 << I40E_RX_DESC_ERROR_EIPE_SHIFT))) {
vsi->back->hw_csum_rx_error++;
return;
}
+ if (ipv4_tunnel &&
+ !(rx_status & (1 << I40E_RX_DESC_STATUS_UDP_0_SHIFT))) {
+ /* If VXLAN traffic has an outer UDPv4 checksum we need to check
+ * it in the driver, hardware does not do it for us.
+ * Since L3L4P bit was set we assume a valid IHL value (>=5)
+ * so the total length of IPv4 header is IHL*4 bytes
+ */
+ skb->transport_header = skb->mac_header +
+ sizeof(struct ethhdr) +
+ (ip_hdr(skb)->ihl * 4);
+
+ /* Add 4 bytes for VLAN tagged packets */
+ skb->transport_header += (skb->protocol == htons(ETH_P_8021Q) ||
+ skb->protocol == htons(ETH_P_8021AD))
+ ? VLAN_HLEN : 0;
+
+ rx_udp_csum = udp_csum(skb);
+ iph = ip_hdr(skb);
+ csum = csum_tcpudp_magic(iph->saddr, iph->daddr,
+ (skb->len - skb_transport_offset(skb)),
+ IPPROTO_UDP, rx_udp_csum);
+
+ if (udp_hdr(skb)->check != csum) {
+ vsi->back->hw_csum_rx_error++;
+ return;
+ }
+ }
+
skb->ip_summed = CHECKSUM_UNNECESSARY;
}
@@ -920,6 +962,7 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
union i40e_rx_desc *rx_desc;
u32 rx_error, rx_status;
u64 qword;
+ u16 rx_ptype;
rx_desc = I40E_RX_DESC(rx_ring, i);
qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len);
@@ -952,6 +995,8 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
rx_hbo = rx_error & (1 << I40E_RX_DESC_ERROR_HBO_SHIFT);
rx_error &= ~(1 << I40E_RX_DESC_ERROR_HBO_SHIFT);
+ rx_ptype = (qword & I40E_RXD_QW1_PTYPE_MASK) >>
+ I40E_RXD_QW1_PTYPE_SHIFT;
rx_bi->skb = NULL;
/* This memory barrier is needed to keep us from reading
@@ -1032,13 +1077,14 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
}
skb->rxhash = i40e_rx_hash(rx_ring, rx_desc);
- i40e_rx_checksum(vsi, skb, rx_status, rx_error);
-
/* probably a little skewed due to removing CRC */
total_rx_bytes += skb->len;
total_rx_packets++;
skb->protocol = eth_type_trans(skb, rx_ring->netdev);
+
+ i40e_rx_checksum(vsi, skb, rx_status, rx_error, rx_ptype);
+
vlan_tag = rx_status & (1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT)
? le16_to_cpu(rx_desc->wb.qword0.lo_dword.l2tag1)
: 0;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h b/drivers/net/ethernet/intel/i40e/i40e_type.h
index d683c30..41f57d9 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_type.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_type.h
@@ -521,7 +521,8 @@ enum i40e_rx_desc_status_bits {
I40E_RX_DESC_STATUS_UMBCAST_SHIFT = 9, /* 2 BITS */
I40E_RX_DESC_STATUS_FLM_SHIFT = 11,
I40E_RX_DESC_STATUS_FLTSTAT_SHIFT = 12, /* 2 BITS */
- I40E_RX_DESC_STATUS_LPBK_SHIFT = 14
+ I40E_RX_DESC_STATUS_LPBK_SHIFT = 14,
+ I40E_RX_DESC_STATUS_UDP_0_SHIFT = 16
};
#define I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT I40E_RX_DESC_STATUS_TSYNINDX_SHIFT
@@ -567,28 +568,32 @@ enum i40e_rx_desc_error_l3l4e_fcoe_masks {
/* Packet type non-ip values */
enum i40e_rx_l2_ptype {
- I40E_RX_PTYPE_L2_RESERVED = 0,
- I40E_RX_PTYPE_L2_MAC_PAY2 = 1,
- I40E_RX_PTYPE_L2_TIMESYNC_PAY2 = 2,
- I40E_RX_PTYPE_L2_FIP_PAY2 = 3,
- I40E_RX_PTYPE_L2_OUI_PAY2 = 4,
- I40E_RX_PTYPE_L2_MACCNTRL_PAY2 = 5,
- I40E_RX_PTYPE_L2_LLDP_PAY2 = 6,
- I40E_RX_PTYPE_L2_ECP_PAY2 = 7,
- I40E_RX_PTYPE_L2_EVB_PAY2 = 8,
- I40E_RX_PTYPE_L2_QCN_PAY2 = 9,
- I40E_RX_PTYPE_L2_EAPOL_PAY2 = 10,
- I40E_RX_PTYPE_L2_ARP = 11,
- I40E_RX_PTYPE_L2_FCOE_PAY3 = 12,
- I40E_RX_PTYPE_L2_FCOE_FCDATA_PAY3 = 13,
- I40E_RX_PTYPE_L2_FCOE_FCRDY_PAY3 = 14,
- I40E_RX_PTYPE_L2_FCOE_FCRSP_PAY3 = 15,
- I40E_RX_PTYPE_L2_FCOE_FCOTHER_PA = 16,
- I40E_RX_PTYPE_L2_FCOE_VFT_PAY3 = 17,
- I40E_RX_PTYPE_L2_FCOE_VFT_FCDATA = 18,
- I40E_RX_PTYPE_L2_FCOE_VFT_FCRDY = 19,
- I40E_RX_PTYPE_L2_FCOE_VFT_FCRSP = 20,
- I40E_RX_PTYPE_L2_FCOE_VFT_FCOTHER = 21
+ I40E_RX_PTYPE_L2_RESERVED = 0,
+ I40E_RX_PTYPE_L2_MAC_PAY2 = 1,
+ I40E_RX_PTYPE_L2_TIMESYNC_PAY2 = 2,
+ I40E_RX_PTYPE_L2_FIP_PAY2 = 3,
+ I40E_RX_PTYPE_L2_OUI_PAY2 = 4,
+ I40E_RX_PTYPE_L2_MACCNTRL_PAY2 = 5,
+ I40E_RX_PTYPE_L2_LLDP_PAY2 = 6,
+ I40E_RX_PTYPE_L2_ECP_PAY2 = 7,
+ I40E_RX_PTYPE_L2_EVB_PAY2 = 8,
+ I40E_RX_PTYPE_L2_QCN_PAY2 = 9,
+ I40E_RX_PTYPE_L2_EAPOL_PAY2 = 10,
+ I40E_RX_PTYPE_L2_ARP = 11,
+ I40E_RX_PTYPE_L2_FCOE_PAY3 = 12,
+ I40E_RX_PTYPE_L2_FCOE_FCDATA_PAY3 = 13,
+ I40E_RX_PTYPE_L2_FCOE_FCRDY_PAY3 = 14,
+ I40E_RX_PTYPE_L2_FCOE_FCRSP_PAY3 = 15,
+ I40E_RX_PTYPE_L2_FCOE_FCOTHER_PA = 16,
+ I40E_RX_PTYPE_L2_FCOE_VFT_PAY3 = 17,
+ I40E_RX_PTYPE_L2_FCOE_VFT_FCDATA = 18,
+ I40E_RX_PTYPE_L2_FCOE_VFT_FCRDY = 19,
+ I40E_RX_PTYPE_L2_FCOE_VFT_FCRSP = 20,
+ I40E_RX_PTYPE_L2_FCOE_VFT_FCOTHER = 21,
+ I40E_RX_PTYPE_GRENAT4_MAC_PAY3 = 58,
+ I40E_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4 = 87,
+ I40E_RX_PTYPE_GRENAT6_MAC_PAY3 = 124,
+ I40E_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4 = 153
};
struct i40e_rx_ptype_decoded {
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 07/15] i40e: move i40e_reset_vf
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (5 preceding siblings ...)
2013-12-19 6:34 ` [net-next 06/15] i40e: Rx checksum offload for VXLAN Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 08/15] i40e: refactor VF reset flow Jeff Kirsher
` (8 subsequent siblings)
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Mitch Williams, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Mitch Williams <mitch.a.williams@intel.com>
The VF reset code will be refactored in future patches. Part of that
refactor required it to call i40e_alloc_vf_res and i40e_free_vf_res, so
the function must be moved. In order to make the future patches more
readable, we perform the function move here, with no other changes.
Change-Id: If6567c9c0bada6caafb2ee0227e0d9d50d05f27f
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 256 ++++++++++-----------
1 file changed, 128 insertions(+), 128 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index 68e1f8e..fd70dc5 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -549,6 +549,134 @@ error_alloc_vsi_res:
}
/**
+ * i40e_enable_vf_mappings
+ * @vf: pointer to the vf info
+ *
+ * enable vf mappings
+ **/
+static void i40e_enable_vf_mappings(struct i40e_vf *vf)
+{
+ struct i40e_pf *pf = vf->pf;
+ struct i40e_hw *hw = &pf->hw;
+ u32 reg, total_queue_pairs = 0;
+ int j;
+
+ /* Tell the hardware we're using noncontiguous mapping. HW requires
+ * that VF queues be mapped using this method, even when they are
+ * contiguous in real life
+ */
+ wr32(hw, I40E_VSILAN_QBASE(vf->lan_vsi_id),
+ I40E_VSILAN_QBASE_VSIQTABLE_ENA_MASK);
+
+ /* enable VF vplan_qtable mappings */
+ reg = I40E_VPLAN_MAPENA_TXRX_ENA_MASK;
+ wr32(hw, I40E_VPLAN_MAPENA(vf->vf_id), reg);
+
+ /* map PF queues to VF queues */
+ for (j = 0; j < pf->vsi[vf->lan_vsi_index]->num_queue_pairs; j++) {
+ u16 qid = i40e_vc_get_pf_queue_id(vf, vf->lan_vsi_index, j);
+ reg = (qid & I40E_VPLAN_QTABLE_QINDEX_MASK);
+ wr32(hw, I40E_VPLAN_QTABLE(total_queue_pairs, vf->vf_id), reg);
+ total_queue_pairs++;
+ }
+
+ /* map PF queues to VSI */
+ for (j = 0; j < 7; j++) {
+ if (j * 2 >= pf->vsi[vf->lan_vsi_index]->num_queue_pairs) {
+ reg = 0x07FF07FF; /* unused */
+ } else {
+ u16 qid = i40e_vc_get_pf_queue_id(vf, vf->lan_vsi_index,
+ j * 2);
+ reg = qid;
+ qid = i40e_vc_get_pf_queue_id(vf, vf->lan_vsi_index,
+ (j * 2) + 1);
+ reg |= qid << 16;
+ }
+ wr32(hw, I40E_VSILAN_QTABLE(j, vf->lan_vsi_id), reg);
+ }
+
+ i40e_flush(hw);
+}
+
+/**
+ * i40e_disable_vf_mappings
+ * @vf: pointer to the vf info
+ *
+ * disable vf mappings
+ **/
+static void i40e_disable_vf_mappings(struct i40e_vf *vf)
+{
+ struct i40e_pf *pf = vf->pf;
+ struct i40e_hw *hw = &pf->hw;
+ int i;
+
+ /* disable qp mappings */
+ wr32(hw, I40E_VPLAN_MAPENA(vf->vf_id), 0);
+ for (i = 0; i < I40E_MAX_VSI_QP; i++)
+ wr32(hw, I40E_VPLAN_QTABLE(i, vf->vf_id),
+ I40E_QUEUE_END_OF_LIST);
+ i40e_flush(hw);
+}
+
+/**
+ * i40e_free_vf_res
+ * @vf: pointer to the vf info
+ *
+ * free vf resources
+ **/
+static void i40e_free_vf_res(struct i40e_vf *vf)
+{
+ struct i40e_pf *pf = vf->pf;
+
+ /* free vsi & disconnect it from the parent uplink */
+ if (vf->lan_vsi_index) {
+ i40e_vsi_release(pf->vsi[vf->lan_vsi_index]);
+ vf->lan_vsi_index = 0;
+ vf->lan_vsi_id = 0;
+ }
+
+ /* reset some of the state varibles keeping
+ * track of the resources
+ */
+ vf->num_queue_pairs = 0;
+ vf->vf_states = 0;
+}
+
+/**
+ * i40e_alloc_vf_res
+ * @vf: pointer to the vf info
+ *
+ * allocate vf resources
+ **/
+static int i40e_alloc_vf_res(struct i40e_vf *vf)
+{
+ struct i40e_pf *pf = vf->pf;
+ int total_queue_pairs = 0;
+ int ret;
+
+ /* allocate hw vsi context & associated resources */
+ ret = i40e_alloc_vsi_res(vf, I40E_VSI_SRIOV);
+ if (ret)
+ goto error_alloc;
+ total_queue_pairs += pf->vsi[vf->lan_vsi_index]->num_queue_pairs;
+ set_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps);
+
+ /* store the total qps number for the runtime
+ * vf req validation
+ */
+ vf->num_queue_pairs = total_queue_pairs;
+
+ /* vf is now completely initialized */
+ set_bit(I40E_VF_STAT_INIT, &vf->vf_states);
+
+error_alloc:
+ if (ret)
+ i40e_free_vf_res(vf);
+
+ return ret;
+}
+
+/**
* i40e_reset_vf
* @vf: pointer to the vf structure
* @flr: VFLR was issued or not
@@ -679,134 +807,6 @@ int i40e_reset_vf(struct i40e_vf *vf, bool flr)
}
/**
- * i40e_enable_vf_mappings
- * @vf: pointer to the vf info
- *
- * enable vf mappings
- **/
-static void i40e_enable_vf_mappings(struct i40e_vf *vf)
-{
- struct i40e_pf *pf = vf->pf;
- struct i40e_hw *hw = &pf->hw;
- u32 reg, total_queue_pairs = 0;
- int j;
-
- /* Tell the hardware we're using noncontiguous mapping. HW requires
- * that VF queues be mapped using this method, even when they are
- * contiguous in real life
- */
- wr32(hw, I40E_VSILAN_QBASE(vf->lan_vsi_id),
- I40E_VSILAN_QBASE_VSIQTABLE_ENA_MASK);
-
- /* enable VF vplan_qtable mappings */
- reg = I40E_VPLAN_MAPENA_TXRX_ENA_MASK;
- wr32(hw, I40E_VPLAN_MAPENA(vf->vf_id), reg);
-
- /* map PF queues to VF queues */
- for (j = 0; j < pf->vsi[vf->lan_vsi_index]->num_queue_pairs; j++) {
- u16 qid = i40e_vc_get_pf_queue_id(vf, vf->lan_vsi_index, j);
- reg = (qid & I40E_VPLAN_QTABLE_QINDEX_MASK);
- wr32(hw, I40E_VPLAN_QTABLE(total_queue_pairs, vf->vf_id), reg);
- total_queue_pairs++;
- }
-
- /* map PF queues to VSI */
- for (j = 0; j < 7; j++) {
- if (j * 2 >= pf->vsi[vf->lan_vsi_index]->num_queue_pairs) {
- reg = 0x07FF07FF; /* unused */
- } else {
- u16 qid = i40e_vc_get_pf_queue_id(vf, vf->lan_vsi_index,
- j * 2);
- reg = qid;
- qid = i40e_vc_get_pf_queue_id(vf, vf->lan_vsi_index,
- (j * 2) + 1);
- reg |= qid << 16;
- }
- wr32(hw, I40E_VSILAN_QTABLE(j, vf->lan_vsi_id), reg);
- }
-
- i40e_flush(hw);
-}
-
-/**
- * i40e_disable_vf_mappings
- * @vf: pointer to the vf info
- *
- * disable vf mappings
- **/
-static void i40e_disable_vf_mappings(struct i40e_vf *vf)
-{
- struct i40e_pf *pf = vf->pf;
- struct i40e_hw *hw = &pf->hw;
- int i;
-
- /* disable qp mappings */
- wr32(hw, I40E_VPLAN_MAPENA(vf->vf_id), 0);
- for (i = 0; i < I40E_MAX_VSI_QP; i++)
- wr32(hw, I40E_VPLAN_QTABLE(i, vf->vf_id),
- I40E_QUEUE_END_OF_LIST);
- i40e_flush(hw);
-}
-
-/**
- * i40e_free_vf_res
- * @vf: pointer to the vf info
- *
- * free vf resources
- **/
-static void i40e_free_vf_res(struct i40e_vf *vf)
-{
- struct i40e_pf *pf = vf->pf;
-
- /* free vsi & disconnect it from the parent uplink */
- if (vf->lan_vsi_index) {
- i40e_vsi_release(pf->vsi[vf->lan_vsi_index]);
- vf->lan_vsi_index = 0;
- vf->lan_vsi_id = 0;
- }
-
- /* reset some of the state varibles keeping
- * track of the resources
- */
- vf->num_queue_pairs = 0;
- vf->vf_states = 0;
-}
-
-/**
- * i40e_alloc_vf_res
- * @vf: pointer to the vf info
- *
- * allocate vf resources
- **/
-static int i40e_alloc_vf_res(struct i40e_vf *vf)
-{
- struct i40e_pf *pf = vf->pf;
- int total_queue_pairs = 0;
- int ret;
-
- /* allocate hw vsi context & associated resources */
- ret = i40e_alloc_vsi_res(vf, I40E_VSI_SRIOV);
- if (ret)
- goto error_alloc;
- total_queue_pairs += pf->vsi[vf->lan_vsi_index]->num_queue_pairs;
- set_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps);
-
- /* store the total qps number for the runtime
- * vf req validation
- */
- vf->num_queue_pairs = total_queue_pairs;
-
- /* vf is now completely initialized */
- set_bit(I40E_VF_STAT_INIT, &vf->vf_states);
-
-error_alloc:
- if (ret)
- i40e_free_vf_res(vf);
-
- return ret;
-}
-
-/**
* i40e_vfs_are_assigned
* @pf: pointer to the pf structure
*
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 08/15] i40e: refactor VF reset flow
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (6 preceding siblings ...)
2013-12-19 6:34 ` [net-next 07/15] i40e: move i40e_reset_vf Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 09/15] i40e: remove redundant code Jeff Kirsher
` (7 subsequent siblings)
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Mitch Williams, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Mitch Williams <mitch.a.williams@intel.com>
Fix the VF reset flow so that it works on real hardware. After
discussions with the HW team, the reset flow has been changed
somewhat.
- Change the i40e_reset_vf function to a void type, and fix
up the callers to reflect this.
- Move the MSI-X disable code to i40e_free_vf_res since it must
be done every time the VF is freed, regardless of whether or
not it is reset.
- Ensure that the PCIe bus is quiet before polling the reset bit.
- Don't clear the VFGEN_RSTAT1 register at the beginning as it is
cleared by the reset.
- Poll longer for the reset to be done.
- Disable the queues using an existing function rather than
rolling our own.
- Free and reallocate the VSI after reset to avoid rx hang.
Change-Id: I11e2590431cb73e8663714d1cc5b23d59b809033
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e.h | 1 +
drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 202 ++++++++++-----------
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h | 2 +-
4 files changed, 99 insertions(+), 108 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index 3207568..52e6fa7 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -535,6 +535,7 @@ struct i40e_vsi *i40e_vsi_setup(struct i40e_pf *pf, u8 type,
int i40e_vsi_release(struct i40e_vsi *vsi);
struct i40e_vsi *i40e_vsi_lookup(struct i40e_pf *pf, enum i40e_vsi_type type,
struct i40e_vsi *start_vsi);
+int i40e_vsi_control_rings(struct i40e_vsi *vsi, bool enable);
int i40e_reconfig_rss_queues(struct i40e_pf *pf, int queue_count);
struct i40e_veb *i40e_veb_setup(struct i40e_pf *pf, u16 flags, u16 uplink_seid,
u16 downlink_seid, u8 enabled_tc);
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 7094ff7..9d37545 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -3108,7 +3108,7 @@ static int i40e_vsi_control_rx(struct i40e_vsi *vsi, bool enable)
* @vsi: the VSI being configured
* @enable: start or stop the rings
**/
-static int i40e_vsi_control_rings(struct i40e_vsi *vsi, bool request)
+int i40e_vsi_control_rings(struct i40e_vsi *vsi, bool request)
{
int ret;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index fd70dc5..fae955b 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -627,6 +627,9 @@ static void i40e_disable_vf_mappings(struct i40e_vf *vf)
static void i40e_free_vf_res(struct i40e_vf *vf)
{
struct i40e_pf *pf = vf->pf;
+ struct i40e_hw *hw = &pf->hw;
+ u32 reg_idx, reg;
+ int i, msix_vf;
/* free vsi & disconnect it from the parent uplink */
if (vf->lan_vsi_index) {
@@ -634,7 +637,34 @@ static void i40e_free_vf_res(struct i40e_vf *vf)
vf->lan_vsi_index = 0;
vf->lan_vsi_id = 0;
}
+ msix_vf = pf->hw.func_caps.num_msix_vectors_vf + 1;
+ /* disable interrupts so the VF starts in a known state */
+ for (i = 0; i < msix_vf; i++) {
+ /* format is same for both registers */
+ if (0 == i)
+ reg_idx = I40E_VFINT_DYN_CTL0(vf->vf_id);
+ else
+ reg_idx = I40E_VFINT_DYN_CTLN(((msix_vf - 1) *
+ (vf->vf_id))
+ + (i - 1));
+ wr32(hw, reg_idx, I40E_VFINT_DYN_CTLN_CLEARPBA_MASK);
+ i40e_flush(hw);
+ }
+ /* clear the irq settings */
+ for (i = 0; i < msix_vf; i++) {
+ /* format is same for both registers */
+ if (0 == i)
+ reg_idx = I40E_VPINT_LNKLST0(vf->vf_id);
+ else
+ reg_idx = I40E_VPINT_LNKLSTN(((msix_vf - 1) *
+ (vf->vf_id))
+ + (i - 1));
+ reg = (I40E_VPINT_LNKLSTN_FIRSTQ_TYPE_MASK |
+ I40E_VPINT_LNKLSTN_FIRSTQ_INDX_MASK);
+ wr32(hw, reg_idx, reg);
+ i40e_flush(hw);
+ }
/* reset some of the state varibles keeping
* track of the resources
*/
@@ -676,6 +706,36 @@ error_alloc:
return ret;
}
+#define VF_DEVICE_STATUS 0xAA
+#define VF_TRANS_PENDING_MASK 0x20
+/**
+ * i40e_quiesce_vf_pci
+ * @vf: pointer to the vf structure
+ *
+ * Wait for VF PCI transactions to be cleared after reset. Returns -EIO
+ * if the transactions never clear.
+ **/
+static int i40e_quiesce_vf_pci(struct i40e_vf *vf)
+{
+ struct i40e_pf *pf = vf->pf;
+ struct i40e_hw *hw = &pf->hw;
+ int vf_abs_id, i;
+ u32 reg;
+
+ reg = rd32(hw, I40E_PF_VT_PFALLOC);
+ vf_abs_id = vf->vf_id + (reg & I40E_PF_VT_PFALLOC_FIRSTVF_MASK);
+
+ wr32(hw, I40E_PF_PCI_CIAA,
+ VF_DEVICE_STATUS | (vf_abs_id << I40E_PF_PCI_CIAA_VF_NUM_SHIFT));
+ for (i = 0; i < 100; i++) {
+ reg = rd32(hw, I40E_PF_PCI_CIAD);
+ if ((reg & VF_TRANS_PENDING_MASK) == 0)
+ return 0;
+ udelay(1);
+ }
+ return -EIO;
+}
+
/**
* i40e_reset_vf
* @vf: pointer to the vf structure
@@ -683,35 +743,36 @@ error_alloc:
*
* reset the vf
**/
-int i40e_reset_vf(struct i40e_vf *vf, bool flr)
+void i40e_reset_vf(struct i40e_vf *vf, bool flr)
{
- int ret = -ENOENT;
struct i40e_pf *pf = vf->pf;
struct i40e_hw *hw = &pf->hw;
- u32 reg, reg_idx, msix_vf;
bool rsd = false;
- u16 pf_queue_id;
- int i, j;
+ int i;
+ u32 reg;
/* warn the VF */
- wr32(hw, I40E_VFGEN_RSTAT1(vf->vf_id), I40E_VFR_INPROGRESS);
-
clear_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states);
- /* PF triggers VFR only when VF requests, in case of
- * VFLR, HW triggers VFR
+ /* In the case of a VFLR, the HW has already reset the VF and we
+ * just need to clean up, so don't hit the VFRTRIG register.
*/
if (!flr) {
/* reset vf using VPGEN_VFRTRIG reg */
- reg = I40E_VPGEN_VFRTRIG_VFSWR_MASK;
+ reg = rd32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id));
+ reg |= I40E_VPGEN_VFRTRIG_VFSWR_MASK;
wr32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id), reg);
i40e_flush(hw);
}
+ if (i40e_quiesce_vf_pci(vf))
+ dev_err(&pf->pdev->dev, "VF %d PCI transactions stuck\n",
+ vf->vf_id);
+
/* poll VPGEN_VFRSTAT reg to make sure
* that reset is complete
*/
- for (i = 0; i < 4; i++) {
+ for (i = 0; i < 100; i++) {
/* vf reset requires driver to first reset the
* vf & than poll the status register to make sure
* that the requested op was completed
@@ -726,84 +787,29 @@ int i40e_reset_vf(struct i40e_vf *vf, bool flr)
}
if (!rsd)
- dev_err(&pf->pdev->dev, "VF reset check timeout %d\n",
+ dev_err(&pf->pdev->dev, "VF reset check timeout on VF %d\n",
vf->vf_id);
-
- /* fast disable qps */
- for (j = 0; j < pf->vsi[vf->lan_vsi_index]->num_queue_pairs; j++) {
- ret = i40e_ctrl_vsi_tx_queue(vf, vf->lan_vsi_index, j,
- I40E_QUEUE_CTRL_FASTDISABLE);
- ret = i40e_ctrl_vsi_rx_queue(vf, vf->lan_vsi_index, j,
- I40E_QUEUE_CTRL_FASTDISABLE);
- }
-
- /* Queue enable/disable requires driver to
- * first reset the vf & than poll the status register
- * to make sure that the requested op was completed
- * successfully
- */
- udelay(10);
- for (j = 0; j < pf->vsi[vf->lan_vsi_index]->num_queue_pairs; j++) {
- ret = i40e_ctrl_vsi_tx_queue(vf, vf->lan_vsi_index, j,
- I40E_QUEUE_CTRL_FASTDISABLECHECK);
- if (ret)
- dev_info(&pf->pdev->dev,
- "Queue control check failed on Tx queue %d of VSI %d VF %d\n",
- j, vf->lan_vsi_index, vf->vf_id);
- ret = i40e_ctrl_vsi_rx_queue(vf, vf->lan_vsi_index, j,
- I40E_QUEUE_CTRL_FASTDISABLECHECK);
- if (ret)
- dev_info(&pf->pdev->dev,
- "Queue control check failed on Rx queue %d of VSI %d VF %d\n",
- j, vf->lan_vsi_index, vf->vf_id);
- }
-
- /* clear the irq settings */
- msix_vf = pf->hw.func_caps.num_msix_vectors_vf;
- for (i = 0; i < msix_vf; i++) {
- /* format is same for both registers */
- if (0 == i)
- reg_idx = I40E_VPINT_LNKLST0(vf->vf_id);
- else
- reg_idx = I40E_VPINT_LNKLSTN(((msix_vf - 1) *
- (vf->vf_id))
- + (i - 1));
- reg = (I40E_VPINT_LNKLSTN_FIRSTQ_TYPE_MASK |
- I40E_VPINT_LNKLSTN_FIRSTQ_INDX_MASK);
- wr32(hw, reg_idx, reg);
- i40e_flush(hw);
- }
- /* disable interrupts so the VF starts in a known state */
- for (i = 0; i < msix_vf; i++) {
- /* format is same for both registers */
- if (0 == i)
- reg_idx = I40E_VFINT_DYN_CTL0(vf->vf_id);
- else
- reg_idx = I40E_VFINT_DYN_CTLN(((msix_vf - 1) *
- (vf->vf_id))
- + (i - 1));
- wr32(hw, reg_idx, I40E_VFINT_DYN_CTLN_CLEARPBA_MASK);
- i40e_flush(hw);
- }
-
- /* set the defaults for the rqctl & tqctl registers */
- reg = (I40E_QINT_RQCTL_NEXTQ_INDX_MASK | I40E_QINT_RQCTL_ITR_INDX_MASK |
- I40E_QINT_RQCTL_NEXTQ_TYPE_MASK);
- for (j = 0; j < pf->vsi[vf->lan_vsi_index]->num_queue_pairs; j++) {
- pf_queue_id = i40e_vc_get_pf_queue_id(vf, vf->lan_vsi_index, j);
- wr32(hw, I40E_QINT_RQCTL(pf_queue_id), reg);
- wr32(hw, I40E_QINT_TQCTL(pf_queue_id), reg);
- }
-
+ wr32(hw, I40E_VFGEN_RSTAT1(vf->vf_id), I40E_VFR_COMPLETED);
/* clear the reset bit in the VPGEN_VFRTRIG reg */
reg = rd32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id));
reg &= ~I40E_VPGEN_VFRTRIG_VFSWR_MASK;
wr32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id), reg);
+
+ /* On initial reset, we won't have any queues */
+ if (vf->lan_vsi_index == 0)
+ goto complete_reset;
+
+ i40e_vsi_control_rings(pf->vsi[vf->lan_vsi_index], false);
+complete_reset:
+ /* reallocate vf resources to reset the VSI state */
+ i40e_free_vf_res(vf);
+ mdelay(10);
+ i40e_alloc_vf_res(vf);
+ i40e_enable_vf_mappings(vf);
+
/* tell the VF the reset is done */
- wr32(hw, I40E_VFGEN_RSTAT1(vf->vf_id), I40E_VFR_COMPLETED);
+ wr32(hw, I40E_VFGEN_RSTAT1(vf->vf_id), I40E_VFR_VFACTIVE);
i40e_flush(hw);
-
- return ret;
}
/**
@@ -915,11 +921,8 @@ static int i40e_alloc_vfs(struct i40e_pf *pf, u16 num_alloc_vfs)
/* assign default capabilities */
set_bit(I40E_VIRTCHNL_VF_CAP_L2, &vfs[i].vf_caps);
-
- ret = i40e_alloc_vf_res(&vfs[i]);
- i40e_reset_vf(&vfs[i], true);
- if (ret)
- break;
+ /* vf resources get allocated during reset */
+ i40e_reset_vf(&vfs[i], false);
/* enable vf vplan_qtable mappings */
i40e_enable_vf_mappings(&vfs[i]);
@@ -1146,12 +1149,10 @@ err:
* unlike other virtchnl messages, pf driver
* doesn't send the response back to the vf
**/
-static int i40e_vc_reset_vf_msg(struct i40e_vf *vf)
+static void i40e_vc_reset_vf_msg(struct i40e_vf *vf)
{
- if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states))
- return -ENOENT;
-
- return i40e_reset_vf(vf, false);
+ if (test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states))
+ i40e_reset_vf(vf, false);
}
/**
@@ -1919,7 +1920,8 @@ int i40e_vc_process_vf_msg(struct i40e_pf *pf, u16 vf_id, u32 v_opcode,
ret = i40e_vc_get_vf_resources_msg(vf);
break;
case I40E_VIRTCHNL_OP_RESET_VF:
- ret = i40e_vc_reset_vf_msg(vf);
+ i40e_vc_reset_vf_msg(vf);
+ ret = 0;
break;
case I40E_VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE:
ret = i40e_vc_config_promiscuous_mode_msg(vf, msg, msglen);
@@ -1990,19 +1992,7 @@ int i40e_vc_process_vflr_event(struct i40e_pf *pf)
/* clear the bit in GLGEN_VFLRSTAT */
wr32(hw, I40E_GLGEN_VFLRSTAT(reg_idx), (1 << bit_idx));
- if (i40e_reset_vf(vf, true))
- dev_err(&pf->pdev->dev,
- "Unable to reset the VF %d\n", vf_id);
- /* free up vf resources to destroy vsi state */
- i40e_free_vf_res(vf);
-
- /* allocate new vf resources with the default state */
- if (i40e_alloc_vf_res(vf))
- dev_err(&pf->pdev->dev,
- "Unable to allocate VF resources %d\n",
- vf_id);
-
- i40e_enable_vf_mappings(vf);
+ i40e_reset_vf(vf, true);
}
}
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h
index 360382c..d0b712c 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h
@@ -104,7 +104,7 @@ int i40e_pci_sriov_configure(struct pci_dev *dev, int num_vfs);
int i40e_vc_process_vf_msg(struct i40e_pf *pf, u16 vf_id, u32 v_opcode,
u32 v_retval, u8 *msg, u16 msglen);
int i40e_vc_process_vflr_event(struct i40e_pf *pf);
-int i40e_reset_vf(struct i40e_vf *vf, bool flr);
+void i40e_reset_vf(struct i40e_vf *vf, bool flr);
void i40e_vc_notify_vf_reset(struct i40e_vf *vf);
/* vf configuration related iplink handlers */
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 09/15] i40e: remove redundant code
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (7 preceding siblings ...)
2013-12-19 6:34 ` [net-next 08/15] i40e: refactor VF reset flow Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 10/15] i40e: remove chatty log messages Jeff Kirsher
` (6 subsequent siblings)
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Mitch Williams, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Mitch Williams <mitch.a.williams@intel.com>
Don't keep separate functions to enable and disable queues for the VFs.
Just call the existing function that everybody else uses. Remove the
unused functions.
Change-Id: I15db9aad64a59e502bfe1e0fdab9b347ab85c12c
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 249 +--------------------
1 file changed, 4 insertions(+), 245 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index fae955b..ac8f459 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -102,130 +102,6 @@ static u16 i40e_vc_get_pf_queue_id(struct i40e_vf *vf, u8 vsi_idx,
}
/**
- * i40e_ctrl_vsi_tx_queue
- * @vf: pointer to the vf info
- * @vsi_idx: index of VSI in PF struct
- * @vsi_queue_id: vsi relative queue index
- * @ctrl: control flags
- *
- * enable/disable/enable check/disable check
- **/
-static int i40e_ctrl_vsi_tx_queue(struct i40e_vf *vf, u16 vsi_idx,
- u16 vsi_queue_id,
- enum i40e_queue_ctrl ctrl)
-{
- struct i40e_pf *pf = vf->pf;
- struct i40e_hw *hw = &pf->hw;
- bool writeback = false;
- u16 pf_queue_id;
- int ret = 0;
- u32 reg;
-
- pf_queue_id = i40e_vc_get_pf_queue_id(vf, vsi_idx, vsi_queue_id);
- reg = rd32(hw, I40E_QTX_ENA(pf_queue_id));
-
- switch (ctrl) {
- case I40E_QUEUE_CTRL_ENABLE:
- reg |= I40E_QTX_ENA_QENA_REQ_MASK;
- writeback = true;
- break;
- case I40E_QUEUE_CTRL_ENABLECHECK:
- ret = (reg & I40E_QTX_ENA_QENA_STAT_MASK) ? 0 : -EPERM;
- break;
- case I40E_QUEUE_CTRL_DISABLE:
- reg &= ~I40E_QTX_ENA_QENA_REQ_MASK;
- writeback = true;
- break;
- case I40E_QUEUE_CTRL_DISABLECHECK:
- ret = (reg & I40E_QTX_ENA_QENA_STAT_MASK) ? -EPERM : 0;
- break;
- case I40E_QUEUE_CTRL_FASTDISABLE:
- reg |= I40E_QTX_ENA_FAST_QDIS_MASK;
- writeback = true;
- break;
- case I40E_QUEUE_CTRL_FASTDISABLECHECK:
- ret = (reg & I40E_QTX_ENA_QENA_STAT_MASK) ? -EPERM : 0;
- if (!ret) {
- reg &= ~I40E_QTX_ENA_FAST_QDIS_MASK;
- writeback = true;
- }
- break;
- default:
- ret = -EINVAL;
- break;
- }
-
- if (writeback) {
- wr32(hw, I40E_QTX_ENA(pf_queue_id), reg);
- i40e_flush(hw);
- }
-
- return ret;
-}
-
-/**
- * i40e_ctrl_vsi_rx_queue
- * @vf: pointer to the vf info
- * @vsi_idx: index of VSI in PF struct
- * @vsi_queue_id: vsi relative queue index
- * @ctrl: control flags
- *
- * enable/disable/enable check/disable check
- **/
-static int i40e_ctrl_vsi_rx_queue(struct i40e_vf *vf, u16 vsi_idx,
- u16 vsi_queue_id,
- enum i40e_queue_ctrl ctrl)
-{
- struct i40e_pf *pf = vf->pf;
- struct i40e_hw *hw = &pf->hw;
- bool writeback = false;
- u16 pf_queue_id;
- int ret = 0;
- u32 reg;
-
- pf_queue_id = i40e_vc_get_pf_queue_id(vf, vsi_idx, vsi_queue_id);
- reg = rd32(hw, I40E_QRX_ENA(pf_queue_id));
-
- switch (ctrl) {
- case I40E_QUEUE_CTRL_ENABLE:
- reg |= I40E_QRX_ENA_QENA_REQ_MASK;
- writeback = true;
- break;
- case I40E_QUEUE_CTRL_ENABLECHECK:
- ret = (reg & I40E_QRX_ENA_QENA_STAT_MASK) ? 0 : -EPERM;
- break;
- case I40E_QUEUE_CTRL_DISABLE:
- reg &= ~I40E_QRX_ENA_QENA_REQ_MASK;
- writeback = true;
- break;
- case I40E_QUEUE_CTRL_DISABLECHECK:
- ret = (reg & I40E_QRX_ENA_QENA_STAT_MASK) ? -EPERM : 0;
- break;
- case I40E_QUEUE_CTRL_FASTDISABLE:
- reg |= I40E_QRX_ENA_FAST_QDIS_MASK;
- writeback = true;
- break;
- case I40E_QUEUE_CTRL_FASTDISABLECHECK:
- ret = (reg & I40E_QRX_ENA_QENA_STAT_MASK) ? -EPERM : 0;
- if (!ret) {
- reg &= ~I40E_QRX_ENA_FAST_QDIS_MASK;
- writeback = true;
- }
- break;
- default:
- ret = -EINVAL;
- break;
- }
-
- if (writeback) {
- wr32(hw, I40E_QRX_ENA(pf_queue_id), reg);
- i40e_flush(hw);
- }
-
- return ret;
-}
-
-/**
* i40e_config_irq_link_list
* @vf: pointer to the vf info
* @vsi_idx: index of VSI in PF struct
@@ -1340,8 +1216,6 @@ static int i40e_vc_enable_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
struct i40e_pf *pf = vf->pf;
u16 vsi_id = vqs->vsi_id;
i40e_status aq_ret = 0;
- unsigned long tempmap;
- u16 queue_id;
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states)) {
aq_ret = I40E_ERR_PARAM;
@@ -1358,65 +1232,8 @@ static int i40e_vc_enable_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
goto error_param;
}
- tempmap = vqs->rx_queues;
- queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP);
- while (queue_id < I40E_MAX_VSI_QP) {
- if (!i40e_vc_isvalid_queue_id(vf, vsi_id, queue_id)) {
- aq_ret = I40E_ERR_PARAM;
- goto error_param;
- }
- i40e_ctrl_vsi_rx_queue(vf, vsi_id, queue_id,
- I40E_QUEUE_CTRL_ENABLE);
-
- queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP,
- queue_id + 1);
- }
-
- tempmap = vqs->tx_queues;
- queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP);
- while (queue_id < I40E_MAX_VSI_QP) {
- if (!i40e_vc_isvalid_queue_id(vf, vsi_id, queue_id)) {
- aq_ret = I40E_ERR_PARAM;
- goto error_param;
- }
- i40e_ctrl_vsi_tx_queue(vf, vsi_id, queue_id,
- I40E_QUEUE_CTRL_ENABLE);
-
- queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP,
- queue_id + 1);
- }
-
- /* Poll the status register to make sure that the
- * requested op was completed successfully
- */
- udelay(10);
-
- tempmap = vqs->rx_queues;
- queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP);
- while (queue_id < I40E_MAX_VSI_QP) {
- if (i40e_ctrl_vsi_rx_queue(vf, vsi_id, queue_id,
- I40E_QUEUE_CTRL_ENABLECHECK)) {
- dev_err(&pf->pdev->dev,
- "Queue control check failed on RX queue %d of VSI %d VF %d\n",
- queue_id, vsi_id, vf->vf_id);
- }
- queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP,
- queue_id + 1);
- }
-
- tempmap = vqs->tx_queues;
- queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP);
- while (queue_id < I40E_MAX_VSI_QP) {
- if (i40e_ctrl_vsi_tx_queue(vf, vsi_id, queue_id,
- I40E_QUEUE_CTRL_ENABLECHECK)) {
- dev_err(&pf->pdev->dev,
- "Queue control check failed on TX queue %d of VSI %d VF %d\n",
- queue_id, vsi_id, vf->vf_id);
- }
- queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP,
- queue_id + 1);
- }
-
+ if (i40e_vsi_control_rings(pf->vsi[vsi_id], true))
+ aq_ret = I40E_ERR_TIMEOUT;
error_param:
/* send the response to the vf */
return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_ENABLE_QUEUES,
@@ -1439,8 +1256,6 @@ static int i40e_vc_disable_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
struct i40e_pf *pf = vf->pf;
u16 vsi_id = vqs->vsi_id;
i40e_status aq_ret = 0;
- unsigned long tempmap;
- u16 queue_id;
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states)) {
aq_ret = I40E_ERR_PARAM;
@@ -1457,64 +1272,8 @@ static int i40e_vc_disable_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
goto error_param;
}
- tempmap = vqs->rx_queues;
- queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP);
- while (queue_id < I40E_MAX_VSI_QP) {
- if (!i40e_vc_isvalid_queue_id(vf, vsi_id, queue_id)) {
- aq_ret = I40E_ERR_PARAM;
- goto error_param;
- }
- i40e_ctrl_vsi_rx_queue(vf, vsi_id, queue_id,
- I40E_QUEUE_CTRL_DISABLE);
-
- queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP,
- queue_id + 1);
- }
-
- tempmap = vqs->tx_queues;
- queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP);
- while (queue_id < I40E_MAX_VSI_QP) {
- if (!i40e_vc_isvalid_queue_id(vf, vsi_id, queue_id)) {
- aq_ret = I40E_ERR_PARAM;
- goto error_param;
- }
- i40e_ctrl_vsi_tx_queue(vf, vsi_id, queue_id,
- I40E_QUEUE_CTRL_DISABLE);
-
- queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP,
- queue_id + 1);
- }
-
- /* Poll the status register to make sure that the
- * requested op was completed successfully
- */
- udelay(10);
-
- tempmap = vqs->rx_queues;
- queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP);
- while (queue_id < I40E_MAX_VSI_QP) {
- if (i40e_ctrl_vsi_rx_queue(vf, vsi_id, queue_id,
- I40E_QUEUE_CTRL_DISABLECHECK)) {
- dev_err(&pf->pdev->dev,
- "Queue control check failed on RX queue %d of VSI %d VF %d\n",
- queue_id, vsi_id, vf->vf_id);
- }
- queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP,
- queue_id + 1);
- }
-
- tempmap = vqs->tx_queues;
- queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP);
- while (queue_id < I40E_MAX_VSI_QP) {
- if (i40e_ctrl_vsi_tx_queue(vf, vsi_id, queue_id,
- I40E_QUEUE_CTRL_DISABLECHECK)) {
- dev_err(&pf->pdev->dev,
- "Queue control check failed on TX queue %d of VSI %d VF %d\n",
- queue_id, vsi_id, vf->vf_id);
- }
- queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP,
- queue_id + 1);
- }
+ if (i40e_vsi_control_rings(pf->vsi[vsi_id], false))
+ aq_ret = I40E_ERR_TIMEOUT;
error_param:
/* send the response to the vf */
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 10/15] i40e: remove chatty log messages
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (8 preceding siblings ...)
2013-12-19 6:34 ` [net-next 09/15] i40e: remove redundant code Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 11/15] i40e: fix error return Jeff Kirsher
` (5 subsequent siblings)
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Mitch Williams, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Mitch Williams <mitch.a.williams@intel.com>
Don't complain when we disable queues that are already disable, or
enable them when they're already enabled. This removes a bunch of bogus
log messages that we see at every VF reset.
Change-Id: Ia127be572abdccc48a53d8c43f8a07b8bb920de1
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_main.c | 16 +++-------------
1 file changed, 3 insertions(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 9d37545..0ea1ca4 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -2988,21 +2988,11 @@ static int i40e_vsi_control_tx(struct i40e_vsi *vsi, bool enable)
} while (j-- && ((tx_reg >> I40E_QTX_ENA_QENA_REQ_SHIFT)
^ (tx_reg >> I40E_QTX_ENA_QENA_STAT_SHIFT)) & 1);
- if (enable) {
- /* is STAT set ? */
- if ((tx_reg & I40E_QTX_ENA_QENA_STAT_MASK)) {
- dev_info(&pf->pdev->dev,
- "Tx %d already enabled\n", i);
+ /* Skip if the queue is already in the requested state */
+ if (enable && (tx_reg & I40E_QTX_ENA_QENA_STAT_MASK))
continue;
- }
- } else {
- /* is !STAT set ? */
- if (!(tx_reg & I40E_QTX_ENA_QENA_STAT_MASK)) {
- dev_info(&pf->pdev->dev,
- "Tx %d already disabled\n", i);
+ if (!enable && !(tx_reg & I40E_QTX_ENA_QENA_STAT_MASK))
continue;
- }
- }
/* turn on/off the queue */
if (enable)
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 11/15] i40e: fix error return
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (9 preceding siblings ...)
2013-12-19 6:34 ` [net-next 10/15] i40e: remove chatty log messages Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 12/15] i40e: be more informative Jeff Kirsher
` (4 subsequent siblings)
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Mitch Williams, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Mitch Williams <mitch.a.williams@intel.com>
If the VF asks to add an invalid MAC address, tell it that instead of
just using a generic return code.
Change-Id: I366aff5449fa5874ad51e2734cac2a71783ab14b
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index ac8f459..4cd6c8c 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -1354,7 +1354,7 @@ static int i40e_vc_add_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
is_zero_ether_addr(al->list[i].addr)) {
dev_err(&pf->pdev->dev, "invalid VF MAC addr %pMAC\n",
al->list[i].addr);
- aq_ret = I40E_ERR_PARAM;
+ aq_ret = I40E_ERR_INVALID_MAC_ADDR;
goto error_param;
}
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 12/15] i40e: be more informative
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (10 preceding siblings ...)
2013-12-19 6:34 ` [net-next 11/15] i40e: fix error return Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 13/15] i40e: make a define from a large constant Jeff Kirsher
` (3 subsequent siblings)
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Mitch Williams, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Mitch Williams <mitch.a.williams@intel.com>
If the VF sends a bad message, be more informative about what it
actually is.
Change-Id: I89e06d2db416a1d05aeea016dd6e8b7870cae99a
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index 4cd6c8c..cc8fa2a 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -1667,7 +1667,8 @@ int i40e_vc_process_vf_msg(struct i40e_pf *pf, u16 vf_id, u32 v_opcode,
ret = i40e_vc_validate_vf_msg(vf, v_opcode, v_retval, msg, msglen);
if (ret) {
- dev_err(&pf->pdev->dev, "invalid message from vf %d\n", vf_id);
+ dev_err(&pf->pdev->dev, "Invalid message from vf %d, opcode %d, len %d\n",
+ vf_id, v_opcode, msglen);
return ret;
}
wr32(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_VFACTIVE);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 13/15] i40e: make a define from a large constant
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (11 preceding siblings ...)
2013-12-19 6:34 ` [net-next 12/15] i40e: be more informative Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 14/15] i40e: update led set args Jeff Kirsher
` (2 subsequent siblings)
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Mitch Williams, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Mitch Williams <mitch.a.williams@intel.com>
Make a define used in the header file by both VF and PF drivers.
Change-Id: Ie9e35adcc021cd6a8f7513934984eb4ed55774f5
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_main.c | 21 +--------------------
drivers/net/ethernet/intel/i40e/i40e_txrx.h | 20 ++++++++++++++++++++
2 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 0ea1ca4..ae9956d 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -5650,25 +5650,6 @@ static int i40e_setup_misc_vector(struct i40e_pf *pf)
**/
static int i40e_config_rss(struct i40e_pf *pf)
{
- const u64 default_hena =
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_UDP) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_SCTP) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_TCP) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_OTHER) |
- ((u64)1 << I40E_FILTER_PCTYPE_FRAG_IPV4) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_UDP) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_TCP) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_SCTP) |
- ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_OTHER) |
- ((u64)1 << I40E_FILTER_PCTYPE_FRAG_IPV6) |
- ((u64)1 << I40E_FILTER_PCTYPE_L2_PAYLOAD);
-
/* Set of random keys generated using kernel random number generator */
static const u32 seed[I40E_PFQF_HKEY_MAX_INDEX + 1] = {0x41b01687,
0x183cfd8c, 0xce880440, 0x580cbc3c, 0x35897377,
@@ -5686,7 +5667,7 @@ static int i40e_config_rss(struct i40e_pf *pf)
/* By default we enable TCP/UDP with IPv4/IPv6 ptypes */
hena = (u64)rd32(hw, I40E_PFQF_HENA(0)) |
((u64)rd32(hw, I40E_PFQF_HENA(1)) << 32);
- hena |= default_hena;
+ hena |= I40E_DEFAULT_RSS_HENA;
wr32(hw, I40E_PFQF_HENA(0), (u32)hena);
wr32(hw, I40E_PFQF_HENA(1), (u32)(hena >> 32));
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.h b/drivers/net/ethernet/intel/i40e/i40e_txrx.h
index faabf22..2992830 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.h
@@ -66,6 +66,26 @@ enum i40e_dyn_idx_t {
#define I40E_TX_ITR I40E_IDX_ITR1
#define I40E_PE_ITR I40E_IDX_ITR2
+/* Supported RSS offloads */
+#define I40E_DEFAULT_RSS_HENA ( \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_UDP) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_SCTP) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_TCP) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_OTHER) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_FRAG_IPV4) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_UDP) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_TCP) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_SCTP) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_OTHER) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_FRAG_IPV6) | \
+ ((u64)1 << I40E_FILTER_PCTYPE_L2_PAYLOAD))
+
/* Supported Rx Buffer Sizes */
#define I40E_RXBUFFER_512 512 /* Used for packet split */
#define I40E_RXBUFFER_2048 2048
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 14/15] i40e: update led set args
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (12 preceding siblings ...)
2013-12-19 6:34 ` [net-next 13/15] i40e: make a define from a large constant Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 15/15] i40e: report VF MAC addresses correctly Jeff Kirsher
2013-12-19 19:20 ` [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem; +Cc: Jesse Brandeburg, netdev, gospo, sassmann, Jeff Kirsher
From: Jesse Brandeburg <jesse.brandeburg@intel.com>
Add an argument to led function and refactor code to flash LED lights
correctly.
Change-Id: I00b21607ced53aaa057159503875708871946259
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_common.c | 92 +++++++++++++++++-------
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 6 +-
drivers/net/ethernet/intel/i40e/i40e_prototype.h | 2 +-
3 files changed, 69 insertions(+), 31 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c
index cba1eb4..e14889a 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_common.c
@@ -401,6 +401,38 @@ void i40e_clear_pxe_mode(struct i40e_hw *hw)
}
/**
+ * i40e_led_is_mine - helper to find matching led
+ * @hw: pointer to the hw struct
+ * @idx: index into GPIO registers
+ *
+ * returns: 0 if no match, otherwise the value of the GPIO_CTL register
+ */
+static u32 i40e_led_is_mine(struct i40e_hw *hw, int idx)
+{
+ u32 gpio_val = 0;
+ u32 port;
+
+ if (!hw->func_caps.led[idx])
+ return 0;
+
+ gpio_val = rd32(hw, I40E_GLGEN_GPIO_CTL(idx));
+ port = (gpio_val & I40E_GLGEN_GPIO_CTL_PRT_NUM_MASK) >>
+ I40E_GLGEN_GPIO_CTL_PRT_NUM_SHIFT;
+
+ /* if PRT_NUM_NA is 1 then this LED is not port specific, OR
+ * if it is not our port then ignore
+ */
+ if ((gpio_val & I40E_GLGEN_GPIO_CTL_PRT_NUM_NA_MASK) ||
+ (port != hw->port))
+ return 0;
+
+ return gpio_val;
+}
+
+#define I40E_LED0 22
+#define I40E_LINK_ACTIVITY 0xC
+
+/**
* i40e_led_get - return current on/off mode
* @hw: pointer to the hw struct
*
@@ -411,24 +443,20 @@ void i40e_clear_pxe_mode(struct i40e_hw *hw)
**/
u32 i40e_led_get(struct i40e_hw *hw)
{
- u32 gpio_val = 0;
u32 mode = 0;
- u32 port;
int i;
- for (i = 0; i < I40E_HW_CAP_MAX_GPIO; i++) {
- if (!hw->func_caps.led[i])
- continue;
-
- gpio_val = rd32(hw, I40E_GLGEN_GPIO_CTL(i));
- port = (gpio_val & I40E_GLGEN_GPIO_CTL_PRT_NUM_MASK)
- >> I40E_GLGEN_GPIO_CTL_PRT_NUM_SHIFT;
+ /* as per the documentation GPIO 22-29 are the LED
+ * GPIO pins named LED0..LED7
+ */
+ for (i = I40E_LED0; i <= I40E_GLGEN_GPIO_CTL_MAX_INDEX; i++) {
+ u32 gpio_val = i40e_led_is_mine(hw, i);
- if (port != hw->port)
+ if (!gpio_val)
continue;
- mode = (gpio_val & I40E_GLGEN_GPIO_CTL_LED_MODE_MASK)
- >> I40E_GLGEN_GPIO_CTL_INT_MODE_SHIFT;
+ mode = (gpio_val & I40E_GLGEN_GPIO_CTL_LED_MODE_MASK) >>
+ I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT;
break;
}
@@ -438,31 +466,41 @@ u32 i40e_led_get(struct i40e_hw *hw)
/**
* i40e_led_set - set new on/off mode
* @hw: pointer to the hw struct
- * @mode: 0=off, else on (see EAS for mode details)
+ * @mode: 0=off, 0xf=on (else see manual for mode details)
+ * @blink: true if the LED should blink when on, false if steady
+ *
+ * if this function is used to turn on the blink it should
+ * be used to disable the blink when restoring the original state.
**/
-void i40e_led_set(struct i40e_hw *hw, u32 mode)
+void i40e_led_set(struct i40e_hw *hw, u32 mode, bool blink)
{
- u32 gpio_val = 0;
- u32 led_mode = 0;
- u32 port;
int i;
- for (i = 0; i < I40E_HW_CAP_MAX_GPIO; i++) {
- if (!hw->func_caps.led[i])
- continue;
+ if (mode & 0xfffffff0)
+ hw_dbg(hw, "invalid mode passed in %X\n", mode);
- gpio_val = rd32(hw, I40E_GLGEN_GPIO_CTL(i));
- port = (gpio_val & I40E_GLGEN_GPIO_CTL_PRT_NUM_MASK)
- >> I40E_GLGEN_GPIO_CTL_PRT_NUM_SHIFT;
+ /* as per the documentation GPIO 22-29 are the LED
+ * GPIO pins named LED0..LED7
+ */
+ for (i = I40E_LED0; i <= I40E_GLGEN_GPIO_CTL_MAX_INDEX; i++) {
+ u32 gpio_val = i40e_led_is_mine(hw, i);
- if (port != hw->port)
+ if (!gpio_val)
continue;
- led_mode = (mode << I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT) &
- I40E_GLGEN_GPIO_CTL_LED_MODE_MASK;
gpio_val &= ~I40E_GLGEN_GPIO_CTL_LED_MODE_MASK;
- gpio_val |= led_mode;
+ /* this & is a bit of paranoia, but serves as a range check */
+ gpio_val |= ((mode << I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT) &
+ I40E_GLGEN_GPIO_CTL_LED_MODE_MASK);
+
+ if (mode == I40E_LINK_ACTIVITY)
+ blink = false;
+
+ gpio_val |= (blink ? 1 : 0) <<
+ I40E_GLGEN_GPIO_CTL_LED_BLINK_SHIFT;
+
wr32(hw, I40E_GLGEN_GPIO_CTL(i), gpio_val);
+ break;
}
}
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index a12dd01..1efc8c8 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -1011,13 +1011,13 @@ static int i40e_set_phys_id(struct net_device *netdev,
pf->led_status = i40e_led_get(hw);
return blink_freq;
case ETHTOOL_ID_ON:
- i40e_led_set(hw, 0xF);
+ i40e_led_set(hw, 0xF, false);
break;
case ETHTOOL_ID_OFF:
- i40e_led_set(hw, 0x0);
+ i40e_led_set(hw, 0x0, false);
break;
case ETHTOOL_ID_INACTIVE:
- i40e_led_set(hw, pf->led_status);
+ i40e_led_set(hw, pf->led_status, false);
break;
}
diff --git a/drivers/net/ethernet/intel/i40e/i40e_prototype.h b/drivers/net/ethernet/intel/i40e/i40e_prototype.h
index db7bf93..1fc5a8e 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_prototype.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_prototype.h
@@ -61,7 +61,7 @@ void i40e_debug_aq(struct i40e_hw *hw,
void i40e_idle_aq(struct i40e_hw *hw);
u32 i40e_led_get(struct i40e_hw *hw);
-void i40e_led_set(struct i40e_hw *hw, u32 mode);
+void i40e_led_set(struct i40e_hw *hw, u32 mode, bool blink);
/* admin send queue commands */
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* [net-next 15/15] i40e: report VF MAC addresses correctly
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (13 preceding siblings ...)
2013-12-19 6:34 ` [net-next 14/15] i40e: update led set args Jeff Kirsher
@ 2013-12-19 6:34 ` Jeff Kirsher
2013-12-19 19:20 ` [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
15 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 6:34 UTC (permalink / raw)
To: davem
Cc: Mitch Williams, netdev, gospo, sassmann, Jesse Brandeburg,
Jeff Kirsher
From: Mitch Williams <mitch.a.williams@intel.com>
If the user does not assign a VF MAC address, then just report it as
zero. Attempting to guess the correct primary MAC address of the VF is a
futile and heartbreaking endeavour.
Change-Id: I2673577a160afb6fc55094c890467b44e60c7584
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index cc8fa2a..fdcd5df 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -2019,7 +2019,6 @@ int i40e_ndo_get_vf_config(struct net_device *netdev,
int vf_id, struct ifla_vf_info *ivi)
{
struct i40e_netdev_priv *np = netdev_priv(netdev);
- struct i40e_mac_filter *f, *ftmp;
struct i40e_vsi *vsi = np->vsi;
struct i40e_pf *pf = vsi->back;
struct i40e_vf *vf;
@@ -2043,11 +2042,7 @@ int i40e_ndo_get_vf_config(struct net_device *netdev,
ivi->vf = vf_id;
- /* first entry of the list is the default ethernet address */
- list_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {
- memcpy(&ivi->mac, f->macaddr, I40E_ETH_LENGTH_OF_ADDRESS);
- break;
- }
+ memcpy(&ivi->mac, vf->default_lan_addr.addr, ETH_ALEN);
ivi->tx_rate = 0;
ivi->vlan = le16_to_cpu(vsi->info.pvid) & I40E_VLAN_MASK;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 58+ messages in thread
* Re: [net-next 06/15] i40e: Rx checksum offload for VXLAN
2013-12-19 6:34 ` [net-next 06/15] i40e: Rx checksum offload for VXLAN Jeff Kirsher
@ 2013-12-19 17:46 ` Or Gerlitz
2013-12-19 19:17 ` Jeff Kirsher
0 siblings, 1 reply; 58+ messages in thread
From: Or Gerlitz @ 2013-12-19 17:46 UTC (permalink / raw)
To: Jeff Kirsher
Cc: David Miller, Joseph Gasparakis, netdev@vger.kernel.org,
gospo@redhat.com, sassmann, Jesse Brandeburg
On Thu, Dec 19, 2013 at 8:34 AM, Jeff Kirsher
<jeffrey.t.kirsher@intel.com> wrote:
> From: Joseph Gasparakis <joseph.gasparakis@intel.com>
>
> This implements receive offload for VXLAN for i40e. The hardware
> supports checksum offload/verification of the inner/outer header.
>
> Change-Id: I450db300af6713f2044fef1191a0d1d294c13369
> Signed-off-by: Joseph Gasparakis <joseph.gasparakis@intel.com>
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> ---
> drivers/net/ethernet/intel/i40e/i40e.h | 1 +
> drivers/net/ethernet/intel/i40e/i40e_main.c | 2 ++
> drivers/net/ethernet/intel/i40e/i40e_txrx.c | 56 ++++++++++++++++++++++++++---
> drivers/net/ethernet/intel/i40e/i40e_type.h | 51 ++++++++++++++------------
> 4 files changed, 82 insertions(+), 28 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
> index 31dd265..3207568 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e.h
> +++ b/drivers/net/ethernet/intel/i40e/i40e.h
> @@ -29,6 +29,7 @@
> #define _I40E_H_
>
> #include <net/tcp.h>
> +#include <net/udp.h>
> #include <linux/init.h>
> #include <linux/types.h>
> #include <linux/errno.h>
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
> index b0cfb4c..7094ff7 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
> @@ -27,6 +27,7 @@
>
> /* Local includes */
> #include "i40e.h"
> +#include <net/vxlan.h>
>
> const char i40e_driver_name[] = "i40e";
> static const char i40e_driver_string[] =
> @@ -3993,6 +3994,7 @@ static int i40e_open(struct net_device *netdev)
> "couldn't set broadcast err %d aq_err %d\n",
> err, pf->hw.aq.asq_last_status);
> }
> + vxlan_get_rx_port(netdev);
what effect this has if the driver doesn't implement the
add_vxlan_port ndo entry?
>
> return 0;
>
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> index 01d0334..6d36616 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> @@ -860,12 +860,25 @@ static void i40e_receive_skb(struct i40e_ring *rx_ring,
> * @skb: skb currently being received and modified
> * @rx_status: status value of last descriptor in packet
> * @rx_error: error value of last descriptor in packet
> + * @rx_ptype: ptype value of last descriptor in packet
> **/
> static inline void i40e_rx_checksum(struct i40e_vsi *vsi,
> struct sk_buff *skb,
> u32 rx_status,
> - u32 rx_error)
> + u32 rx_error,
> + u16 rx_ptype)
> {
> + bool ipv4_tunnel, ipv6_tunnel;
> + __wsum rx_udp_csum;
> + __sum16 csum;
> + struct iphdr *iph;
> +
> + ipv4_tunnel = (rx_ptype > I40E_RX_PTYPE_GRENAT4_MAC_PAY3) &&
> + (rx_ptype < I40E_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4);
> + ipv6_tunnel = (rx_ptype > I40E_RX_PTYPE_GRENAT6_MAC_PAY3) &&
> + (rx_ptype < I40E_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4);
> +
> + skb->encapsulation = ipv4_tunnel || ipv6_tunnel;
> skb->ip_summed = CHECKSUM_NONE;
>
> /* Rx csum enabled and ip headers found? */
> @@ -873,13 +886,42 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi,
> rx_status & (1 << I40E_RX_DESC_STATUS_L3L4P_SHIFT)))
> return;
>
> - /* IP or L4 checksum error */
> + /* IP or L4 or outmost IP checksum error */
> if (rx_error & ((1 << I40E_RX_DESC_ERROR_IPE_SHIFT) |
> - (1 << I40E_RX_DESC_ERROR_L4E_SHIFT))) {
> + (1 << I40E_RX_DESC_ERROR_L4E_SHIFT) |
> + (1 << I40E_RX_DESC_ERROR_EIPE_SHIFT))) {
> vsi->back->hw_csum_rx_error++;
> return;
> }
>
> + if (ipv4_tunnel &&
> + !(rx_status & (1 << I40E_RX_DESC_STATUS_UDP_0_SHIFT))) {
> + /* If VXLAN traffic has an outer UDPv4 checksum we need to check
> + * it in the driver, hardware does not do it for us.
> + * Since L3L4P bit was set we assume a valid IHL value (>=5)
> + * so the total length of IPv4 header is IHL*4 bytes
> + */
> + skb->transport_header = skb->mac_header +
> + sizeof(struct ethhdr) +
> + (ip_hdr(skb)->ihl * 4);
> +
> + /* Add 4 bytes for VLAN tagged packets */
> + skb->transport_header += (skb->protocol == htons(ETH_P_8021Q) ||
> + skb->protocol == htons(ETH_P_8021AD))
> + ? VLAN_HLEN : 0;
> +
> + rx_udp_csum = udp_csum(skb);
> + iph = ip_hdr(skb);
> + csum = csum_tcpudp_magic(iph->saddr, iph->daddr,
> + (skb->len - skb_transport_offset(skb)),
> + IPPROTO_UDP, rx_udp_csum);
> +
> + if (udp_hdr(skb)->check != csum) {
> + vsi->back->hw_csum_rx_error++;
> + return;
> + }
> + }
> +
> skb->ip_summed = CHECKSUM_UNNECESSARY;
> }
>
> @@ -920,6 +962,7 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
> union i40e_rx_desc *rx_desc;
> u32 rx_error, rx_status;
> u64 qword;
> + u16 rx_ptype;
>
> rx_desc = I40E_RX_DESC(rx_ring, i);
> qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len);
> @@ -952,6 +995,8 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
> rx_hbo = rx_error & (1 << I40E_RX_DESC_ERROR_HBO_SHIFT);
> rx_error &= ~(1 << I40E_RX_DESC_ERROR_HBO_SHIFT);
>
> + rx_ptype = (qword & I40E_RXD_QW1_PTYPE_MASK) >>
> + I40E_RXD_QW1_PTYPE_SHIFT;
> rx_bi->skb = NULL;
>
> /* This memory barrier is needed to keep us from reading
> @@ -1032,13 +1077,14 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
> }
>
> skb->rxhash = i40e_rx_hash(rx_ring, rx_desc);
> - i40e_rx_checksum(vsi, skb, rx_status, rx_error);
> -
> /* probably a little skewed due to removing CRC */
> total_rx_bytes += skb->len;
> total_rx_packets++;
>
> skb->protocol = eth_type_trans(skb, rx_ring->netdev);
> +
> + i40e_rx_checksum(vsi, skb, rx_status, rx_error, rx_ptype);
> +
> vlan_tag = rx_status & (1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT)
> ? le16_to_cpu(rx_desc->wb.qword0.lo_dword.l2tag1)
> : 0;
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h b/drivers/net/ethernet/intel/i40e/i40e_type.h
> index d683c30..41f57d9 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_type.h
> +++ b/drivers/net/ethernet/intel/i40e/i40e_type.h
> @@ -521,7 +521,8 @@ enum i40e_rx_desc_status_bits {
> I40E_RX_DESC_STATUS_UMBCAST_SHIFT = 9, /* 2 BITS */
> I40E_RX_DESC_STATUS_FLM_SHIFT = 11,
> I40E_RX_DESC_STATUS_FLTSTAT_SHIFT = 12, /* 2 BITS */
> - I40E_RX_DESC_STATUS_LPBK_SHIFT = 14
> + I40E_RX_DESC_STATUS_LPBK_SHIFT = 14,
> + I40E_RX_DESC_STATUS_UDP_0_SHIFT = 16
> };
>
> #define I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT I40E_RX_DESC_STATUS_TSYNINDX_SHIFT
> @@ -567,28 +568,32 @@ enum i40e_rx_desc_error_l3l4e_fcoe_masks {
>
> /* Packet type non-ip values */
> enum i40e_rx_l2_ptype {
> - I40E_RX_PTYPE_L2_RESERVED = 0,
> - I40E_RX_PTYPE_L2_MAC_PAY2 = 1,
> - I40E_RX_PTYPE_L2_TIMESYNC_PAY2 = 2,
> - I40E_RX_PTYPE_L2_FIP_PAY2 = 3,
> - I40E_RX_PTYPE_L2_OUI_PAY2 = 4,
> - I40E_RX_PTYPE_L2_MACCNTRL_PAY2 = 5,
> - I40E_RX_PTYPE_L2_LLDP_PAY2 = 6,
> - I40E_RX_PTYPE_L2_ECP_PAY2 = 7,
> - I40E_RX_PTYPE_L2_EVB_PAY2 = 8,
> - I40E_RX_PTYPE_L2_QCN_PAY2 = 9,
> - I40E_RX_PTYPE_L2_EAPOL_PAY2 = 10,
> - I40E_RX_PTYPE_L2_ARP = 11,
> - I40E_RX_PTYPE_L2_FCOE_PAY3 = 12,
> - I40E_RX_PTYPE_L2_FCOE_FCDATA_PAY3 = 13,
> - I40E_RX_PTYPE_L2_FCOE_FCRDY_PAY3 = 14,
> - I40E_RX_PTYPE_L2_FCOE_FCRSP_PAY3 = 15,
> - I40E_RX_PTYPE_L2_FCOE_FCOTHER_PA = 16,
> - I40E_RX_PTYPE_L2_FCOE_VFT_PAY3 = 17,
> - I40E_RX_PTYPE_L2_FCOE_VFT_FCDATA = 18,
> - I40E_RX_PTYPE_L2_FCOE_VFT_FCRDY = 19,
> - I40E_RX_PTYPE_L2_FCOE_VFT_FCRSP = 20,
> - I40E_RX_PTYPE_L2_FCOE_VFT_FCOTHER = 21
> + I40E_RX_PTYPE_L2_RESERVED = 0,
> + I40E_RX_PTYPE_L2_MAC_PAY2 = 1,
> + I40E_RX_PTYPE_L2_TIMESYNC_PAY2 = 2,
> + I40E_RX_PTYPE_L2_FIP_PAY2 = 3,
> + I40E_RX_PTYPE_L2_OUI_PAY2 = 4,
> + I40E_RX_PTYPE_L2_MACCNTRL_PAY2 = 5,
> + I40E_RX_PTYPE_L2_LLDP_PAY2 = 6,
> + I40E_RX_PTYPE_L2_ECP_PAY2 = 7,
> + I40E_RX_PTYPE_L2_EVB_PAY2 = 8,
> + I40E_RX_PTYPE_L2_QCN_PAY2 = 9,
> + I40E_RX_PTYPE_L2_EAPOL_PAY2 = 10,
> + I40E_RX_PTYPE_L2_ARP = 11,
> + I40E_RX_PTYPE_L2_FCOE_PAY3 = 12,
> + I40E_RX_PTYPE_L2_FCOE_FCDATA_PAY3 = 13,
> + I40E_RX_PTYPE_L2_FCOE_FCRDY_PAY3 = 14,
> + I40E_RX_PTYPE_L2_FCOE_FCRSP_PAY3 = 15,
> + I40E_RX_PTYPE_L2_FCOE_FCOTHER_PA = 16,
> + I40E_RX_PTYPE_L2_FCOE_VFT_PAY3 = 17,
> + I40E_RX_PTYPE_L2_FCOE_VFT_FCDATA = 18,
> + I40E_RX_PTYPE_L2_FCOE_VFT_FCRDY = 19,
> + I40E_RX_PTYPE_L2_FCOE_VFT_FCRSP = 20,
> + I40E_RX_PTYPE_L2_FCOE_VFT_FCOTHER = 21,
> + I40E_RX_PTYPE_GRENAT4_MAC_PAY3 = 58,
> + I40E_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4 = 87,
> + I40E_RX_PTYPE_GRENAT6_MAC_PAY3 = 124,
> + I40E_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4 = 153
> };
>
> struct i40e_rx_ptype_decoded {
> --
> 1.8.3.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 06/15] i40e: Rx checksum offload for VXLAN
2013-12-19 17:46 ` Or Gerlitz
@ 2013-12-19 19:17 ` Jeff Kirsher
0 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 19:17 UTC (permalink / raw)
To: Or Gerlitz
Cc: David Miller, Joseph Gasparakis, netdev@vger.kernel.org,
gospo@redhat.com, sassmann, Jesse Brandeburg
[-- Attachment #1: Type: text/plain, Size: 2495 bytes --]
On Thu, 2013-12-19 at 19:46 +0200, Or Gerlitz wrote:
> On Thu, Dec 19, 2013 at 8:34 AM, Jeff Kirsher
> <jeffrey.t.kirsher@intel.com> wrote:
> > From: Joseph Gasparakis <joseph.gasparakis@intel.com>
> >
> > This implements receive offload for VXLAN for i40e. The hardware
> > supports checksum offload/verification of the inner/outer header.
> >
> > Change-Id: I450db300af6713f2044fef1191a0d1d294c13369
> > Signed-off-by: Joseph Gasparakis <joseph.gasparakis@intel.com>
> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> > Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
> > Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> > ---
> > drivers/net/ethernet/intel/i40e/i40e.h | 1 +
> > drivers/net/ethernet/intel/i40e/i40e_main.c | 2 ++
> > drivers/net/ethernet/intel/i40e/i40e_txrx.c | 56
> ++++++++++++++++++++++++++---
> > drivers/net/ethernet/intel/i40e/i40e_type.h | 51
> ++++++++++++++------------
> > 4 files changed, 82 insertions(+), 28 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/intel/i40e/i40e.h
> b/drivers/net/ethernet/intel/i40e/i40e.h
> > index 31dd265..3207568 100644
> > --- a/drivers/net/ethernet/intel/i40e/i40e.h
> > +++ b/drivers/net/ethernet/intel/i40e/i40e.h
> > @@ -29,6 +29,7 @@
> > #define _I40E_H_
> >
> > #include <net/tcp.h>
> > +#include <net/udp.h>
> > #include <linux/init.h>
> > #include <linux/types.h>
> > #include <linux/errno.h>
> > diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c
> b/drivers/net/ethernet/intel/i40e/i40e_main.c
> > index b0cfb4c..7094ff7 100644
> > --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
> > +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
> > @@ -27,6 +27,7 @@
> >
> > /* Local includes */
> > #include "i40e.h"
> > +#include <net/vxlan.h>
> >
> > const char i40e_driver_name[] = "i40e";
> > static const char i40e_driver_string[] =
> > @@ -3993,6 +3994,7 @@ static int i40e_open(struct net_device
> *netdev)
> > "couldn't set broadcast err %d
> aq_err %d\n",
> > err, pf->hw.aq.asq_last_status);
> > }
> > + vxlan_get_rx_port(netdev);
>
> what effect this has if the driver doesn't implement the
> add_vxlan_port ndo entry?
It appears that there should have been a VXLAN for i40e from Joseph that
got pushed before this one, so I will re-send this series with necessary
patch added to the series.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (14 preceding siblings ...)
2013-12-19 6:34 ` [net-next 15/15] i40e: report VF MAC addresses correctly Jeff Kirsher
@ 2013-12-19 19:20 ` Jeff Kirsher
2013-12-19 19:47 ` David Miller
15 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2013-12-19 19:20 UTC (permalink / raw)
To: davem; +Cc: netdev, gospo, sassmann
[-- Attachment #1: Type: text/plain, Size: 1897 bytes --]
On Wed, 2013-12-18 at 22:34 -0800, Jeff Kirsher wrote:
> This series contains updates to i40e only.
>
> Anjali provides a patch to prevent messages from stray HMC events,
> except
> at interrupt message level, and refactors the HMC error handling.
>
> Catherine adds routines in probe to populate/check PCI bus speed and
> width,
> then verify we are in a 8GT/s x8 PCIe slot and warn when we are not.
>
> Shannon adds Wake-on-LAN support for i40e, fixes curly brace use as
> well as
> return type for i40e_vsi_clear_rings(). Lastly implements the
> set_settings
> and set_pauseparam ethtool functionality.
>
> Joseph implements receive offload for VXLAN for i40e, where the
> hardware
> supports checksum offload/verification of the inner/outer header.
>
> Mitch provides the bulk of the changes, where he refactors the VF
> reset
> code so that it works on real hardware. Then does code cleanup by
> calling existing functions to enable and disable queues for VFs and
> remove unused functions. Removes a unnecessary log messages that are
> seen at every VF reset, for example complaining about disabling queues
> that are already disabled. Fixes an error return when the VF asks to
> add an invalid MAC address and if the VF sends a bad message, make it
> more informative about what is actually going on.
>
> Jesse refactors the LED function to flash LED lights correctly.
>
> The following are changes since commit
> 020e867c755610fa5a2a08a69707e636cf368b55:
> isdn: use strlcpy() instead strcpy()
> and are available in the git repository at:
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
> master
Dave-
Disregard this pull request. I overlooked a patch that needs to either
precede this series or get added to the series for VXLAN.
I will be sending out a v2 with the necessary patch added.
Cheers,
Jeff
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2013-12-19 19:20 ` [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
@ 2013-12-19 19:47 ` David Miller
0 siblings, 0 replies; 58+ messages in thread
From: David Miller @ 2013-12-19 19:47 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 19 Dec 2013 11:20:36 -0800
> Disregard this pull request. I overlooked a patch that needs to either
> precede this series or get added to the series for VXLAN.
>
> I will be sending out a v2 with the necessary patch added.
Ok.
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 05/15] i40e: add set settings and pauseparam
2013-12-19 6:34 ` [net-next 05/15] i40e: add set settings and pauseparam Jeff Kirsher
@ 2013-12-19 20:42 ` Ben Hutchings
2013-12-20 18:19 ` Nelson, Shannon
0 siblings, 1 reply; 58+ messages in thread
From: Ben Hutchings @ 2013-12-19 20:42 UTC (permalink / raw)
To: Jeff Kirsher
Cc: davem, Shannon Nelson, netdev, gospo, sassmann, Jesse Brandeburg
On Wed, 2013-12-18 at 22:34 -0800, Jeff Kirsher wrote:
> From: Shannon Nelson <shannon.nelson@intel.com>
>
> This implements the set_settings and set_pauseparam ethtool
> functionality.
>
> Change-Id: I4634ee2c8bce00204edac7df9f0af4fb7bf33b75
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> ---
> drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 97 ++++++++++++++++++++++++++
> 1 file changed, 97 insertions(+)
>
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
> index 255a138..a12dd01 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
> @@ -261,6 +261,61 @@ static int i40e_get_settings(struct net_device *netdev,
> }
>
> /**
> + * i40e_set_settings - Set Speed and Duplex
> + * @netdev: network interface device structure
> + * @ecmd: ethtool command
> + *
> + * Set speed/duplex per media_types advertised/forced
> + **/
> +static int i40e_set_settings(struct net_device *netdev,
> + struct ethtool_cmd *ecmd)
> +{
> + struct i40e_netdev_priv *np = netdev_priv(netdev);
> + struct i40e_pf *pf = np->vsi->back;
> + struct i40e_vsi *vsi = np->vsi;
> + struct i40e_hw *hw = &pf->hw;
> + u32 old_link, advertised;
> + int err = 0;
> +
> + if (vsi != pf->vsi[pf->lan_vsi])
> + return -EOPNOTSUPP;
> +
> + while (test_and_set_bit(__I40E_CONFIG_BUSY, &vsi->state))
> + usleep_range(1000, 2000);
> +
> + if ((hw->phy.media_type == I40E_MEDIA_TYPE_BASET) ||
> + (hw->phy.media_type == I40E_MEDIA_TYPE_FIBER)) {
> + if (ecmd->autoneg == AUTONEG_DISABLE)
> + goto clear_reset;
So if the media_type is not one of the above, or ecmd->autoneg is
AUTONEG_DISABLE, this returns success even though it hasn't done
anything. This can't be right.
> + if (ecmd->advertising & ~ecmd->supported)
> + goto clear_reset;
You can't trust ecmd->supported. And again this is returning success.
> + old_link = hw->phy.autoneg_advertised;
> + advertised = 0;
> +
> + if (ecmd->advertising & (ADVERTISED_40000baseCR4_Full |
> + ADVERTISED_40000baseKR4_Full |
> + ADVERTISED_40000baseSR4_Full |
> + ADVERTISED_40000baseLR4_Full))
> + advertised |= I40E_LINK_SPEED_40GB;
> + if (ecmd->advertising & (ADVERTISED_10000baseKX4_Full |
> + ADVERTISED_10000baseKR_Full |
> + ADVERTISED_10000baseT_Full))
> + advertised |= I40E_LINK_SPEED_10GB;
> + if (ecmd->advertising & ADVERTISED_1000baseT_Full)
> + advertised |= I40E_LINK_SPEED_1GB;
> + if (old_link == advertised) {
> + err = 0;
Hmm... so maybe err was meant to be initialised to -EINVAL above?
[...]
> +/**
> + * i40e_set_pauseparam - Set Flow Control parameter
> + * @netdev: network interface device structure
> + * @pause: return tx/rx flow control status
> + **/
> +static int i40e_set_pauseparam(struct net_device *netdev,
> + struct ethtool_pauseparam *pause)
[...]
> + /* if the status changed, then we will use updated autoneg*/
> + if (memcmp(&fc, &hw->fc, sizeof(struct i40e_fc_info)))
> + hw->fc = fc;
[...]
Why bother with the memcmp()?
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply [flat|nested] 58+ messages in thread
* RE: [net-next 05/15] i40e: add set settings and pauseparam
2013-12-19 20:42 ` Ben Hutchings
@ 2013-12-20 18:19 ` Nelson, Shannon
0 siblings, 0 replies; 58+ messages in thread
From: Nelson, Shannon @ 2013-12-20 18:19 UTC (permalink / raw)
To: Ben Hutchings, Kirsher, Jeffrey T
Cc: davem@davemloft.net, netdev@vger.kernel.org, gospo@redhat.com,
sassmann@redhat.com, Brandeburg, Jesse
> -----Original Message-----
> From: Ben Hutchings [mailto:bhutchings@solarflare.com]
> Sent: Thursday, December 19, 2013 12:42 PM
> To: Kirsher, Jeffrey T
> Cc: davem@davemloft.net; Nelson, Shannon; netdev@vger.kernel.org;
> gospo@redhat.com; sassmann@redhat.com; Brandeburg, Jesse
> Subject: Re: [net-next 05/15] i40e: add set settings and pauseparam
>
> On Wed, 2013-12-18 at 22:34 -0800, Jeff Kirsher wrote:
> > From: Shannon Nelson <shannon.nelson@intel.com>
> >
> > This implements the set_settings and set_pauseparam ethtool
> > functionality.
> >
> > Change-Id: I4634ee2c8bce00204edac7df9f0af4fb7bf33b75
> > Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> > Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
> > Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> > ---
> > drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 97
> ++++++++++++++++++++++++++
> > 1 file changed, 97 insertions(+)
> >
Thanks Ben. As it turns out there are a couple other issues with this patch, so we're dropping it for now. When it reappears your issues should be resolved.
Cheers,
sln
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2014-01-05 10:46 Jeff Kirsher
2014-01-06 1:31 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2014-01-05 10:46 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to i40e only.
Anjali provides two cleanups to remove unnecessary code and a fix
to resolve debugfs dumping only half the NVM. Then provides a fix
to ethtool NVM reads where shadow RAM was used instead of actual
NVM reads.
Jesse provides a couple of fixes, one removes custom i40e functions
which duplicate existing kernel functionality. Second fixes constant
cast issues by replacing __constant_htons with htons.
Mitch provides a couple of fixes for the VF interfaces in i40e. First
provides a fix to guard against VF message races with can cause a panic.
Second fix reinitializes the buffer size each time we clean the ARQ,
because subsequent messages can be truncated. Lastly adds functionality
to enable/disable ICR 0 dynamically.
Vasu adds a simple guard against multiple includes of the i40e_txrx.h
file.
Shannon provides a couple of fixes, first fix swaps a couple of lines
around in the error handling if the allocation for the VSI array fails.
Second fixes an issue where we try to free the q_vector that has not
been setup which can panic the kernel.
David provides a patch to save off the point to memory and the length
of 2 structs used in the admin queue in order to store all info about
allocated kernel memory.
Neerav fixes ring allocation where allocation and clearing of rings
for a VSI should be using the alloc_queue_pairs and not num_queue_pairs.
Then removes the unused define for multi-queue enabled.
The following are changes since commit a1d4b03a076d95edc88d070f7627a73ab80abddc:
Merge branch 'bgmac'
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Anjali Singhai Jain (4):
i40e: Dump the whole NVM, not half
i40e: Change the ethtool NVM read method to use AQ
i40e: Remove unnecessary prototypes
i40e: remove un-necessary io-write
David Cassard (1):
i40e: keep allocated memory in structs
Jesse Brandeburg (2):
i40e: fix mac address checking
i40e: fix constant cast issues
Mitch Williams (3):
i40e: guard against vf message races
i40e: use functions to enable and disable icr 0
i40e: reinit buffer size each time
Neerav Parikh (2):
i40e: Fix ring allocation
i40e: I40E_FLAG_MQ_ENABLED is not used
Shannon Nelson (2):
i40e: fix error handling when alloc of vsi array fails
i40e: catch unset q_vector
Vasu Dev (1):
i40e: add header file flag _I40E_TXRX_H_
drivers/net/ethernet/intel/i40e/i40e.h | 40 +++-----
drivers/net/ethernet/intel/i40e/i40e_adminq.c | 103 +++++++++------------
drivers/net/ethernet/intel/i40e/i40e_adminq.h | 13 +--
drivers/net/ethernet/intel/i40e/i40e_common.c | 27 ------
drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 8 +-
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 68 +++++++++-----
drivers/net/ethernet/intel/i40e/i40e_main.c | 47 +++++-----
drivers/net/ethernet/intel/i40e/i40e_prototype.h | 1 -
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 8 +-
drivers/net/ethernet/intel/i40e/i40e_txrx.h | 4 +
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 28 +++---
11 files changed, 162 insertions(+), 185 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-01-05 10:46 Jeff Kirsher
@ 2014-01-06 1:31 ` David Miller
0 siblings, 0 replies; 58+ messages in thread
From: David Miller @ 2014-01-06 1:31 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Sun, 5 Jan 2014 02:46:52 -0800
> This series contains updates to i40e only.
...
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Looks fine, pulled, thanks Jeff.
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2014-01-06 12:30 Jeff Kirsher
2014-01-06 18:26 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2014-01-06 12:30 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to i40e only.
Majority of this series contains patches from Greg and Mitch to fix
up or add functionality to the PF/VF driver interactions. Notably,
a fix for SR-IOV VF port VLAN which resolved the problem of port VLAN
configurations not being persistent across VF driver loads and unloads
and enable/disable of the feature. Also do not enable the default port
on the VEB, which is designed only to bridge the PF to an Open vSwitch
or bridge. Another fix to resolve a possible memory corruption
condition where ARQ messages are written to random memory locations.
Fix a problem where the 'ip link show' command would display stale
link address information after the link address was set via the 'ip
link set' command.
Anjali provides several patches, one which saves information that can
be used while cleaning the Tx ring and useful in detecting Tx hangs.
Then provides a fixes to the admin queue shutdown function to ensure
we are shutting down the queue in the shutdown path and ensure ASQ is
alive before issuing the admin queue command.
Shannon provides a fix for get/update vsi params where the incorrect
struct was being used.
The following are changes since commit b912b2f8fc71df4c3ffa7a9fe2c2227e8bcdaa07:
net/mlx4_core: Warn if device doesn't have enough PCI bandwidth
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Anjali Singhai Jain (4):
i40e: Record dma buffer info for dummy packets
i40e: Admin queue shutdown fixes
i40e: check asq alive before notify
i40e: Do not allow AQ calls from ndo-ops
Greg Rose (4):
i40e: Fix SR-IOV VF port VLAN
i40e: Do not enable default port on the VEB
i40e: Fix VF driver MAC address configuration
i40e: Hide the Port VLAN VLAN ID
Jesse Brandeburg (1):
i40e: fix whitespace
Mitch Williams (5):
i40e: avoid unnecessary register read
i40e: use struct assign instead of memcpy
i40e: don't allocate zero size
i40e: acknowledge VFLR when disabling SR-IOV
i40e: support VFs on PFs other than 0
Shannon Nelson (1):
i40e: use correct struct for get and update vsi params
drivers/net/ethernet/intel/i40e/i40e_adminq.c | 3 +
drivers/net/ethernet/intel/i40e/i40e_common.c | 75 ++++++++------
drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 1 +
drivers/net/ethernet/intel/i40e/i40e_main.c | 45 ++++----
drivers/net/ethernet/intel/i40e/i40e_prototype.h | 5 +-
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 9 +-
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 114 ++++++++++++++++-----
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h | 2 +
8 files changed, 169 insertions(+), 85 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-01-06 12:30 Jeff Kirsher
@ 2014-01-06 18:26 ` David Miller
2014-01-06 18:49 ` Jeff Kirsher
2014-01-06 20:14 ` Jeff Kirsher
0 siblings, 2 replies; 58+ messages in thread
From: David Miller @ 2014-01-06 18:26 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Mon, 6 Jan 2014 04:30:21 -0800
> This series contains updates to i40e only.
...
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Pulled, please make sure the coding style feedback does actually
get addressed.
Thanks Jeff.
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-01-06 18:26 ` David Miller
@ 2014-01-06 18:49 ` Jeff Kirsher
2014-01-06 20:14 ` Jeff Kirsher
1 sibling, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2014-01-06 18:49 UTC (permalink / raw)
To: David Miller; +Cc: netdev, gospo, sassmann
[-- Attachment #1: Type: text/plain, Size: 459 bytes --]
On Mon, 2014-01-06 at 13:26 -0500, David Miller wrote:
> From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> Date: Mon, 6 Jan 2014 04:30:21 -0800
>
> > This series contains updates to i40e only.
> ...
> > git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
>
> Pulled, please make sure the coding style feedback does actually
> get addressed.
>
> Thanks Jeff.
Yes, I will make sure it is in one of the upcoming series.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-01-06 18:26 ` David Miller
2014-01-06 18:49 ` Jeff Kirsher
@ 2014-01-06 20:14 ` Jeff Kirsher
1 sibling, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2014-01-06 20:14 UTC (permalink / raw)
To: David Miller, Sergei Shtylyov; +Cc: netdev, gospo, sassmann
[-- Attachment #1: Type: text/plain, Size: 500 bytes --]
On Mon, 2014-01-06 at 13:26 -0500, David Miller wrote:
> From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> Date: Mon, 6 Jan 2014 04:30:21 -0800
>
> > This series contains updates to i40e only.
> ...
> > git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
>
> Pulled, please make sure the coding style feedback does actually
> get addressed.
>
> Thanks Jeff.
Just to be clear, this coding style will be fixed in patch 13 of the
next series I am sending out.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2014-01-07 9:32 Jeff Kirsher
0 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2014-01-07 9:32 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to i40e only.
Anjali adds more functionality to debugfs to assist development and
testing of admin queue commands.
Greg makes sure broadcast promiscuous is disabled by default, otherwise
VLAN tagged packets out of the assigned VLAN domain are received. Also
provides a fix when the 8021q driver is loaded, so that VLAN 0 tagged
packets are accepted so that upper layers can interpret the priority
bits. Then provides a fix to let the VF to request the PF to set its
already assigned MAC address without generating an error. Greg also
adds helper functions to enable or disable internal switch loopback
when VFs are created or destroyed via the sysfs interface.
Shannon provides most of the changes, where he adds code to ensure
that the hardware waits to make sure that the firmware is ready as well
after reset. Also updates the code to use the new features in the
firmware. Provides a fix while in MFP mode where resources are
reduced, so use a smaller range of test registers than when in SFP mode.
Moves the PF ID initialization code to earlier in the driver
initialization function since a few operations need the information
before the first PF reset is called. Shannon adds a check for MAC
type before reading anything from the registers to ensure we dealing
with the correct MAC type. Then reworks Shadow RAM read word/buffer
functions as to not block whole NVM resources for SR read operations.
Mitch lastly provides a fix to correctly setup ARQ descriptors in
the cleanup code.
Catherine bumps the driver version due to all the recent changes.
The following are changes since commit 83111e7fe85f2dc8b61e463c71b971f4998d8e53:
netfilter: Fix build failure in nfnetlink_queue_core.c.
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Anjali Singhai Jain (1):
i40e: Expose AQ debugfs hooks
Catherine Sullivan (1):
i40e: Bump version
Greg Rose (4):
i40e: Do not enable broadcast promiscuous by default
i40e: Stop accepting any VLAN tag on VLAN 0 filter set
i40e: Allow VF to set already assigned MAC address
i40e: Enable/Disable PF switch LB on SR-IOV configure changes
Kamil Krawczyk (1):
i40e: remove redundant AQ enable
Mitch Williams (1):
i40e: correctly setup ARQ descriptors
Shannon Nelson (7):
i40e: Add code to wait for FW to complete in reset path
i40e: update firmware api to 1.1
i40e: Reduce range of interrupt reg in reg test
i40e: move PF ID init from PF reset to SC init
i40e: check MAC type before any REG access
i40e: rework shadow ram read functions
i40e: whitespace paren and comment tweaks
drivers/net/ethernet/intel/i40e/i40e_adminq.c | 27 ++---
drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h | 126 +++++++++++++++------
drivers/net/ethernet/intel/i40e/i40e_common.c | 51 ++++++---
drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 112 ++++++++++++++++++
drivers/net/ethernet/intel/i40e/i40e_diag.c | 6 +-
drivers/net/ethernet/intel/i40e/i40e_main.c | 29 ++---
drivers/net/ethernet/intel/i40e/i40e_nvm.c | 67 +++--------
drivers/net/ethernet/intel/i40e/i40e_register.h | 22 ++++
drivers/net/ethernet/intel/i40e/i40e_type.h | 11 +-
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 100 +++++++++++++---
10 files changed, 395 insertions(+), 156 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2014-01-09 12:52 Jeff Kirsher
2014-01-09 20:13 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2014-01-09 12:52 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to i40e only.
Anjali provides a fix where interrupts were not being re-enabled on ICR0
even though they were auto masked by hardware. Then provides a fix to
cleanup RSS initialization because it was doing some extra work, so
remove the extra work and any bugs it created when managing number of
queues. Since hardware requires a full packet template to be pointed to
when adding hardware flow filters, add the template and use it for
programming filters.
Jesse provides a fix to replace the use of driver specific defines with
kernel ETH_ALEN defines. Then disables packet split because with the
use of GRO, we do not need the extra bus overhead. Fixes spelling
error in code comment.
Kamil provides a fix for the driver where the hardware expects the MAC
address in a very specific format and the driver was filing the data
incorrectly.
Mitch provides a fix to resolve a panic on reset by adding checks to
VSI->rx_rings. Then shortens alloc_rx_buff_failed and
alloc_rx_page_failed variables since both part of an RX specific
structure so just remove the _rx part of the name. Then fixes
badly formatted lines, long lines and mis-formatted lines.
Shannon provides a fix to call AQ to release any reservation held by this
PF on the NVM resource lock on startup, in order to clear anything that
might have been left over from a previous run. Then removes interrupt on
AQ error since nearly everything we do is synchronous, using the
interrupt-on-error bit is unnecessary and causing unneeded interrupts.
Adds code to handle the ability to send messages among the physical
function interfaces by the admin queue.
Catherine sets the MFP flag earlier in software init and uses that flag
to decide if other hardware work-arounds are required which turns
off flow director in MFP mode.
The following are changes since commit 54b553e2c16001d13e0186cad2531764065f9a1b:
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Anjali Singhai Jain (2):
i40e: Re-enable interrupt on ICR0
i40e: Cleanup reconfig rss path
Catherine Sullivan (1):
i40e: Turn flow director off in MFP mode
Greg Rose (2):
i40e: Fix GPL header
i40e: add a comment on barrier and fix panic on reset
Jesse Brandeburg (4):
i40e: use kernel specific defines
i40e: disable packet split
i40e: fix spelling errors
i40e: Add a dummy packet template
Kamil Krawczyk (1):
i40e: Fix MAC format in Write MAC address AQ cmd
Mitch Williams (2):
i40e: shorten wordy fields
i40e: trivial: formatting and checkpatch fixes
Shannon Nelson (3):
i40e: release NVM resource reservation on startup
i40e: remove interrupt on AQ error
i40e: accept pf to pf adminq messages
drivers/net/ethernet/intel/i40e/Makefile | 7 +--
drivers/net/ethernet/intel/i40e/i40e.h | 7 +--
drivers/net/ethernet/intel/i40e/i40e_adminq.c | 12 ++--
drivers/net/ethernet/intel/i40e/i40e_adminq.h | 7 +--
drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h | 7 +--
drivers/net/ethernet/intel/i40e/i40e_alloc.h | 7 +--
drivers/net/ethernet/intel/i40e/i40e_common.c | 14 +++--
drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 13 ++---
drivers/net/ethernet/intel/i40e/i40e_diag.c | 7 +--
drivers/net/ethernet/intel/i40e/i40e_diag.h | 7 +--
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 33 ++++++++---
drivers/net/ethernet/intel/i40e/i40e_hmc.c | 7 +--
drivers/net/ethernet/intel/i40e/i40e_hmc.h | 7 +--
drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c | 7 +--
drivers/net/ethernet/intel/i40e/i40e_lan_hmc.h | 7 +--
drivers/net/ethernet/intel/i40e/i40e_main.c | 68 +++++++++++-----------
drivers/net/ethernet/intel/i40e/i40e_nvm.c | 7 +--
drivers/net/ethernet/intel/i40e/i40e_osdep.h | 7 +--
drivers/net/ethernet/intel/i40e/i40e_prototype.h | 7 +--
drivers/net/ethernet/intel/i40e/i40e_register.h | 7 +--
drivers/net/ethernet/intel/i40e/i40e_status.h | 7 +--
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 44 +++++++-------
drivers/net/ethernet/intel/i40e/i40e_txrx.h | 11 ++--
drivers/net/ethernet/intel/i40e/i40e_type.h | 15 ++---
drivers/net/ethernet/intel/i40e/i40e_virtchnl.h | 11 ++--
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 10 ++--
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h | 7 +--
27 files changed, 176 insertions(+), 174 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-01-09 12:52 Jeff Kirsher
@ 2014-01-09 20:13 ` David Miller
0 siblings, 0 replies; 58+ messages in thread
From: David Miller @ 2014-01-09 20:13 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 9 Jan 2014 04:52:09 -0800
> This series contains updates to i40e only.
...
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Pulled, thanks Jeff.
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2014-03-08 9:25 Jeff Kirsher
2014-03-08 23:50 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2014-03-08 9:25 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to e1000e, ixgbevf and igb.
Majority of this series contains fixes and cleanups to e1000e,
most notably are:
Todd provides a fix to PTP in e1000e which adds a lock in e1000e_phc_adjfreq
to prevent concurrent changes to TIMINCA and SYSTIMH/L. Then provides an
igb fix to use ARRAY_SIZE for array size calculation.
David provides the remaining e1000e which contain:
- cleanup of pointer references that are no longer used
- fix an issue on systems with Management Engine enabled with the
ethernet cable unplugged
- fix an issue on 82579 where enabling EEE LPI sooner than one second
after link up causes link issues on some switches
- refactor the power management flows to prevent the suspend path from
being executed twice when hibernating
- refactor the runtime power management to fix interfering with the
functionality of Energy Efficient Ethernet when enabled and to fix
the device from repeatedly flip between suspend and resume with the
interface administratively downed
- enable the feature PHY Ultra Low Power Mode which is a power saving
feature that reduces the power consumption of the PHY when a cable is
not connected
- fix the ethtool offline tests for 82579 parts
- fix SHRA register access for 82579 parts which was introduced by
previous commit c3a0dce35af0 "e1000e: fix overrun of PHY RAR array"
Florian provides a fix for ixgbevf where skb->pkt_type was being checked
like a bitmask, but it is not a bitmask.
Fix an issue reported by Stephen Hemminger where there was a warning
about code defined but never used if IGB_HWMON is not defined.
The following are changes since commit 37147652cfaa20a87ead9bb04aec1834b40c5c97:
6lowpan: reassembly: fix return of init function
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
David Ertman (11):
e1000e: Cleanup unecessary references
e1000e: Resolve issues with Management Engine (ME) briefly blocking
PHY resets
e1000e: Fix 82579 sets LPI too early.
e1000e: Cleanup - Update GPL header and Copyright
e1000e: Add missing branding strings in ich8lan.c
e1000e: Refactor PM flows
e1000e Refactor of Runtime Power Management
e1000e: Feature Enable PHY Ultra Low Power Mode (ULP)
e1000e: Fix not generating an error on invalid load parameter
e1000e: Fix ethtool offline tests for 82579 parts
e1000e: Fix SHRA register access for 82579
Florian Fainelli (1):
ixgbevf: fix skb->pkt_type checks
Jeff Kirsher (1):
igb: fix warning if !CONFIG_IGB_HWMON
Todd Fujinaka (2):
e1000e: PTP lock in e1000e_phc_adjustfreq
igb: fix array size calculation
drivers/net/ethernet/intel/e1000e/80003es2lan.c | 47 +--
drivers/net/ethernet/intel/e1000e/80003es2lan.h | 47 +--
drivers/net/ethernet/intel/e1000e/82571.c | 47 +--
drivers/net/ethernet/intel/e1000e/82571.h | 47 +--
drivers/net/ethernet/intel/e1000e/Makefile | 7 +-
drivers/net/ethernet/intel/e1000e/defines.h | 55 ++-
drivers/net/ethernet/intel/e1000e/e1000.h | 50 ++-
drivers/net/ethernet/intel/e1000e/ethtool.c | 63 ++--
drivers/net/ethernet/intel/e1000e/hw.h | 55 +--
drivers/net/ethernet/intel/e1000e/ich8lan.c | 427 ++++++++++++++++++----
drivers/net/ethernet/intel/e1000e/ich8lan.h | 72 ++--
drivers/net/ethernet/intel/e1000e/mac.c | 47 +--
drivers/net/ethernet/intel/e1000e/mac.h | 47 +--
drivers/net/ethernet/intel/e1000e/manage.c | 47 +--
drivers/net/ethernet/intel/e1000e/manage.h | 47 +--
drivers/net/ethernet/intel/e1000e/netdev.c | 286 +++++++++------
drivers/net/ethernet/intel/e1000e/nvm.c | 47 +--
drivers/net/ethernet/intel/e1000e/nvm.h | 47 +--
drivers/net/ethernet/intel/e1000e/param.c | 53 ++-
drivers/net/ethernet/intel/e1000e/phy.c | 47 +--
drivers/net/ethernet/intel/e1000e/phy.h | 47 +--
drivers/net/ethernet/intel/e1000e/ptp.c | 52 ++-
drivers/net/ethernet/intel/e1000e/regs.h | 48 ++-
drivers/net/ethernet/intel/igb/e1000_82575.c | 6 +-
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 3 +-
25 files changed, 1003 insertions(+), 738 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-03-08 9:25 Jeff Kirsher
@ 2014-03-08 23:50 ` David Miller
2014-03-09 0:10 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: David Miller @ 2014-03-08 23:50 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Sat, 8 Mar 2014 01:25:26 -0800
> This series contains updates to e1000e, ixgbevf and igb.
...
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Pulled, thanks a lot Jeff, and again welcome back.
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-03-08 23:50 ` David Miller
@ 2014-03-09 0:10 ` David Miller
2014-03-09 1:12 ` Jeff Kirsher
0 siblings, 1 reply; 58+ messages in thread
From: David Miller @ 2014-03-09 0:10 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: David Miller <davem@davemloft.net>
Date: Sat, 08 Mar 2014 18:50:08 -0500 (EST)
> From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> Date: Sat, 8 Mar 2014 01:25:26 -0800
>
>> This series contains updates to e1000e, ixgbevf and igb.
> ...
>> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
>
> Pulled, thanks a lot Jeff, and again welcome back.
Jeff, please get this new warning fixed, thanks:
drivers/net/ethernet/intel/i40e/i40e_ethtool.c: In function ‘i40e_del_fdir_entry’:
drivers/net/ethernet/intel/i40e/i40e_ethtool.c:1441:18: warning: unused variable ‘pf’ [-Wunused-variable]
struct i40e_pf *pf = vsi->back;
^
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-03-09 0:10 ` David Miller
@ 2014-03-09 1:12 ` Jeff Kirsher
0 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2014-03-09 1:12 UTC (permalink / raw)
To: David Miller; +Cc: netdev, gospo, sassmann
[-- Attachment #1: Type: text/plain, Size: 913 bytes --]
On Sat, 2014-03-08 at 19:10 -0500, David Miller wrote:
> From: David Miller <davem@davemloft.net>
> Date: Sat, 08 Mar 2014 18:50:08 -0500 (EST)
>
> > From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> > Date: Sat, 8 Mar 2014 01:25:26 -0800
> >
> >> This series contains updates to e1000e, ixgbevf and igb.
> > ...
> >> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
> master
> >
> > Pulled, thanks a lot Jeff, and again welcome back.
>
> Jeff, please get this new warning fixed, thanks:
>
> drivers/net/ethernet/intel/i40e/i40e_ethtool.c: In function
> ‘i40e_del_fdir_entry’:
> drivers/net/ethernet/intel/i40e/i40e_ethtool.c:1441:18: warning:
> unused variable ‘pf’ [-Wunused-variable]
> struct i40e_pf *pf = vsi->back;
Yeah, I noticed that as well. I have a patch in my queue already to
resolve that, should be in my next pull request. Thanks Dave!
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2014-03-20 8:32 Jeff Kirsher
2014-03-20 18:20 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2014-03-20 8:32 UTC (permalink / raw)
To: davem
Cc: Jeff Kirsher, netdev, gospo, sassmann, emil.s.tantilov, asharma,
donald.c.skidmore
This series contains updates to e100, igb, igbvf, ixgbe and ixgbevf.
Stefan adds a igb patch to enable the ability strip VLAN header information
for packets bound for a VM on i350 hardware.
Joe Perches provides patches for e100, igb, igbvf, ixgbe and ixgbevf to
convert the use of __constant_<foo> to just <foo> to align with the rest
of the kernel.
Don provides two fixes for ixgbe, first resolves a link issue with DA
cables where we were not always freeing the firmware/software semaphore
after grabbing it. Second stops caching whether the management firmware
was enabled, however since this is not static, we really need to verify
with each check.
Jacob provides six fixes/cleanups for ixgbe, most notably, correct
the stop_mac_link_on d3() to check the Core Clock Disable bit before
stopping link and to fully check to see if manage firmware is running or
could be enabled before bringing down the link. Fix flow control
auto-negation for KR/KX/K4 interfaces, since setting up MAC link, the
cached autoc value and current autoc value were being incorrectly used to
determine whether link reset is required.
Emil provides a fix for ixgbe where there was a chance for aggressive
start_ndo_zmit() callers to sneak packets between enabling the Tx queues
and the link coming up. To resolve this, move the call to enable Tx
queues to after the link is established.
The following are changes since commit a9baf10aafe7001501189099df4b91f90739e182:
qeth: Fix IP version detection for VLAN traffic
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Don Skidmore (2):
ixgbe: fix errors related to protected AUTOC calls
ixgbe: Stop cacheing if the MNG FW enabled
Emil Tantilov (1):
ixgbe: enable tx queues after link up
Jacob Keller (6):
ixgbe: check Core Clock Disable bit
ixgbe: fix ixgbe_stop_mac_link_on_d3_82599 to check mng correctly
ixgbe: fix ixgbe_setup_mac_link_82599 autoc variables
ixgbe: remove unused media type
ixgbe: use ixgbe_read_pci_cfg_word
ixgbe: clean up ixgbe_atr_compute_perfect_hash_82599
Joe Perches (5):
e100: Convert uses of __constant_<foo> to <foo>
igb: Convert uses of __constant_<foo> to <foo>
igbvf: Convert uses of __constant_<foo> to <foo>
ixgbe: Convert uses of __constant_<foo> to <foo>
ixgbevf: Convert uses of __constant_<foo> to <foo>
Stefan Assmann (1):
igb: enable VLAN stripping for VMs with i350
drivers/net/ethernet/intel/e100.c | 4 +-
drivers/net/ethernet/intel/igb/e1000_82575.h | 4 +
drivers/net/ethernet/intel/igb/e1000_regs.h | 1 +
drivers/net/ethernet/intel/igb/igb_main.c | 19 ++-
drivers/net/ethernet/intel/igbvf/netdev.c | 4 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c | 1 -
drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c | 170 +++++-----------------
drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | 24 +--
drivers/net/ethernet/intel/ixgbe/ixgbe_common.h | 1 +
drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c | 8 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 68 +++++----
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.h | 4 -
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 6 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c | 1 -
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 4 +-
15 files changed, 113 insertions(+), 206 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-03-20 8:32 Jeff Kirsher
@ 2014-03-20 18:20 ` David Miller
0 siblings, 0 replies; 58+ messages in thread
From: David Miller @ 2014-03-20 18:20 UTC (permalink / raw)
To: jeffrey.t.kirsher
Cc: netdev, gospo, sassmann, emil.s.tantilov, asharma,
donald.c.skidmore
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 20 Mar 2014 01:32:50 -0700
> This series contains updates to e100, igb, igbvf, ixgbe and ixgbevf.
...
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Pulled, thanks Jeff.
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2014-03-26 18:03 Jeff Kirsher
0 siblings, 0 replies; 58+ messages in thread
From: Jeff Kirsher @ 2014-03-26 18:03 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to e1000e, igb, i40e and i40evf
Anjali provides i40e fix to remove the ATR filter on RST as well as FIN
packets. Cleans up add_del_fdir() because it was used and implemented
only for the add, so change the name and drop a parameter. Adds the
ability to drop a flow if we wanted to and adds a flow director
message level to be used for flow director specific messages. Provide
a fallback debug flow for i40e if the reset fails or the firmware is
unresponsive.
Mitch fixes an issue on i40evf where the Tx watchdog handler was causing
an oops when sending an admin queue message to request a reset because
the admin queue functions use spinlocks.
Greg provides a change to i40e to make the alloc and free queue vector
calls orthogonal.
Shannon fixes i40e to verify the eeprom checksum and firmware CRC status
bits, and shutdown the driver if they fail. This change stops the
processing of traffic, but does not kill the PF netdev so that the
NVMUpdate process still has a chance at fixing the image. Also provides
a fix to make sure the VSI has a netdev before trying to use it in
the debugfs netdev_ops commands.
Jakub Kicinski provides patches for e1000e and igb to fix a number issues
found in the PTP code.
The following are changes since commit e74dbb73271c5c3e822af3aa66c9a28bf7dbfbfd:
Merge branch 'bnx2x-next'
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Anjali Singhai Jain (6):
i40e: Delete ATR filter on RST
i40e: Cleanup in FDIR SB ethtool code
i40e: Add functionality for FD SB to drop packets
i40e/i40evf: Add an FD message level
i40e: Use DEBUG_FD message level for an FD message
i40e: Add a fallback debug flow for the driver
Greg Rose (1):
i40e: Make the alloc and free queue vector calls orthogonal
Jakub Kicinski (4):
e1000e: add timeout for TX HW time stamping work
e1000e: remove redundant if clause from PTP work
igb: never generate both software and hardware timestamps
igb: fix race conditions on queuing skb for HW time stamp
Jesse Brandeburg (1):
i40evf: remove double space after return
Mitch Williams (1):
i40evf: fix oops in watchdog handler
Shannon Nelson (2):
i40e: eeprom integrity check on load and empr
i40e: check for netdev before debugfs use
drivers/net/ethernet/intel/e1000e/e1000.h | 2 +
drivers/net/ethernet/intel/e1000e/ethtool.c | 1 +
drivers/net/ethernet/intel/e1000e/netdev.c | 10 +-
drivers/net/ethernet/intel/i40e/i40e.h | 2 +
drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 120 ++++++++++++---------
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 39 ++++---
drivers/net/ethernet/intel/i40e/i40e_main.c | 72 ++++++++++---
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 14 ++-
drivers/net/ethernet/intel/i40e/i40e_type.h | 1 +
drivers/net/ethernet/intel/i40evf/i40e_prototype.h | 2 +-
drivers/net/ethernet/intel/i40evf/i40e_type.h | 1 +
drivers/net/ethernet/intel/i40evf/i40evf.h | 1 +
drivers/net/ethernet/intel/i40evf/i40evf_main.c | 10 +-
drivers/net/ethernet/intel/igb/igb.h | 3 +-
drivers/net/ethernet/intel/igb/igb_main.c | 7 +-
drivers/net/ethernet/intel/igb/igb_ptp.c | 3 +
16 files changed, 186 insertions(+), 102 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2014-04-28 13:52 Jeff Kirsher
2014-04-28 18:53 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2014-04-28 13:52 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to i40e and i40evf.
Jacob provides a i40e patch to remove ptp_tx_work() because it conflicts
with the interrupt-based handler and will cause spurious warning messages
to be displayed in the kernel log. Since the hardware can properly trigger
an interrupt, we do not need to poll for an available timestamp in a work
queue any more.
Greg provides two patches for i40e, first to retain the MAC filter list
when changing a port VLAN. Second fixes an issue where the function to
set the VF MAC address was not taking the port VLAN filter into account
when setting/clearing/resetting the VF's host administered MAC address.
Mitch provides three patches for i40evf, first adds support for getting
and setting RSS hashing options, RSS LUT entries, and getting the number
of device channels from ethtool. Fixes a panic that woudl occur in the VF
if the PF driver failed or was removed from the host kernel.
Shannon adds driver version string to the driver version command so that
can be passed down through the firmware to low-level NC-SI functions.
Neerav provides several patches, first redistributes queue vectors after
DCB reconfiguration because the total number of queues that are configured
for a VSI may change based on a change in the total number of TCs enabled
as a result of a change in the DCB configuration based on DCBX. Second,
allows the driver probe to continue when querying DCB config fails.
Lastly, provides changes to retrieve and store missing link config
information that was not being cached in the struct i40e_link_status.
Kevin provides a couple of patches, first to change a int variable type
to u16 to avoid a typecheck failure. Second to update a function
parameters to remove an argument which is no longer used.
The following are changes since commit a49eb42a341f1df8fa0f9dc4449f9dd4a3234a2f:
sched, act: allow to clear all actions as well
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Anjali Singhai Jain (2):
i40e: Do not enable NTUPLE feature control in MFP mode
i40e: Do not expose fd-sb commands from debugfs
Catherine Sullivan (1):
i40e/i40evf: Bump build version
Greg Rose (2):
i40e: Retain MAC filters when changing port VLAN
i40e: Use port VLAN in MAC/VLAN filter configuration
Jacob Keller (1):
i40e: remove ptp_tx_work timestamp work item
Kevin Scott (2):
i40e: Change variable type to avoid typecheck failure
i40e: Update function formal parameters
Mitch A Williams (1):
i40evf: support ethtool RSS options
Mitch Williams (2):
i40evf: fix panic on PF driver fail
i40evf: remove debugging message
Neerav Parikh (3):
i40e: Redistribute queue vectors after DCB reconfiguration
i40e: Don't stop driver probe when querying DCB config fails
i40e/i40evf: Retrieve and store missing link config information
Shannon Nelson (1):
i40e/i40evf: add driver version string to driver version command
drivers/net/ethernet/intel/i40e/i40e.h | 2 -
drivers/net/ethernet/intel/i40e/i40e_common.c | 21 +-
drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 6 -
drivers/net/ethernet/intel/i40e/i40e_main.c | 19 +-
drivers/net/ethernet/intel/i40e/i40e_prototype.h | 4 +-
drivers/net/ethernet/intel/i40e/i40e_ptp.c | 36 ---
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 -
drivers/net/ethernet/intel/i40e/i40e_type.h | 4 +
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 11 +-
drivers/net/ethernet/intel/i40evf/i40e_type.h | 4 +
drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c | 316 +++++++++++++++++++++
drivers/net/ethernet/intel/i40evf/i40evf_main.c | 15 +-
12 files changed, 373 insertions(+), 68 deletions(-)
--
1.9.0
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-04-28 13:52 Jeff Kirsher
@ 2014-04-28 18:53 ` David Miller
0 siblings, 0 replies; 58+ messages in thread
From: David Miller @ 2014-04-28 18:53 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Mon, 28 Apr 2014 06:52:23 -0700
> This series contains updates to i40e and i40evf.
Pulled, thanks a lot Jeff.
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2014-05-21 12:00 Jeff Kirsher
2014-05-22 16:05 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2014-05-21 12:00 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to i40e and i40evf.
Shannon makes minor changes to the AdminQ interface to bring it up to
date. Removes the hard coding of stats struct size in ethtool, in prep
for adding data fields which are configuration dependent.
Catherine removes some unused and unneeded PCI bus defines.
Jesse fixes the copyright headers and finishes up the removal of the PTP
Tx work functionality which allows us to rely on the Tx timesync interrupt.
Mitch provides a number of fixes and cleanups for i40e/i40evf based on
suggestions from Ben Hutchings. First is to use a macro parameter for
ethtool stats instead of just assuming that a valid netdev variable
exists. Second is not to tell ethtool that the VF can do 10GbaseT, when
it really has no idea what its link speed is, so set the supported value
to 0 instead. Make the ethtool_ops structure constant since it is
extremely unlikely to change at runtime. Ethtool consistently reports
0 values for our ITR settings because we never actually use them, so
fix this by setting the default values to the specified default values.
Greg avoids a compile error by wrapping the call to i40e_alloc_vfs() in
CONFIG_PCI_IOV because the function itself is wrapped in the same
conditional compile block.
Alexander Gordeev updates the driver to use the new pci_enable_msi_range()
and pci_enable_msix_range() or pci_enable_msi_exact() and
pci_enable_msix_exact().
Jean Sacren provides a fix where the wrong error code was being passed to
i40e_open().
The following are changes since commit b6052af61a9e0dee236bcf4c69843126c0d28e4f:
Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Alexander Gordeev (1):
i40evf: Use pci_enable_msix_range() instead of pci_enable_msix()
Catherine Sullivan (1):
i40evf: Remove unused defines
Greg Rose (1):
i40e: Check PCI_IOV config to avoid compile error
Jean Sacren (1):
i40e: fix passing wrong error code to i40e_open()
Jesse Brandeburg (2):
i40evf: Fix the headers and update copyright year.
i40e: remove Tx work for ptp
Mitch Williams (7):
i40e: add required include
i40evf: Use macro param for ethtool stats
i40evf: don't lie to ethtool
i40evf: make ethtool_ops const
i40e/i40evf: set proper default for ITR registers
i40e/i40evf: control auto ITR through ethtool
i40e: Don't disable SR-IOV when VFs are assigned
Shannon Nelson (2):
i40evf: Update AdminQ interface
i40e: remove hardcode of stats struct size in ethtool
drivers/net/ethernet/intel/i40e/i40e.h | 4 --
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 63 +++++++---------
drivers/net/ethernet/intel/i40e/i40e_main.c | 8 ++-
drivers/net/ethernet/intel/i40e/i40e_ptp.c | 1 -
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 1 +
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 11 ++-
drivers/net/ethernet/intel/i40evf/Makefile | 5 +-
drivers/net/ethernet/intel/i40evf/i40e_adminq.c | 5 +-
drivers/net/ethernet/intel/i40evf/i40e_adminq.h | 5 +-
.../net/ethernet/intel/i40evf/i40e_adminq_cmd.h | 27 ++++---
drivers/net/ethernet/intel/i40evf/i40e_alloc.h | 5 +-
drivers/net/ethernet/intel/i40evf/i40e_common.c | 5 +-
drivers/net/ethernet/intel/i40evf/i40e_hmc.h | 5 +-
drivers/net/ethernet/intel/i40evf/i40e_lan_hmc.h | 5 +-
drivers/net/ethernet/intel/i40evf/i40e_osdep.h | 5 +-
drivers/net/ethernet/intel/i40evf/i40e_prototype.h | 5 +-
drivers/net/ethernet/intel/i40evf/i40e_register.h | 5 +-
drivers/net/ethernet/intel/i40evf/i40e_status.h | 5 +-
drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 3 +
drivers/net/ethernet/intel/i40evf/i40e_txrx.h | 5 +-
drivers/net/ethernet/intel/i40evf/i40e_type.h | 12 +---
drivers/net/ethernet/intel/i40evf/i40e_virtchnl.h | 5 +-
drivers/net/ethernet/intel/i40evf/i40evf.h | 3 +
drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c | 84 +++++++++++-----------
drivers/net/ethernet/intel/i40evf/i40evf_main.c | 40 +++++------
.../net/ethernet/intel/i40evf/i40evf_virtchnl.c | 3 +
26 files changed, 179 insertions(+), 146 deletions(-)
--
1.9.0
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-05-21 12:00 Jeff Kirsher
@ 2014-05-22 16:05 ` David Miller
0 siblings, 0 replies; 58+ messages in thread
From: David Miller @ 2014-05-22 16:05 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Wed, 21 May 2014 05:00:58 -0700
> This series contains updates to i40e and i40evf.
Pulled, thanks Jeff.
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2014-05-27 9:12 Jeff Kirsher
2014-05-28 16:42 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2014-05-27 9:12 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to e1000, e1000e, ixgbe and i40evf.
Emil provides a fix for ixgbe so that non-fiber devices with MNG FW enabled
are able to link at 100Mbps.
Jacob provides several changes for ixgbe, most of which are PTP related.
Renames ixgbe_ptp_enable() to ixgbe_ptp_feature_enable() to better reflect
the functions purpose. Extracts the hardware setup logic for the PTP
hardware bits from the ixgbe_ptp_set_ts_config() to enable future work for
the ixgbe_ptp_reset(). Maintain the hwstamp configuration through a reset
and extracts the creation of the PTP clock device from ptp_init() in order
to properly handle a suspend/resume cycle and only calls it if we don't
already have a ptp_clock pointer.
David provides a patch to expend the e1000e driver to turn on unicast
PROMISC when there is failure to write to a shared receive address register.
The fix update_phy_task() for 82579 is expanded to include newer PHYs as well
so that the dev_spec->eee_lp_ability has the correct value when going into
SX states.
Todd provides a e1000e fix an errata for 82574/82583 where it is possible
bad bits are read from SYSTIMH/L so check to see that the time is
incrementing at a reasonable rate and is a multiple of the time incremental
value. Removes a redundant igb PHY power down register write.
Andi Kleen out of lines two write functions for e1000e to save 30k text size.
Tobias Klauser converts the e1000 and i40evf drivers to use the
is_broadcast_ether_addr() and is_multicast_ether_addr().
The following are changes since commit 3bea8eddfebe1c61ea824dd2880d4368791edc1f:
Merge branch 'net-sysfs-docs'
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Andi Kleen (1):
e1000e: Out of line __ew32_prepare/__ew32
David Ertman (3):
e1000e: Failure to write SHRA turns on PROMISC mode
e1000e: Cleanup parenthesis around return value
e1000e: Fix expand setting EEE link info to all affected parts
Emil Tantilov (1):
ixgbe: fix linking at 100Mbps on copper devices with MNG FW enabled
Jacob Keller (6):
ixgbe: rename ixgbe_ptp_enable to ixgbe_ptp_feature_enable
ixgbe: extract the hardware setup from the ixgbe_ptp_set_ts_config
ixgbe: allow ixgbe_ptp_reset to maintain current hwtstamp config
ixgbe: extract PTP clock device from ptp_init
ixgbe: separate the PTP suspend and stop actions
ixgbe: avoid duplicate code in suspend and stop paths
Tobias Klauser (2):
e1000: Use is_broadcast_ether_addr/is_multicast_ether_addr helpers
i40evf: Use is_multicast_ether_addr helper
Todd Fujinaka (2):
e1000e: 82574/82583 TimeSync errata for SYSTIM read
igb: remove redundant PHY power down register write
drivers/net/ethernet/intel/e1000/e1000_hw.c | 4 +-
drivers/net/ethernet/intel/e1000e/80003es2lan.c | 1 +
drivers/net/ethernet/intel/e1000e/82571.c | 1 +
drivers/net/ethernet/intel/e1000e/e1000.h | 33 +----
drivers/net/ethernet/intel/e1000e/hw.h | 3 +-
drivers/net/ethernet/intel/e1000e/ich8lan.c | 61 +++++++--
drivers/net/ethernet/intel/e1000e/mac.c | 9 +-
drivers/net/ethernet/intel/e1000e/mac.h | 3 +-
drivers/net/ethernet/intel/e1000e/netdev.c | 69 +++++++++-
drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 +-
drivers/net/ethernet/intel/igb/e1000_phy.c | 14 --
drivers/net/ethernet/intel/igb/e1000_phy.h | 1 -
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 1 +
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 29 +++--
drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | 163 ++++++++++++++++++------
15 files changed, 277 insertions(+), 117 deletions(-)
--
1.9.3
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-05-27 9:12 Jeff Kirsher
@ 2014-05-28 16:42 ` David Miller
0 siblings, 0 replies; 58+ messages in thread
From: David Miller @ 2014-05-28 16:42 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Tue, 27 May 2014 02:12:16 -0700
> This series contains updates to e1000, e1000e, ixgbe and i40evf.
Pulled, thanks a lot Jeff.
^ permalink raw reply [flat|nested] 58+ messages in thread
* [net-next 00/15][pull request] Intel Wired LAN Driver Updates
@ 2014-05-29 15:10 Jeff Kirsher
2014-05-31 0:53 ` David Miller
0 siblings, 1 reply; 58+ messages in thread
From: Jeff Kirsher @ 2014-05-29 15:10 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to i40e and i40evf.
Kevin updates the i40e and i40evf driver i40e_check_asq_alive() to ensure
the length register offset is non-zero which indicates that the software
has initialized the admin queue. Also removes PCTYPE definitions which are
now reserved.
Mitch enables descriptor prefetch for rings belonging to the virtual function.
Also configures the VF minimum transmit rate to 50 Mbps rather than 0 which was
be interpreted as no limit at all. Mitch found in order for the VF to achieve
its programmed transmit rate, we need to set the max credit value to 4.
Lastly fixes a Tx hang and firmware crash that happens after setting the MTU
on a VF by not using the RESETTING state during reinit, this is because
the RESETTING state means that a catastrophic hardware bad thing is happening
and the driver needs to tiptoe around and not use the admin queue or registers.
A reinit is no big deal and we can use the admin queue (and we should) so
do not set the state to RESETTING during reinit to resolve the bug.
Akeem changes the declaration of the transmit and receive rings inside
several loops to eliminate declaring the same ring every time for the
duration of the loop and declares them just once before the loop. Also fixes
the driver to clear the recovery pending bit if pf_reset fails instead of
falling through the setup process.
Anjali makes a change based on feedback from Ben Hutchings that cmd->data
needs to be reported in ETHTOOL_GRXCLSRLCNT and use a helper function to
calculate the total filter count.
Jesse removes storm control since the storm control features are not apart
of the hardware and were mistakenly left in the code.
Greg changes tx_lpi_status and rx_lpi_status from bool to u32 to avoid
sparse errors.
Shannon adds the clear_pxe AdminQ API call to tell the firmware that the
driver is taking over from PXE. In addition, relaxes the firmware API
check to allow more flexibility in handling newer NICs and NVMs in the field.
Vasu ensures that FCoE is disabled for MFP modes since it is not supported
by overriding the hardware FCoE capability.
The following are changes since commit 6623b4194459c07859d3e3196c3994fa7be5b88e:
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Akeem G Abodunrin (2):
i40e: Tx/Rx rings declaration
i40e: Clear recovery pending, if reset failed
Anjali Singhai Jain (2):
i40e: Report cmd->data in ETHTOOL_GRXCLSRLCNT instead of
ETHTOOL_GRXCLSRULE
i40e: Use the new i40e_get_fd_cnt_all function in other places
Greg Rose (1):
i40e/i40evf: Change type to u32 to avoid sparse error
Jesse Brandeburg (1):
i40e/i40evf: remove storm control
Kevin Scott (2):
i40e/i40evf: Update check for AQ aliveness
i40e/i40evf: Remove reserved PCTYPE defines
Mitch Williams (4):
i40e: enable descriptor prefetch for VFs
i40evf: don't round Tx rate down to 0
i40evf: tweak Tx rate params and de-magic-ify
i40evf: don't use RESETTING state during reinit
Shannon Nelson (2):
i40e: add clear_pxe AdminQ request
i40e: relax the firmware API version check
Vasu Dev (1):
i40: disable FCoE for MFP modes
drivers/net/ethernet/intel/i40e/i40e.h | 9 +++++
drivers/net/ethernet/intel/i40e/i40e_adminq.c | 3 +-
drivers/net/ethernet/intel/i40e/i40e_common.c | 42 +++++++++++++++++++++-
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 37 +++++++------------
drivers/net/ethernet/intel/i40e/i40e_main.c | 19 +++++-----
drivers/net/ethernet/intel/i40e/i40e_prototype.h | 2 ++
drivers/net/ethernet/intel/i40e/i40e_register.h | 4 ---
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 33 +++++++----------
drivers/net/ethernet/intel/i40e/i40e_txrx.h | 7 +---
drivers/net/ethernet/intel/i40e/i40e_type.h | 14 +++-----
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 13 +++++--
drivers/net/ethernet/intel/i40evf/i40e_common.c | 6 +++-
drivers/net/ethernet/intel/i40evf/i40e_register.h | 4 ---
drivers/net/ethernet/intel/i40evf/i40e_txrx.h | 7 +---
drivers/net/ethernet/intel/i40evf/i40e_type.h | 14 +++-----
drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 --
16 files changed, 116 insertions(+), 100 deletions(-)
--
1.9.3
^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates
2014-05-29 15:10 Jeff Kirsher
@ 2014-05-31 0:53 ` David Miller
0 siblings, 0 replies; 58+ messages in thread
From: David Miller @ 2014-05-31 0:53 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 29 May 2014 08:10:01 -0700
> This series contains updates to i40e and i40evf.
...
> The following are changes since commit 6623b4194459c07859d3e3196c3994fa7be5b88e:
> Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
> and are available in the git repository at:
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Pulled, thanks Jeff.
And, as always, thanks for the detailed cover letter.
^ permalink raw reply [flat|nested] 58+ messages in thread
end of thread, other threads:[~2014-05-31 0:53 UTC | newest]
Thread overview: 58+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-19 6:34 [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2013-12-19 6:34 ` [net-next 01/15] i40e: Suppress HMC error to Interrupt message level Jeff Kirsher
2013-12-19 6:34 ` [net-next 02/15] i40e: Populate and check pci bus speed and width Jeff Kirsher
2013-12-19 6:34 ` [net-next 03/15] i40e: add wake-on-lan support Jeff Kirsher
2013-12-19 6:34 ` [net-next 04/15] i40e: fix curly brace use and return type Jeff Kirsher
2013-12-19 6:34 ` [net-next 05/15] i40e: add set settings and pauseparam Jeff Kirsher
2013-12-19 20:42 ` Ben Hutchings
2013-12-20 18:19 ` Nelson, Shannon
2013-12-19 6:34 ` [net-next 06/15] i40e: Rx checksum offload for VXLAN Jeff Kirsher
2013-12-19 17:46 ` Or Gerlitz
2013-12-19 19:17 ` Jeff Kirsher
2013-12-19 6:34 ` [net-next 07/15] i40e: move i40e_reset_vf Jeff Kirsher
2013-12-19 6:34 ` [net-next 08/15] i40e: refactor VF reset flow Jeff Kirsher
2013-12-19 6:34 ` [net-next 09/15] i40e: remove redundant code Jeff Kirsher
2013-12-19 6:34 ` [net-next 10/15] i40e: remove chatty log messages Jeff Kirsher
2013-12-19 6:34 ` [net-next 11/15] i40e: fix error return Jeff Kirsher
2013-12-19 6:34 ` [net-next 12/15] i40e: be more informative Jeff Kirsher
2013-12-19 6:34 ` [net-next 13/15] i40e: make a define from a large constant Jeff Kirsher
2013-12-19 6:34 ` [net-next 14/15] i40e: update led set args Jeff Kirsher
2013-12-19 6:34 ` [net-next 15/15] i40e: report VF MAC addresses correctly Jeff Kirsher
2013-12-19 19:20 ` [net-next 00/15][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2013-12-19 19:47 ` David Miller
-- strict thread matches above, loose matches on Subject: below --
2014-05-29 15:10 Jeff Kirsher
2014-05-31 0:53 ` David Miller
2014-05-27 9:12 Jeff Kirsher
2014-05-28 16:42 ` David Miller
2014-05-21 12:00 Jeff Kirsher
2014-05-22 16:05 ` David Miller
2014-04-28 13:52 Jeff Kirsher
2014-04-28 18:53 ` David Miller
2014-03-26 18:03 Jeff Kirsher
2014-03-20 8:32 Jeff Kirsher
2014-03-20 18:20 ` David Miller
2014-03-08 9:25 Jeff Kirsher
2014-03-08 23:50 ` David Miller
2014-03-09 0:10 ` David Miller
2014-03-09 1:12 ` Jeff Kirsher
2014-01-09 12:52 Jeff Kirsher
2014-01-09 20:13 ` David Miller
2014-01-07 9:32 Jeff Kirsher
2014-01-06 12:30 Jeff Kirsher
2014-01-06 18:26 ` David Miller
2014-01-06 18:49 ` Jeff Kirsher
2014-01-06 20:14 ` Jeff Kirsher
2014-01-05 10:46 Jeff Kirsher
2014-01-06 1:31 ` David Miller
2013-12-12 12:40 Jeff Kirsher
2013-12-06 8:06 Jeff Kirsher
2013-12-06 19:49 ` David Miller
2013-08-21 8:23 Jeff Kirsher
2013-07-29 12:51 Jeff Kirsher
2013-04-18 23:30 Jeff Kirsher
2013-04-19 18:19 ` David Miller
2013-03-08 10:07 Jeff Kirsher
2013-03-08 17:25 ` David Miller
2013-01-11 10:23 Jeff Kirsher
2012-02-13 21:47 [net-next 00/15][pull request] Intel Wired LAN Driver updates Jeff Kirsher
2012-02-13 23:48 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).