23401 Commits

Author SHA1 Message Date
Ben Hutchings
cd38557d78 sfc: Use TX push whenever adding descriptors to an empty queue
Whenever we add DMA descriptors to a TX ring and update the ring
pointer, the TX DMA engine must first read the new DMA descriptors and
then start reading packet data.  However, all released Solarflare 10G
controllers have a 'TX push' feature that allows us to reduce latency
by writing the first new DMA descriptor along with the pointer update.
This is only useful when the queue is empty.  The hardware should
ignore the pushed descriptor if the queue is not empty, but this check
is buggy, so we must do it in software.

In order to tell whether a TX queue is empty, we need to compare the
previous transmission count (write_count) and completion count
(read_count).  However, if we do that every time we update the ring
pointer then read_count may ping-pong between the caches of two CPUs
running the transmission and completion paths for the queue.
Therefore, we split the check for an empty queue between the
completion path and the transmission path:

- Add an empty_read_count field representing a point at which the
  completion path saw the TX queue as empty.
- Add an old_write_count field for use on the completion path.
- On the completion path, whenever read_count reaches or passes
  old_write_count the TX queue may be empty.  We then read
  write_count, set empty_read_count if read_count == write_count,
  and update old_write_count.
- On the transmission path, we read empty_read_count.  If it's set, we
  compare it with the value of write_count before the current set of
  descriptors was added.  If they match, the queue really is empty and
  we can use TX push.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
2010-12-06 23:00:07 +00:00
Ben Hutchings
e506147271 sfc: Remove locking from implementation of efx_writeo_paged()
It is not necessary to serialise writes to the paged 128-bit
registers.  However, if we don't then we must always write the last
dword separately, not as part of a qword write.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
2010-12-06 22:58:41 +00:00
Ben Hutchings
1a29cc4011 sfc: Add compile-time checks for correctness of paged register writes
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
2010-12-06 22:55:33 +00:00
Ben Hutchings
494bdf1b0f sfc: Remove redundant memory barriers between MMIOs
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
2010-12-06 22:55:18 +00:00
Ben Hutchings
9f2f6cd07a sfc: Expand/correct comments on collector behaviour and function usage
Document exactly which registers and functions have special behaviour,
and why races on writes to descriptor pointers are safe.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
2010-12-06 22:55:00 +00:00
Ben Hutchings
51c56f40ef sfc: Use ACCESS_ONCE when copying efx_tx_queue::read_count
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
2010-12-06 22:54:18 +00:00
Ben Hutchings
ab28c12a8e sfc: Reorder struct efx_nic to separate fields by volatility
Place the regularly updated fields (locks, MAC stats, etc.) on a
separate cache-line from fields which are mostly constant.  This
should reduce cache misses for access to the latter on the data path.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
2010-12-06 22:53:42 +00:00
Don Skidmore
289700dbc4 ixgbe: add support for new format of PBA numbers
The new PBA format is stored as a string.  This patch allows the
driver to support both the old and new format.

Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:39:11 -08:00
Don Skidmore
dbffcb210f ixgbe: add support for 82599 FCoE SKU
Add both NIC and backplane support for FCoE enabled devices IDs.

Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:36:47 -08:00
Don Skidmore
0b077feac0 ixgbe: add WOL support for SFP+ subdevice
This patch will add wake on LAN support to the dev/sub_dev 10FB 11A9.  This
will also include ixgbe ethtool support for this device.

Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:36:46 -08:00
Don Skidmore
c6ecf39a10 ixgbe: fix link behavior for SFP+ when driver is brought down
We have had several requests to have ifconfig down command disable
the SFP+ laser and thus make link go down.  Likewise on ifconfig up
the laser would be enabled and link would come up.  This patch enables
that behavior.

Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:36:45 -08:00
Anirban Chakraborty
e4d849b811 qlcnic: Updated driver version to 5.0.13
Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:33:22 -08:00
Sritej Velaga
40839129f7 qlcnic: LICENSE file for qlcnic
Signed-off-by: Sritej Velaga <sritej.velaga@qlogic.com>
Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:33:21 -08:00
Amit Kumar Salecha
091056b2ad qlcnic: validate eswitch config values for PF
Currently driver set default eswitch configuration values for PF function,
instead of validating values sent by application.

Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:33:21 -08:00
Sucheta Chakraborty
97319a270d qlcnic: Disable loopback support
Loopback mode can not be supported in CNA mode. Removing it until FW is fixed.

