summaryrefslogtreecommitdiff
path: root/drivers/net/qlge
Commit message (Collapse)AuthorAgeFilesLines
* qlge: Add CBFC pause frame counters to ethtool stats.Ron Mercer2009-10-112-0/+90
| | | | | Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Don't fail open when port is not initialized.Ron Mercer2009-10-111-4/+2
| | | | | Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Get rid of firmware handler debug code.Ron Mercer2009-10-111-21/+0
| | | | | Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Remove inline math for small rx buf mapping.Ron Mercer2009-10-112-8/+9
| | | | | | | | rx_ring->sbq_buf_len now holds the length of the mapped portion of the buffer rather than the overall length. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Store firmware revision as early as possible.Ron Mercer2009-10-111-0/+1
| | | | | Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Add handler for DCBX firmware event.Ron Mercer2009-10-111-0/+3
| | | | | | | | The driver has nothing to do, but this marker prevents the event from showing up 'not handled'. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Set PCIE max read request size.Ron Mercer2009-10-111-0/+7
| | | | | Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Remove explicit setting of PCI Dev CTL reg.Ron Mercer2009-10-111-15/+1
| | | | | | | Remove explicit setting of error reporting bits. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* Merge branch 'master' of ↵David S. Miller2009-10-113-23/+177
|\ | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
| * qlge: Add disable/enable firmare irqs to handler.Ron Mercer2009-10-081-0/+4
| | | | | | | | | | | | | | | | | | This was accidentally omitted from one of the previous patches for firmware event handling. The handler needs to the enable firmware irq mask when it's done processing or it may not get any more events interrupts. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| * qlge: Restore rx mode after internal reset.Ron Mercer2009-10-081-0/+6
| | | | | | | | | | | | | | | | Call set_multi API after reset recovery. This was exposed by tripping tx_timeout. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| * qlge: Fix chip reset process.Ron Mercer2009-10-083-0/+106
| | | | | | | | | | | | | | | | | | Add wait for NIC fifo and MGMNT fifo to empty before applying reset. Otherwise broken frames can be processed by management processor and cause it to hang. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| * qlge: Fix RX multicast filter settings.Ron Mercer2009-10-081-10/+39
| | | | | | | | | | | | | | | | The addresses were being added to the filter properly, but were not being enabled. This adds enable bit to filter write. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| * qlge: Fix frame routing for multicast frames.Ron Mercer2009-10-081-2/+2
| | | | | | | | | | | | | | | | | | Broadcast/multicast should always be routed to the default (zeroeth) rx ring. Broadcast frames are already routed correctly. This fixes routing for multicast frames. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| * qlge: Fix frame routing issue related to bonding.Ron Mercer2009-10-081-0/+7
| | | | | | | | | | | | | | | | | | | | Currently frames are routed based on their type and MAC address. This patch adds the port number on which the frame arrived to the routing. This prevents problems in the case where both interfaces have the same MAC address in a routing configuration. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| * qlge: Fix RSS hashing values.Ron Mercer2009-10-082-11/+13
| | | | | | | | | | | | | | Fix RX queue table size and change from random to default hash values. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | qlge: Use the instance of net_device_stats from net_device.Ajit Khaparde2009-10-072-7/+6
|/ | | | | | | | Since net_device has an instance of net_device_stats, we can remove the instance of this from the private adapter structure. Signed-off-by: Ajit Khaparde <ajitk@serverengines.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Fix lock/mutex warnings.Ron Mercer2009-10-064-17/+9
| | | | | | | | | | Get rid of spinlock and private mutex usage for exclusive access to the HW semaphore register. rtnl_lock already creates exclusive access to this register in all driver API. Add rtnl to firmware worker threads that also use the HW semaphore register. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Fix queueing of firmware handler in ISR.Ron Mercer2009-10-061-3/+5
| | | | | | | | | Check that we are not already polling firmware events before we queue the firmware event worker, then disable firmware interrupts. Otherwise we can queue the same event multiple times. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Fix some bit definitions for reset register.Ron Mercer2009-10-061-3/+3
| | | | | Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Fix error exit for probe call.Ron Mercer2009-09-301-5/+5
| | | | | Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Protect reset recovery with rtnl_lock().Ron Mercer2009-09-301-3/+3
| | | | | | | | | Move the call to rtnl_lock() to before the internal call to ql_adapter_down()/ql_adapter_up(). This prevents collisions that can happen when recovering from an asic error. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Fix spin_lock warning.Ron Mercer2009-09-301-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove the unnecessary locking around the call to ql_adapter_reset(). Sep 25 08:17:29 localhost kernel: SOFTIRQ-ON-W at: Sep 25 08:17:29 localhost kernel: [<c0000000000a2964>] .lock_acquire+0x10c/0x158 Sep 25 08:17:29 localhost kernel: [<c0000000004542e0>] ._spin_lock+0x34/0x58 Sep 25 08:17:29 localhost kernel: [<d000000006723070>] .ql_adapter_down+0x40c/0x4a0 [qlge] Sep 25 08:17:29 localhost kernel: [<d0000000067256d8>] .qlge_close+0x38/0x58 [qlge] Sep 25 08:17:29 localhost kernel: [<c0000000003ada6c>] .dev_close+0xdc/0x118 Sep 25 08:17:29 localhost kernel: [<c0000000003adb48>] .rollback_registered+0xa0/0x158 Sep 25 08:17:29 localhost kernel: [<c0000000003adc50>] .unregister_netdevice+0x50/0x7c Sep 25 08:17:29 localhost kernel: [<c0000000003adca0>] .unregister_netdev+0x24/0x40 Sep 25 08:17:29 localhost kernel: [<d00000000672e0c0>] .qlge_remove+0x28/0x64 [qlge] Sep 25 08:17:29 localhost kernel: [<c000000000253fdc>] .pci_device_remove+0x50/0x90 Sep 25 08:17:29 localhost kernel: [<c0000000002f5434>] .__device_release_driver+0x94/0xf8 Sep 25 08:17:29 localhost kernel: [<c0000000002f5560>] .driver_detach+0xc8/0xfc Sep 25 08:17:29 localhost kernel: [<c0000000002f3fd8>] .bus_remove_driver+0xb4/0x114 Sep 25 08:17:29 localhost kernel: [<c0000000002f5d4c>] .driver_unregister+0x80/0xa4 Sep 25 08:17:29 localhost kernel: [<c00000000025421c>] .pci_unregister_driver+0x50/0xc8 Sep 25 08:17:29 localhost kernel: [<d00000000672e044>] .qlge_exit+0x1c/0x34 [qlge] Sep 25 08:17:29 localhost kernel: [<c0000000000ac8b0>] .SyS_delete_module+0x234/0x2d0 Sep 25 08:17:29 localhost kernel: [<c000000000008554>] syscall_exit+0x0/0x40 Sep 25 08:17:29 localhost kernel: INITIAL USE at: Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Fix out of sync hardware semaphore.Ron Mercer2009-09-301-4/+4
| | | | | | | | | ql_clear_routing_entries() takes/gives it's own hardware semaphore since it is called from more than one place. ql_route_initialize() should make this call and THEN take it's own semaphore before doing it's work. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Fix bad bit definitions.Ron Mercer2009-09-301-9/+9
| | | | | Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* trivial: remove unnecessary semicolonsJoe Perches2009-09-211-2/+2
| | | | | Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* netdev: convert bulk of drivers to netdev_tx_tStephen Hemminger2009-09-011-1/+1
| | | | | | | | | | | | In a couple of cases collapse some extra code like: int retval = NETDEV_TX_OK; ... return retval; into return NETDEV_TX_OK; Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Move TX completions from workqueue to NAPI.Ron Mercer2009-08-282-136/+137
| | | | | | | | | | | TX completions were running in a workqueue queued by the ISR. This patch moves the processing of TX completions to an existing RSS NAPI context. Now each irq vector runs NAPI for one RSS ring and one or more TX completion rings. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Allow running MSIx with fewer vectors.Ron Mercer2009-08-281-47/+38
| | | | | | | | | Currently we downshift to MSI/Legacy if we don't get enough vectors for cpu_count RSS rings plus cpu_count TX completion rings. This patch allows running MSIX with the vector count that the platform provides. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Get rid of 'default' rx_ring type.Ron Mercer2009-08-284-64/+28
| | | | | | | | | | | | | | | | | | Currently we have three types of RX rings. 1) Default ring - services rx_ring for broadcast/multicast, handles firmware events, and errors. 2) TX completion ring - handles only outbound completions. 3) RSS ring - handles only inbound completions. This patch gets rid of the default ring type and moves it's functionality into the first RSS ring. This makes better use of MSIX vectors since they are a limited resource on some platforms. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: return PCI_ERS_RESULT_DISCONNECT on permanent failureDean Nelson2009-08-011-0/+5
| | | | | | | | | PCI drivers that implement the struct pci_error_handlers' error_detected callback should return PCI_ERS_RESULT_DISCONNECT if the state passed in is pci_channel_io_perm_failure. This patch fixes the issue for qlge. Signed-off-by: Dean Nelson <dnelson@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Fix sizeof usage.Ron Mercer2009-07-032-9/+9
| | | | | | | Some usage was only sizing a pointer rather than the data type. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Add/use function for link up/down.Ron Mercer2009-07-033-8/+26
| | | | | | | | | | | We need to set/clear the mac address register when the link goes up/down respectively. Without this both ports of a 2-port device can end up with the same mac address in a bonding scenario. The new ql_link_on() and ql_link_off() will also be used in handling certain firmware events. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Fix MAC address bonding issue.Ron Mercer2009-07-031-7/+43
| | | | | | | | | | | | | | | | This addes functionality to set/clear the MAC address in the hardware when the link goes up/down. The MAC address register is persistent across function resets. In bonding the same address can bounce from one port to the other. This can cause packets to be delivered to the wrong port. This patch clears the MAC address in the hardware when the link is down and sets it when the link comes up. It was found that pulling/pushing the cable from one port to another causes the same MAC address to be in both ports. The next patch in this series will use this functionality as well. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Fix tx byte counter.Ron Mercer2009-07-031-1/+1
| | | | | Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Fix redundant call to free resources.Ron Mercer2009-07-031-5/+0
| | | | | | | The caller will free acquired resouces if a failure occurs. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Fix carrier on condition.Ron Mercer2009-07-031-1/+5
| | | | | | | | | We were turning on the carrier without verifying the link was up. This adds link up to the link initialize check before turning carrier on. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Clear frame to queue routing before reset.Ron Mercer2009-07-031-9/+32
| | | | | | | | Not clearing the routing bits can cause frames to erroneously get routed to management processor. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* qlge: Expand coverage of hw lock for config register.Ron Mercer2009-07-031-4/+5
| | | | | | | | | | | | The hardware semaphore covers the configuration register as well as the ICB registers. The ICB high and low regs contain the address of the initialization control block and the config register is used to signal the hardware that a block is ready to be downloaded. Currently we were only protecting the ICB regs. This changes expands to cover the config register as well. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* Merge branch 'master' of ↵David S. Miller2009-06-152-4/+4
|\ | | | | | | | | | | | | | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 Conflicts: Documentation/feature-removal-schedule.txt drivers/scsi/fcoe/fcoe.c net/core/drop_monitor.c net/core/net-traces.c
| * trivial: fix ETIMEOUT -> ETIMEDOUT typosJean Delvare2009-06-121-1/+1
| | | | | | | | | | | | | | fix ETIMEOUT -> ETIMEDOUT typos Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * trivial: fix typos s/paramter/parameter/ and s/excute/execute/ in ↵Martin Olsson2009-06-121-3/+3
| | | | | | | | | | | | | | documentation and source comments. Signed-off-by: Martin Olsson <martin@minimum.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | qlge: Allow RX buf rings to be > than 4096 bytes.Ron Mercer2009-06-112-8/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | RX buffer rings can be comprised of non-contiguous fixed size chunks of memory. The ring is given to the hardware as a pointer to a location that stores the location of the queue. If the queue is greater than 4096 bytes then the hardware gets a list of said pointers. This patch addes the necessary logic to generate the list if the queue size exceeds 4096. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | qlge: Relax alignment on TX harware queue.Ron Mercer2009-06-112-1/+3
| | | | | | | | | | | | | | | | The alignment was on size of queue boundary, but the hardware only requires 4-byte alignment. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | qlge: bugfix: Get rid of errant spin_unlock().Ron Mercer2009-06-101-1/+0
| | | | | | | | | | Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | qlge: Add set TX csum ethtool op.Ron Mercer2009-06-101-0/+1
| | | | | | | | | | Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | qlge: Add support for varied pcie function numbers.Ron Mercer2009-06-102-6/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | Currently we support only PCIe NIC functions zero and one, and FCoE functions as 3 and 4. Future configurations can mix these up in any fashion. This patch removes the 0-1 dependancy and allows usage of any of the 4 functions. We also find the alternate NIC function (if exist) and determine our port number based on the comparison of the two functions: Lower function number gets first port, higher function gets second port. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | qlge: Add support for using alternate MAC address.Ron Mercer2009-06-101-2/+15
| | | | | | | | | | | | | | | | | | | | | | Extract either manufacturer or Bladecenter Open Fabric Manager (BOFM) MAC address. BOFM may indicate an alternate MAC address. This patch honors that request by extracting the MAC address from a different flash location if a flag is set. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | qlge: Drop inbound frames > MTU.Ron Mercer2009-06-101-0/+9
| | | | | | | | | | | | | | | | The max frame size register is set higher than the MTU to accomodate FCoE frames. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | qlge: Drop inbound error frames.Ron Mercer2009-06-101-1/+7
| | | | | | | | | | Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>