summaryrefslogtreecommitdiffstats
path: root/drivers/net/b44.c
Commit message (Collapse)AuthorAgeFilesLines
* b44 endian annotationsAl Viro2007-02-061-4/+4
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* Broadcom 4400 resume small fixDmitriy Monakhov2007-01-301-2/+13
| | | | | | | | | | | | Some issues in b44_resume(). - Return value of pci_enable_device() was ignored. - If request_irq() has failed we have to just disable device and exit. Signed-off-by: Dmitriy Monakhov <dmonakhov@openvz.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* b44: src_desc->addr is little-endianAl Viro2007-01-301-1/+1
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* b44: Fix frequent link changesMichael Chan2007-01-301-15/+20
| | | | | | | | | | | | | | | | | | | | | This fixes the issue of frequent link changes under heavy traffic reported below: http://bugzilla.kernel.org/show_bug.cgi?id=7696 https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=216338 The b44 chip occasionally needs to be reset when ISTAT_ERRORS are encountered. The reset sequence includes a PHY reset that will take many seconds to complete and cause the link to go down and up. By skipping the PHY reset, it will greatly reduce the interruption when ISTAT_ERRORS are encountered. Change the full_reset parameter to reset_kind parameter in b44_init_hw(). This will allow PHY reset to be skipped when ISTAT_ERRORS are encountered. Signed-off-by: Michael Chan <mchan@broadcom.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* netpoll: drivers must not enable IRQ unconditionally in their NAPI handlerFrancois Romieu2006-12-261-2/+4
| | | | | | | | | | | | | net/core/netpoll.c::netpoll_send_skb() calls the poll handler when it is available. As netconsole can be used from almost any context, IRQ must not be enabled blindly in the NAPI handler of a driver which supports netpoll. b57bd06655a028aba7b92e1c19c2093e7fcfb341 fixed the issue for the 8139too.c driver. Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] b44: change comment about irq mask registerJohannes Berg2006-11-071-2/+3
| | | | | | | | | | | | | Through some experimentation with the similarly built bcm43xx I came to the conclusion that if the hw/firmware sets a bit in the interrupt register, an interrupt will only be raised if that bit is included in the interrupt mask. Hence, the interrupt mask is more like an interrupt control mask. This patch changes the comment to reflect that. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] b44: fix eeprom endianess issueMichael Buesch2006-10-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | This fixes eeprom read on big-endian architectures. readw returns the data in CPU order. With cpu_to_le16 we convert it to little endian, because "ptr" is a pointer to a _byte_ arrray. See the cast above. A byte array is little endian. The bug is: Reading u16 values with readw, casting them into an u8 array and accessing this u8 array as an u8 (byte) array. The correct fix is to swap the CPU-ordering value returned by readw into little endian, as the u8 array is little endian. This compiles to nothing on little endian hardware (so it does not change b44 code on LE hardware), but _fixes_ code on BE hardware. Signed-off-by: Michael Buesch <mb@bu3sch.de> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* Merge branch 'master' into upstream-fixesJeff Garzik2006-10-111-2/+2
|\
| * IRQ: Maintain regs pointer globally rather than passing to IRQ handlersDavid Howells2006-10-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Maintain a per-CPU global "struct pt_regs *" variable which can be used instead of passing regs around manually through all ~1800 interrupt handlers in the Linux kernel. The regs pointer is used in few places, but it potentially costs both stack space and code to pass it around. On the FRV arch, removing the regs parameter from all the genirq function results in a 20% speed up of the IRQ exit path (ie: from leaving timer_interrupt() to leaving do_IRQ()). Where appropriate, an arch may override the generic storage facility and do something different with the variable. On FRV, for instance, the address is maintained in GR28 at all times inside the kernel as part of general exception handling. Having looked over the code, it appears that the parameter may be handed down through up to twenty or so layers of functions. Consider a USB character device attached to a USB hub, attached to a USB controller that posts its interrupts through a cascaded auxiliary interrupt controller. A character device driver may want to pass regs to the sysrq handler through the input layer which adds another few layers of parameter passing. I've build this code with allyesconfig for x86_64 and i386. I've runtested the main part of the code on FRV and i386, though I can't test most of the drivers. I've also done partial conversion for powerpc and MIPS - these at least compile with minimal configurations. This will affect all archs. Mostly the changes should be relatively easy. Take do_IRQ(), store the regs pointer at the beginning, saving the old one: struct pt_regs *old_regs = set_irq_regs(regs); And put the old one back at the end: set_irq_regs(old_regs); Don't pass regs through to generic_handle_irq() or __do_IRQ(). In timer_interrupt(), this sort of change will be necessary: - update_process_times(user_mode(regs)); - profile_tick(CPU_PROFILING, regs); + update_process_times(user_mode(get_irq_regs())); + profile_tick(CPU_PROFILING); I'd like to move update_process_times()'s use of get_irq_regs() into itself, except that i386, alone of the archs, uses something other than user_mode(). Some notes on the interrupt handling in the drivers: (*) input_dev() is now gone entirely. The regs pointer is no longer stored in the input_dev struct. (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does something different depending on whether it's been supplied with a regs pointer or not. (*) Various IRQ handler function pointers have been moved to type irq_handler_t. Signed-Off-By: David Howells <dhowells@redhat.com> (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
* | [netdrvr] b44: handle excessive multicast groupsJeff Garzik2006-10-051-3/+4
|/ | | | | | | | | | | | | If there are more than B44_MCAST_TABLE_SIZE groups in the dev->mc_list, it will only listen to the first B44_MCAST_TABLE_SIZE that it sees. This change makes the driver go into RXCONFIG_ALLMULTI mode if there are more than B44_MCAST_TABLE_SIZE groups being subscribed to, similar to other network drivers. Noticed by Bill Helfinstine <bhelf@flitterfly.whirpon.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* drivers/net: const-ify ethtool_ops declarationsJeff Garzik2006-09-131-1/+1
| | | | Signed-off-by: Jeff Garzik <jeff@garzik.org>
* drivers/net: Remove deprecated use of pci_module_init()Jeff Garzik2006-08-191-1/+1
| | | | | | | From: Michal Piotrowski <michal.k.k.piotrowski@gmail.com> Signed-off-by: Michal Piotrowski <michal.k.k.piotrowski@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [netdrvr] use dev_xxx() printk helpers, rather than dev_printk(KERN_xxx, ...Jeff Garzik2006-07-051-14/+9
| | | | | | Suggested by Jiri Slaby. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [netdrvr] Use dev_printk() when ethernet interface isn't availableJeff Garzik2006-07-051-13/+15
| | | | | | | | | | For messages prior to register_netdev(), prefer dev_printk() because that prints out both our driver name and our [PCI | whatever] bus id. Updates: 8139{cp,too}, b44, bnx2, cassini, {eepro,epic}100, fealnx, hamachi, ne2k-pci, ns83820, pci-skeleton, r8169. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] irq-flags: drivers/net: Use the new IRQF_ constantsThomas Gleixner2006-07-021-2/+2
| | | | | | | | | | Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@elte.hu> Cc: "David S. Miller" <davem@davemloft.net> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] b44: update version to 1.01Gary Zambrano2006-06-221-2/+2
| | | | | | | Update the driver version to 1.01 Signed-off-by: Gary Zambrano <zambrano@broadcom.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] b44: add wol for old nicGary Zambrano2006-06-221-1/+109
| | | | | | | | This patch adds wol support for the older 440x nics that use pattern matching. This patch is a redo thanks to feedback from Michael Chan and Francois Romieu. Signed-off-by: Gary Zambrano <zambrano@broadcom.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] b44: add parameterGary Zambrano2006-06-221-21/+28
| | | | | | | | This patch adds a parameter to init_hw() to not completely initialize the nic for wol. Signed-off-by: Gary Zambrano <zambrano@broadcom.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] b44: add wolGary Zambrano2006-06-221-0/+76
| | | | | | | | | Adds wol to the driver. This is a redo of a previous patch thanks to feedback from Francois Romieu. Signed-off-by Gary Zambrano <zambrano@broadcom.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] b44: fix manual speed/duplex/autoneg settingsGary Zambrano2006-06-221-16/+28
| | | | | | | | Fixes for speed/duplex/autoneg settings and driver settings info. This is a redo of a previous patch thanks to feedback from Jeff Garzik. Signed-off-by: Gary Zambrano <zambrano@broadcom.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] x86_64: Check for bad dma address in b44 1GB DMA workaroundAndi Kleen2006-05-161-10/+18
| | | | | | | | | Needed for interaction with the nommu code in x86-64 which will return bad_dma_address if the address exceeds dma_mask. Cc: netdev@vger.kernel.org Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [netdrvr b44] trim trailing whitespaceJeff Garzik2006-04-121-19/+19
|
* [PATCH] b44: increase version to 1.00Gary Zambrano2006-04-121-2/+3
| | | | Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] b44: disable default tx pauseGary Zambrano2006-04-121-19/+12
| | | | | | | | | Disable default tx pause frame support. The b44 controller has a bug that generates excessive tx pause frames. Signed-off-by: Gary Zambrano <zambrano@broadcom.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* BUG_ON() Conversion in drivers/net/Eric Sesterhenn2006-04-021-2/+1
| | | | | | | | this changes if() BUG(); constructs to BUG_ON() which is cleaner, contains unlikely() and can better optimized away. Signed-off-by: Eric Sesterhenn <snakebyte@gmx.de> Signed-off-by: Adrian Bunk <bunk@stusta.de>
* [PATCH] b44: ensure valid mac addrGary Zambrano2006-03-291-0/+9
| | | | | | | Added code to check for invalid MAC address from eeprom or user input. Signed-off-by: Gary Zambrano <zambrano@broadcom.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* b44: fix force mac address before ifconfig upGary Zambrano2006-03-291-0/+5
| | | | | | | | | | Initializing the b44 MAC & PCI functional blocks in the controller must occur inside init_one(). This will allow access to the MAC registers. The controller was being powered up in b44_open() which would not allow access to the registers before ifconfig was up. Philip Kohlbecher found this bug. Signed-off-by: Gary Zambrano <zambrano@broadcom.com>
* [PATCH] b44: fix laptop carrier detectStephen Hemminger2006-01-261-2/+3
| | | | | | | | | | On my laptop, the b44 device is created and the carrier state defaults to ON when created by alloc_etherdev. This means tools like NetworkManager see the carrier as On and try and bring the device up. The correct thing to do is mark the carrier as Off when device is created. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] Fix warning with b44.c on 64bit boxesAlan Cox2006-01-171-1/+1
| | | | | | | sizeof() return is not an int, so use max_t to get the types right. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* b44: increase version numberFrancois Romieu2005-11-301-2/+2
| | | | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
* b44: early return in dev->do_ioctl when the device is not upFrancois Romieu2005-11-301-2/+5
| | | | | | | | The device has not gone through a whole reset/init sequence until the device is up. Accessing the mii interface before this point is not safe. Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
* b44: missing netif_wake_queue() in b44_open()Mark Lord2005-11-301-0/+2
| | | | | | | | | | This patch fixes a problem plaguing Dell notebooks with built-in b44 ethernet: The driver refuses to transmit packets of any kind until after the first 5-second tx_timeout occurs. This bug causes DHCP negotiation to fail (timeout) during installation of Ubuntu Linux. Signed-off-by: Mark Lord <lkml@rtr.ca> Signed-off-by: Andrew Morton <akpm@osdl.org>
* Merge branch 'upstream-linus' of ↵Linus Torvalds2005-11-091-68/+109
|\ | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
| * [PATCH] b44: increase version numberFrancois Romieu2005-11-091-2/+2
| | | | | | | | | | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] b44: race on device closingFrancois Romieu2005-11-091-0/+11
| | | | | | | | | | | | | | | | | | | | | | Usual fix: - b44_interrupt() does not schedule NAPI polling when the device is going down; - b44_close() waits for any scheduled NAPI polling before it starts to release the private structures of the device. Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] b44: replace B44_FLAG_INIT_COMPLETE with netif_running()Francois Romieu2005-11-091-4/+2
| | | | | | | | | | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] b44: late request_irq in b44_openFrancois Romieu2005-11-071-13/+9
| | | | | | | | | | | | | | Don't request_irq before the registers are reset/init. Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] b44: s/spin_lock_irqsave/spin_lock/ in b44_interruptFrancois Romieu2005-11-071-3/+2
| | | | | | | | | | | | | | | | There is no need to save/restore the irq state as the irq are always locally disabled when b44_interrupt is issued. Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] b44: expose counters through ethtoolFrancois Romieu2005-11-071-1/+44
| | | | | | | | | | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] b44: miscellaneous cleanupFrancois Romieu2005-11-071-39/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - remove unneeded forward declarations - s/kmalloc + memset/kzalloc/ - whitespace readjustement can't hurt - wrong comment: b44_init_rings _is_ called with a spinlock held in b44_{open/set_ringparam/set_pauseparam/etc}. Actually, it does not need to be able to sleep - b44_remove_one() can not be issued with a NULL device in its private member: remove the test. Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] b44: b44_start_xmit returns with a lock held when it fails allocatingFrancois Romieu2005-11-071-6/+11
| | | | | | | | | | | | | | The patch simply factors out the release of the lock. Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* | [PATCH] changing CONFIG_LOCALVERSION rebuilds too much, for no good reasonOlaf Hering2005-11-091-1/+0
|/ | | | | | | | | | | | | | | | | | | | | This patch removes almost all inclusions of linux/version.h. The 3 #defines are unused in most of the touched files. A few drivers use the simple KERNEL_VERSION(a,b,c) macro, which is unfortunatly in linux/version.h. There are also lots of #ifdef for long obsolete kernels, this was not touched. In a few places, the linux/version.h include was move to where the LINUX_VERSION_CODE was used. quilt vi `find * -type f -name "*.[ch]"|xargs grep -El '(UTS_RELEASE|LINUX_VERSION_CODE|KERNEL_VERSION|linux/version.h)'|grep -Ev '(/(boot|coda|drm)/|~$)'` search pattern: /UTS_RELEASE\|LINUX_VERSION_CODE\|KERNEL_VERSION\|linux\/\(utsname\|version\).h Signed-off-by: Olaf Hering <olh@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] b44: fix suspend/resumePavel Machek2005-10-281-0/+5
| | | | | | | | | | Fix suspend/resume on b44 by freeing/reacquiring irq. Otherwise it hangs on resume. Signed-off-by: Pavel Machek <pavel@suse.cz> Cc: Jeff Garzik <jgarzik@pobox.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* drivers/net: Remove pointless checks for NULL prior to calling kfree()Jesper Juhl2005-10-281-8/+4
|
* [netdrvr b44] include linux/dma-mapping.h to eliminate warningAndrew Morton2005-10-281-0/+1
|
* [PATCH] b44 reports wrong advertised flagsMatthew Wilcox2005-10-281-5/+5
| | | | | | | Looks like someone used the MII constants instead of the ethtool constants. Signed-off-by: Matthew Wilcox <matthew@wil.cx> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] b44: alternate allocation option for DMA descriptorsJohn W. Linville2005-10-181-8/+126
| | | | | | | | | | | | | | | | | This is a (final?) hack to support the odd DMA allocation requirements of the b44 hardware. The b44 hardware has a 30-bit DMA mask. On x86, anything less than a 32-bit DMA mask forces allocations into the 16MB GFP_DMA range. The memory there is somewhat limited, often resulting in an inability to initialize the b44 driver. This hack uses streaming DMA allocation APIs in order to provide an alternative in case the GFP_DMA allocation fails. It is somewhat ugly, but not much worse than the similar existing hacks to support SKB allocations in the same driver. FWIW, I have received positive feedback on this from several Fedora users. Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] b44: support ETHTOOL_GPERMADDRJohn W. Linville2005-09-141-0/+2
| | | | | | | Add support for ETHTOOL_GPERMADDR to b44. Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [ACPI] merge acpi-2.6.12 branch into latest Linux 2.6.13-rc...Len Brown2005-07-121-0/+3
|\ | | | | | | Signed-off-by: Len Brown <len.brown@intel.com>
| * [ACPI] S3 Suspend to RAM: fix driver suspend/resume methodsDavid Shaohua Li2005-07-111-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Drivers should do this: .suspend() pci_disable_device() .resume() pci_enable_device() http://bugzilla.kernel.org/show_bug.cgi?id=3469 Signed-off-by: David Shaohua Li <shaohua.li@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
OpenPOWER on IntegriCloud