Signed-off-by: Sucheta Chakraborty <sucheta.chakraborty@qlogic.com>
Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:33:20 -08:00
Ben Hutchings
7e300bc8e6 sfc: Store MAC address from NVRAM in net_device::perm_addr
For some reason we failed to make this change when perm_addr was
introduced.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:11 -08:00
Ben Hutchings
02ebc26865 sfc: Use current MAC address, not NVRAM MAC address, for WoL filter
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:10 -08:00
Steve Hodgson
4f3907e9a6 sfc: When waking a stopped tx_queue, only lock that tx_queue
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:10 -08:00
Ben Hutchings
78d4189d6b sfc: Update kernel-doc to match earlier move of Toeplitz hash key
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:09 -08:00
Ben Hutchings
cef68bde74 sfc: Move xmac_poll_required into struct falcon_nic_data
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:09 -08:00
Ben Hutchings
40641ed93c sfc: Move Falcon global event handling to falcon.c
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:08 -08:00
Ben Hutchings
4833f02a29 sfc: Move mdio_lock to struct falcon_nic_data
We only have direct access to MDIO on Falcon, so move this out of
struct efx_nic.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:08 -08:00
Ben Hutchings
4de9218025 sfc: Move SPI state to struct falcon_nic_data
We only have direct access to SPI on Falcon, so move all this state
out of struct efx_nic.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:07 -08:00
Ben Hutchings
90b7a4ee61 sfc: Remove unnecessary inclusion of various private header files
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:07 -08:00
Ben Hutchings
6a8872c54d sfc: Expose Falcon BootROM config through MTD, not ethtool
The ethtool EEPROM interface is really meant for exposing chip
configuration, not BootROM configuration.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:06 -08:00
Ben Hutchings
6c88b0b6dc sfc: Remove broken automatic fallback for invalid Falcon chip/board config
If the Falcon board config is invalid, we cannot proceed - we do not
have a valid board type to pass to falcon_probe_board(), and if we
kluge that to work with an unknown board then other initialisation
code will crash.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:05 -08:00
Steve Hodgson
18e3ee2cf9 sfc: Fix event based MCDI completion and MC REBOOT/CMDDONE ordering issue
The mcfw *never* sends CMDDONE when rebooting. Changing this so that it always
sends CMDDONE *before* REBOOT is easy on Siena, but it's not obvious that we
could guarantee to be able to implement this on future hardware.

Given this, I'm less convinced that the protocol should be changed.

To reiterate the failure mode: The driver sees this:

 issue command
 receive REBOOT event

Was that reboot event sent before the command was issued, or in
response to the command? If the former then there will be a subsequent
CMDDONE event, if the latter, then there will be no CMDDONE event.

Options to resolve this are:

 1. REBOOT always completes an outstanding mcdi request, and we set
    the credits count to ignore a subsequent CMDDONE event with
    mismatching seqno.

 2. REBOOT never completes an outstanding mcdi request. If there is
    no CMDDONE event then we rely on the mcdi timeout code to complete
    the outstanding request, incurring a 10s delay.

I'd argue that (2) is tidier, but that incurring a 10s delay is a little
needless. Let's go with (1).

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:05 -08:00
Ben Hutchings
3157183a90 sfc: Clear RXIN_SEL when soft-resetting QT2025C
When we enable PMA/PMD loopback this automatically sets RXIN_SEL
(inverse polarity for RXIN).  We need to clear that bit during the
soft-reset sequence, as it is not done automatically.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:04 -08:00
Ben Hutchings
adc1d23411 sfc: Read-to-clear LM87 alarm/interrupt status at start of day
We do not want to shut down the board based on a fault that has
already been cleared.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:04 -08:00
Ben Hutchings
71839f7d16 sfc: Distinguish critical and non-critical over-temperature conditions
Set both the 'maximum' and critical temperature limits for LM87
hardware monitors on Falcon boards.  Do not shut down a port until the
critical temperature is reached, but warn as soon as the 'maximum'
temperature is reached.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:03 -08:00
Ben Hutchings
4484cd7ded sfc: Fix condition for no-op in set_phy_flash_cfg()
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:03 -08:00
Ben Hutchings
f18ca36461 sfc: Reduce log level for MCDI error response in efx_mcdi_rpc()
Some errors are expected, e.g. when sending new commands to an MC
running old firmware.  Only the caller of efx_mcdi_rpc() can decide
what is a real error.  Therefore log the error responses with
netif_dbg().

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-03 09:08:02 -08:00
Tomoya
2989042ca8 can: EG20T PCH: Delete unnecessary spin_lock
Delete unnecessary spin_lock for accessing Message Object.
Since all message objects are divided into tx/rx area completely,
spin_lock processing is unnecessary.

