summaryrefslogtreecommitdiffstats
path: root/drivers/net/myri10ge/myri10ge.c
Commit message (Collapse)AuthorAgeFilesLines
* myri10ge: update driver version to 1.3.2-1.269Brice Goglin2007-08-251-1/+1
| | | | | | | Update myri10ge driver version to 1.3.2-1.269. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: use pcie_get/set_readrqBrice Goglin2007-08-251-26/+6
| | | | | | | | | | | | | | | | Based on a patch from Peter Oruba, convert myri10ge to use pcie_get_readrq() and pcie_set_readrq() instead of our own PCI calls and arithmetics. These driver changes incorporate the proposed PCI-X / PCI-Express read byte count interface. Reading and setting those values doesn't take place "manually", instead wrapping functions are called to allow quirks for some PCI bridges. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off by: Peter Oruba <peter.oruba@amd.com> Based on work by Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: Use the pause counter to avoid a needless device resetBrice Goglin2007-08-141-7/+18
| | | | | | | | | Use the pause counter to avoid a needless device reset, and print a message telling the admin that our link partner is flow controlling us down to 0 pkts/sec. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: Remove nonsensical limit in the tx done routineBrice Goglin2007-07-161-6/+0
| | | | | | | | | | Remove nonsensical limit in the tx done routine. Specifically, the loop will always terminate after processing <= 1 rings worth of frames, as the mcp index is not refetched, so the removed conditional could never be true. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* Use is_power_of_2() in myri10ge/myri10ge.cvignesh babu2007-07-101-1/+2
| | | | | | | | | Replace (n & (n-1)) with is_power_of_2() Signed-off-by: vignesh babu <vignesh.babu@wipro.com> Cc: Brice Goglin <brice@myri.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: SET_NETDEV_DEV()Maik Hampel2007-07-021-0/+2
| | | | | | | | SET_NETDEV_DEV() in myri10ge to create the "/sys/class/net/<if>/device" symlink. Signed-off-by: Maik Hampel <m.hampel@gmx.de> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: update driver versionBrice Goglin2007-06-121-1/+1
| | | | | | | Update myri10ge driver version to 1.3.1-1.248. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: report when the link partner is running in Myrinet modeBrice Goglin2007-06-121-5/+10
| | | | | | | | | Since Myri-10G boards may also run in Myrinet mode instead of Ethernet, add a message when we detect that the link partner is not running in the right mode. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: limit the number of recoveriesBrice Goglin2007-06-121-2/+10
| | | | | | | | | Limit the number of recoveries from a NIC hw watchdog reset to 1 by default. It enables detection of defective NICs immediately since these memory parity errors are expected to happen very rarely (less than once per century*NIC). Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: report link up/down in standard ethtool wayBrice Goglin2007-06-031-0/+1
| | | | | | | Report link up/down in standard ethtool way Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: replace the chipset whitelist with firmware autodetectionBrice Goglin2007-05-081-56/+65
| | | | | | | | | | | | | Remove the aligned-completion whitelist, and replace it by using the 1.4.16 firmware's auto-detection features to choose which firmware to load. The driver now loads the aligned firmware, performs a MXGEFW_CMD_UNALIGNED_TEST, and falls back to using the unaligned firmware if: - The firmware is too old (ie, MXGEFW_CMD_UNALIGNED_TEST is an unknown command). - The MXGEFW_CMD_UNALIGNED_TEST returns MXGEFW_CMD_ERROR_UNALIGNED, meaning that it has seen an unaligned completion during the DMA test. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: move the DMA test code into its own functionBrice Goglin2007-05-081-53/+68
| | | | | | | Move the DMA test code into its own function. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: fix restoring of multicast list after resetBrice Goglin2007-05-081-5/+5
| | | | | | | | | | | | | Don't count on whatever implementation artifact preserves the multicast list across a reset cmd, and setup multicast filtering as part of our reset routine. The setting of allmulti when adopting firmware with the rx-filter broadcast bug is also moved into the multicast setup routine where it belongs. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: support new firmware countersBrice Goglin2007-05-081-1/+8
| | | | | | | | Add dropped_pause, dropped_bad_phy, dropped_bad_crc32, dropped_unicast_filtered to the set of ethtool counters. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [SK_BUFF]: Introduce skb_copy_to_linear_data{_offset}Arnaldo Carvalho de Melo2007-04-251-1/+1
| | | | | | | To clearly state the intent of copying to linear sk_buffs, _offset being a overly long variant but interesting for the sake of saving some bytes. Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
* [TCP]: Introduce tcp_hdrlen() and tcp_optlen()Arnaldo Carvalho de Melo2007-04-251-2/+1
| | | | | | | | | | | | The ip_hdrlen() buddy, created to reduce the number of skb->h.th-> uses and to avoid the longer, open coded equivalent. Ditched a no-op in bnx2 in the process. I wonder if we should have a BUG_ON(skb->h.th->doff < 5) in tcp_optlen()... Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* [SK_BUFF]: Introduce skb_transport_offset()Arnaldo Carvalho de Melo2007-04-251-2/+3
| | | | | | | For the quite common 'skb->h.raw - skb->data' sequence. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* [ETH]: Make eth_type_trans set skb->dev like the other *_type_transArnaldo Carvalho de Melo2007-04-251-1/+0
| | | | | | | One less thing for drivers writers to worry about. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* myri10ge: update driver version to 1.3.0-1.233Brice Goglin2007-04-111-1/+1
| | | | | | | Update the myri10ge driver version number to 1.3.0-1.233. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: more Intel chipsets providing aligned PCIe completionsBrice Goglin2007-04-111-0/+16
| | | | | | | | Add the Intel 5000 southbridge (aka Intel 6310/6311/6321ESB) PCIe ports and the Intel E30x0 chipsets to the whitelist of aligned PCIe completion. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: fix management of the firmware 4KB boundary crossing restrictionBrice Goglin2007-04-111-11/+8
| | | | | | | | | | Simpler way of dealing with the firmware 4KB boundary crossing restriction for rx buffers. This fixes a variety of memory corruption issues when using an "uncommon" MTU with a 16KB page size. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: correctly detect when TSO should be usedBrice Goglin2007-03-281-4/+3
| | | | | | | | | | Correctly detect when TSO should be used on transmit by looking at the skb->gso_size rather than seeing if the frame was larger than our MTU. The old method causes problems when a host with a large (jumbo) MTU is sending to a host with a small (standard) MTU. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: update driver version to 1.3.0-1.226Brice Goglin2007-03-231-1/+1
| | | | | | | Driver version is now 1.3.0-1.226. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: fix management of >4kB allocated pagesBrice Goglin2007-03-231-0/+8
| | | | | | | | Fix management of allocated physical pages when the architecture page size is not 4kB since the firmware cannot cross 4K boundary. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: update wcfifo and intr_coal_delay default valuesBrice Goglin2007-03-231-2/+2
| | | | | | | | | Update the default value of 2 module parameters: * wcfifo disabled * intr_coal_delay 75us Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: Serverworks HT2100 provides aligned PCIe completionBrice Goglin2007-03-231-0/+8
| | | | | | | | | | [PATCH 1/4] myri10ge: Serverworks HT2100 provides aligned PCIe completion Use the regular firmware on Serverworks HT2100 PCIe ports since this chipset provides aligned PCIe completion. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: add a wc_enabled flag to myri10ge_privBrice Goglin2007-03-091-3/+7
| | | | | | | | Add a wc_enabled flag in the myri10ge_priv instead of relying on mtrr >= 0. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: prevent 4k rdma on SGI TIOCE chipsetBrice Goglin2007-03-091-0/+6
| | | | | | | | Do not use 4k rdma request on SGI TIOCE chipset since this bridge does not support it. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: use pci_map_page to prepare the dmatest bufferBrice Goglin2007-03-091-6/+16
| | | | | | | | Allocate a specific page and use pci_map_page for dma test instead of relying on another existing buffer. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: fix error checking and return value in myri10ge_allocate_ringsBrice Goglin2007-03-091-0/+4
| | | | | | | | | Fix a missing error check in myri10ge_allocate_rings() and set status to -ENOMEM before all actual allocations so that the error path returns what it should. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: fix copyright and licenseBrice Goglin2007-03-021-11/+11
| | | | | | | Fix copyright and license ("regents" should not have ever been used). Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: workaround buggy adopted firmwaresBrice Goglin2007-02-271-4/+23
| | | | | | | | | Work around a bug which occurs when adopting firmware versions 1.4.4 though 1.4.11 where broadcasts are filtered as if they were multicasts. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* remove NETIF_F_TSO ifdeferyArjan van de Ven2007-02-051-10/+0
| | | | | | | | | Remove the NETIF_F_TSO #ifdef-ery in drivers/net; this was for old-old-2.4 compat (even current 2.4 has NETIF_F_TSO) but it's time to get rid of it by now. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: update driver version to 1.2.0Brice Goglin2007-01-181-1/+1
| | | | | | | Driver is now at version 1.2.0. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: check that we can get an irqBrice Goglin2007-01-181-3/+12
| | | | | | | | | | Now that IRQ allocation is done in myri10ge_open(), we want to still check when loading the driver that IRQ allocation could succeed later. Additionaly, we fix the initialization and printing of netdev->irq. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: make wc_fifo usage load-time tunableBrice Goglin2007-01-181-1/+5
| | | | | | | | Under some circumstances, using WC without the WC fifo is faster. So we make it possible to tune wc_fifo with a module parameter. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: handle failures in suspend and resumeBrice Goglin2006-12-261-5/+7
| | | | | | | | | On suspend, handle pci_set_power_state errors, and on resume handle failures in pci_resume_state(). Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: no need to save MSI and PCIe state in the driverBrice Goglin2006-12-261-38/+9
| | | | | | | | | | The PCI MSI and express state are already saved and restored by the current versions of pci_save_state/pci_restore_state. Therefore it is no longer necessary for the driver to do it. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: make msi configurable at runtime through sysfsBrice Goglin2006-12-261-1/+1
| | | | | | | | | | | | Now that IRQ are requested is called on open() and freed on close(), we can safely switch from/to MSI without unloading the module. We are guaranteed to correctly free IRQ even if the sysfs file got written in the meantime since the MSI initialization is stored in mgp->msi_enabled. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: move request_irq to myri10ge_openBrice Goglin2006-12-261-44/+54
| | | | | | | | | | Request IRQ in myri10ge_open() and free in close() instead of probe() and remove() to eliminate potential race between the watchdog and the interrupt handler. Additionaly, the interrupt handler won't get called on shared irq anymore when the interface is down. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* myri10ge: match number of save_state and restoreBrice Goglin2006-12-261-2/+10
| | | | | | | | | | | | | | Since pci_save_state() pushes MSI and PCIe states on a kind of stack, myri10ge saving the state in advance for parity recovery will push the state again on the stack on suspend. This leads to some memory leak. We add a couple additional calls to save_state and restore_state so that we don't leak anymore. For the future, we are thinking of a better way to recover from parity error without using pci_save_state(). Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] myri10ge: update driver version to 1.1.0Brice Goglin2006-12-111-1/+1
| | | | | | | Update driver version to 1.1.0. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] myri10ge: fix big_bytes in case of vlan framesBrice Goglin2006-12-111-2/+2
| | | | | | | | | | | Fix sizing of big_bytes in the case of vlan frames. The 4 VLAN_HLEN bytes were omitted, leading to sizing the big buffer 4 bytes smaller than it should be. Due to how rx buffers are carved from pages, this was harmless for the common (9000, 1500) byte MTUs, but could lead to data corruption for some MTUs. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] myri10ge: Full vlan frame in small_bytesBrice Goglin2006-12-111-2/+2
| | | | | | | Receive full vlan frames into smalls when running with a jumbo MTU. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] myri10ge: drop contiguous skb routinesBrice Goglin2006-12-111-204/+8
| | | | | | | | | Drop the old routines that used the physically contigous skb now that we use the physical pages. And rename myri10ge_page_rx_done() to myri10ge_rx_done() as it was previously. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] myri10ge: switch to page-based skbBrice Goglin2006-12-111-79/+93
| | | | | | | | Switch to physical page skb, by calling the new page-based allocation routines and using myri10ge_page_rx_done(). Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] myri10ge: add page-based skb routinesBrice Goglin2006-12-111-0/+190
| | | | | | | | Add physical page skb allocation routines and page based rx_done, to be used by upcoming patches. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] myri10ge: indentation cleanupsBrice Goglin2006-12-111-4/+4
| | | | | | | | Indentation cleanups to synchronize to our tree which is automatically indent'ed. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] myri10ge: write as 2 32-byte blocks in myri10ge_submit_8rxBrice Goglin2006-12-071-1/+3
| | | | | | | | | In the myri10ge_submit_8rx() routine, write the 64 byte request block as 2 32-byte blocks so that it is handled by the hardware pio write handler if write-combining is enabled. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* Merge branch 'master' into upstreamJeff Garzik2006-12-071-3/+4
|\ | | | | | | | | | | | | Conflicts: drivers/net/netxen/netxen_nic.h drivers/net/netxen/netxen_nic_main.c
OpenPOWER on IntegriCloud