11 Oct, 2007
4 commits
-
Change the default WoL setting to match the NVRAM's setting. It
always defaulted to WoL disabled before and caused a lot of confusion
for users.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
This is a follow up to the patches from Denys Vlasenkos
to further optimize firmware loading.1. In bnx2_init_cpus(), we allocate memory for decompression once
and use it repeatedly instead of doing this for every firmware image.2. We eliminate the BSS and SBSS firmware sections in bnx2_fw*.h since
these are always zeros.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
This patch modifies gzip unpacking code in bnx2 driver so that
it does not depend on bnx2 internals. I will move this code
out of the driver and into zlib in follow-on patch.It can be useful in other drivers which need to store firmwares
or any other relatively big binary blobs - fonts, cursor bitmaps,
whatever.Patch is run tested by Michael Chan (driver author).
Signed-off-by: Denys Vlasenko
Acked-by: Michael Chan
Signed-off-by: David S. Miller -
Several devices have multiple independant RX queues per net
device, and some have a single interrupt doorbell for several
queues.In either case, it's easier to support layouts like that if the
structure representing the poll is independant from the net
device itself.The signature of the ->poll() call back goes from:
int foo_poll(struct net_device *dev, int *budget)
to
int foo_poll(struct napi_struct *napi, int budget)
The caller is returned the number of RX packets processed (or
the number of "NAPI credits" consumed if you want to get
abstract). The callee no longer messes around bumping
dev->quota, *budget, etc. because that is all handled in the
caller upon return.The napi_struct is to be embedded in the device driver private data
structures.Furthermore, it is the driver's responsibility to disable all NAPI
instances in it's ->stop() device close handler. Since the
napi_struct is privatized into the driver's private data structures,
only the driver knows how to get at all of the napi_struct instances
it may have per-device.With lots of help and suggestions from Rusty Russell, Roland Dreier,
Michael Chan, Jeff Garzik, and Jamal Hadi Salim.Bug fixes from Thomas Graf, Roland Dreier, Peter Zijlstra,
Joseph Fannin, Scott Wood, Hans J. Koch, and Michael Chan.[ Ported to current tree and all drivers converted. Integrated
Stephen's follow-on kerneldoc additions, and restored poll_list
handling to the old style to fix mutual exclusion issues. -DaveM ]Signed-off-by: Stephen Hemminger
Signed-off-by: David S. Miller
18 Jul, 2007
1 commit
-
The NVRAM interface is slightly modified on the 5709. To properly
support it, we need to change the buffered flag in the flash data
structure into multiple flags to indicate buffered operation, address
translation, and the use of write enable (WREN). The 5709 flash
only requires the buffered operation bit to be set.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller
11 Jul, 2007
3 commits
-
Add management firmware version for ethtool -i.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
In addition to the periodic heartbeat, we're adding a heartbeat
request interrupt when the heartbeat is late. This is needed during
netpoll where the timer is not available. -rt kernels will also
benefit since the timer is not as accurate.[ We discussed this patch last time and we decided that the -rt
kernel problem alone did not justify this patch. I think the
netpoll problem makes this patch necessary. ]Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Add new fields in struct bnx2 and other bit definitions in shared
memory to support remote PHY.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller
08 Jun, 2007
1 commit
-
Add missing code to enable DMA on 5709 A1. The bit is a no-op on A0
and therefore can be set on all 5709 chips.Signed-off-by: Michael Chan
Acked-by: Jeff Garzik
Signed-off-by: David S. Miller
04 May, 2007
8 commits
-
Update version to 1.5.10.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Fix the code to print PCI or PCIE bus information for all devices.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
The 5709 supports the one-shot MSI handler similar to some of the tg3
chips. In this mode, the MSI disables itself automatically until it
is re-enabled at the end of NAPI poll.Put the request_irq/free_irq logic in common procedures.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
The indirect register access method will be used by more than one
caller in BH context (NAPI poll and timer), so a spinlock is required.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Add PCI ID and code to support the 5709 Serdes PHY.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
The 5709 Serdes device uses non-standard MII register offsets. This
re-structuring will make it easier to support 5709 Serdes.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
The internal PCIE-to-PCIX bridge of the 5708 has the same 40-bit DMA
limitation as some of the tg3 chips. Set dma_mask and persistent DMA
mask to 40-bit to workaround.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller
25 Apr, 2007
1 commit
-
Tweak a register setting to prevent the tx mailbox from halting.
Update version to 1.5.8.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller
02 Feb, 2007
1 commit
-
5709 A0 copper devices will not link up with some link partners
without this workaround.Update driver to 1.5.5.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller
03 Dec, 2006
5 commits
-
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Re-organize the firmware handling code and declarations a bit to make
the code more compact.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Add code to parallel detect 1Gbps and 2.5Gbps link speeds.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
1. Add support for 2.5Gbps forced speed setting.
2. Remove a long udelay() loop and change to msleep().
3. Other misc. SerDes fixes.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller
14 Sep, 2006
1 commit
-
Signed-off-by: Jeff Garzik
18 Aug, 2006
1 commit
-
Fix a subtle race condition between bnx2_start_xmit() and bnx2_tx_int()
similar to the one in tg3 discovered by Herbert Xu:CPU0 CPU1
bnx2_start_xmit()
if (tx_ring_full) {
tx_lock
bnx2_tx()
if (!netif_queue_stopped)
netif_stop_queue()
if (!tx_ring_full)
update_tx_ring
netif_wake_queue()
tx_unlock
}Even though tx_ring is updated before the if statement in bnx2_tx_int() in
program order, it can be re-ordered by the CPU as shown above. This
scenario can cause the tx queue to be stopped forever if bnx2_tx_int() has
just freed up the entire tx_ring. The possibility of this happening
should be very rare though.The following changes are made, very much identical to the tg3 fix:
1. Add memory barrier to fix the above race condition.
2. Eliminate the private tx_lock altogether and rely solely on
netif_tx_lock. This eliminates one spinlock in bnx2_start_xmit()
when the ring is full.3. Because of 2, use netif_tx_lock in bnx2_tx_int() before calling
netif_wake_queue().4. Add memory barrier to bnx2_tx_avail().
5. Add bp->tx_wake_thresh which is set to half the tx ring size.
6. Check for the full wake queue condition before getting
netif_tx_lock in tg3_tx(). This reduces the number of unnecessary
spinlocks when the tx ring is full in a steady-state condition.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller
30 Jun, 2006
1 commit
-
Minor change in shutdown logic to effect a link down.
Update version to 1.4.43.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller
18 Jun, 2006
3 commits
-
Use CPU native page size to determine various ring sizes. This allows
order-0 memory allocations on all systems.Added check to limit the page size to 16K since that's the maximum rx
ring size that will be used. This will prevent using unnecessarily
large page sizes on some architectures with large page sizes.
[Suggested by David Miller]Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Add functions to decompress firmware before loading to the internal
CPUs. Compressing the firmware reduces the driver size significantly.Added file name length sanity check in the gzip header to prevent
going past the end of buffer [suggested by DaveM].Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Add a counter for packets dropped by firmware.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller
23 Mar, 2006
4 commits
-
Put the tx producer and consumer fields in separate cache lines in
the device structure, similar to the VJ net channel queue structure.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Move all #include <> from bnx2.h to bnx2.c.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Combine two small (56 byte and 320 byte) pci consistent memory
allocations into one allocation. Jeff Garzik suggested to store
the combined size in the bp structure for later use when freeing
the memory.Use kzalloc() instead of kmalloc() + memset().
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Fix some link-related problems by doing a coalesce_now after link
change interrupt to flush out the transient link status.To facilitate this, the host coalesce cmd register value is cached in
the device structure.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller
21 Mar, 2006
2 commits
-
Include so that it compiles properly on all archs.
Update version to 1.4.38.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Increase maximum receive ring size from 255 to 1020 by supporting
up to 4 linked pages of receive descriptors. To accomodate the
higher memory usage, each physical descriptor page is allocated
separately and the software ring that keeps track of the SKBs and the
DMA addresses is allocated using vmalloc.Some of the receive-related fields in the bp structure are re-
organized a bit for better locality of reference.The max. was reduced to 1020 from 4080 after discussion with David
Miller.This patch contains ring init code changes only. This next patch
contains rx data path code changes.Signed-off-by: Michael Chan
Signed-off-by: David S. Miller
24 Jan, 2006
4 commits
-
Update version to 1.4.31 and add 2006 copyright.
Skip the last digit when reporting the firmware version.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Add code to correctly determine nvram size.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Fix TCP/UDP checksum verification. Use status bits in the buffer
descriptor instead of the checksum value to verify rx checksum.
Using the checksum value will be incorrect if the UDP packet has
zero in the UDP checksum field.Firmware update required for this fix.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller -
Some misc. fixes for WoL, 5708 B1, and a typo '=' instead of '=='.
Signed-off-by: Michael Chan
Signed-off-by: David S. Miller