Signed-off-by: Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com>
Acked-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-02 13:13:46 -08:00
Tomoya
d68f6837c4 can: EG20T PCH: Enumerate LEC macros
For easy to readable, LEC #define macros are replaced to enums.

Signed-off-by: Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-02 13:04:51 -08:00
Tomoya
15ffc8fddf can: EG20T PCH: Change Message Object Index
For easy to readable, add Message Object index like below.
PCH_RX_OBJ_START
PCH_RX_OBJ_END
PCH_TX_OBJ_START
PCH_TX_OBJ_END

Signed-off-by: Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-02 13:04:51 -08:00
Tomoya
8339a7ed56 can: EG20T PCH: Separate Interface Register(IF1/IF2)
CAN register of Intel PCH EG20T has 2 sets of interface register.
To reduce whole of code size, separate interface register.
As a result, the number of function also can be reduced.

Signed-off-by: Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com>
Acked-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-02 13:04:50 -08:00
Jon Mason
67d5288049 vxge: update driver version
Update vxge driver version

Signed-off-by: Jon Mason <jon.mason@exar.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-01 13:02:09 -08:00
Jon Mason
ead5d23814 vxge: use strcpy for strings
Use strncpy instead of memcpy when working on strings

Signed-off-by: Jon Mason <jon.mason@exar.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-01 13:02:08 -08:00
Jon Mason
1bacdbb341 vxge: remove unnecessary printks
Remove printks for ring blocks, fifo blocks, and rx doorbell mode as
they clutter the dmesg output during modprobe and provide no useful
information.

Signed-off-by: Jon Mason <jon.mason@exar.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-01 13:02:08 -08:00
Dmitry Kravkov
0793f83f0e bnx2x: Add Nic partitioning mode (57712 devices)
NIC partitioning is another flavor of multi function - having few
PCI functions share the same physical port. Unlike the currently
supported mode of multi-function which depends on the switch
configuration and uses outer-VLAN, the NPAR mode is switch independent
and uses the MAC addresses to distribute incoming packets to the different
functions. This patch adds the specific HW setting of the NPAR mode
and some distinctions between switch dependent (SD) and
switch independent (SI) multi-function (MF) modes where the configuration
is not the same.

Advance driver version to 1.60.00-6

Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-01 12:39:28 -08:00
Joe Perches
c20ec76157 forcedeth: Use netdev_dbg for printk(KERN_DEBUG
Use the normal debugging functions.
Print mac address when using random_ether_addr.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-11-29 11:44:56 -08:00
Joe Perches
ef46ffbc28 forcedeth: Remove netdev_dbg uses
These were probably just for initial driver debugging
and have not been enabled in builds in git history.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-11-29 11:44:56 -08:00
Joe Perches
b2ba08e606 forcedeth: Convert dev_printk(<level> to dev_<level>(
Use vsprintf extension %pM for a mac address in one instance.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-11-29 11:44:55 -08:00
Joe Perches
cd66328bda forcedeth: Separate vendor specific initializations into functions
Neaten the phy_init function by adding and calling vendor
specific functions.

object size is reduced by ~1kb:

$ size drivers/net/forcedeth.o.*
   text	   data	    bss	    dec	    hex	filename
  83475	   1848	  19304	 104627	  198b3	drivers/net/forcedeth.o.new
  84459	   1848	  19544	 105851	  19d7b	drivers/net/forcedeth.o.old

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-11-29 11:44:55 -08:00
Joe Perches
c41d41e168 forcedeth: Add function init_realtek_8211b
Deduplicate the code use for the init/reset of this device.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-11-29 11:44:54 -08:00
Joe Perches
1d397f3698 forcedeth: Convert pr_<level> to netdev_<level>
Use netdev_<level> when a struct net_device * is available.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-11-29 11:44:54 -08:00
Joe Perches
294a554e27 forcedeth: Use pr_fmt and pr_<level>
Convert printks to pr_<level>.
Remove "forcedeth: " from some calls as it's now added by pr_fmt.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-11-29 11:44:53 -08:00
Joe Perches
f52dafc1a6 forcedeth: Convert remaining dprintk to netdev_dbg
The remaining dprintk uses are emitted as KERN_INFO.
Change these dprintk uses to netdev_dbg.
Remove the now unused dprintk macros.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-11-29 11:44:53 -08:00
Joe Perches
e649985b4a forcedeth: Use print_hex_dump
Use the standard code to emit hex dumps.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-11-29 11:44:52 -08:00
Joe Perches
6b80858d2c forcedeth: convert dprintk(KERN_DEBUG to netdev_dbg
Use the more standard macro to preface netdev->name.
Fix casting on resource use.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-11-29 11:44:52 -08:00