- 09 1月, 2008 1 次提交
-
-
由 David S. Miller 提交于
Drivers do this to try to break out of the ->poll()'ing loop when the device is being brought administratively down. Now that we have a napi_disable() "pending" state we are going to solve that problem generically. Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 11 10月, 2007 2 次提交
-
-
由 Ralf Baechle 提交于
It's been a useless no-op for long enough in 2.6 so I figured it's time to remove it. The number of people that could object because they're maintaining unified 2.4 and 2.6 drivers is probably rather small. [ Handled drivers added by netdev tree and some missed IRDA cases... -DaveM ] Signed-off-by: NRalf Baechle <ralf@linux-mips.org> Signed-off-by: NJeff Garzik <jeff@garzik.org> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Stephen Hemminger 提交于
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: NStephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 11 7月, 2007 1 次提交
-
-
由 David S. Miller 提交于
It hasn't "summed" anything in over 7 years, and it's just a straight mempcy ala skb_copy_to_linear_data() so just get rid of it. Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 07 7月, 2007 1 次提交
-
-
由 Yoann Padioleau 提交于
In 7d12e780 David Howells performed this evolution: "IRQ: Maintain regs pointer globally rather than passing to IRQ handlers" He correctly updated many of the function definitions that were using this extra regs pointer parameter but forgot to update some caller sites of those functions. The reason the modifications was not properly done on all drivers is that some drivers were rarely compiled because they are for AMIGA, or that some code sites were inside #ifdefs where the option is not set or inside #if 0. Here is the semantic patch that found the occurences and fixed the problem. @ rule1 @ identifier fn; identifier irq, dev_id; typedef irqreturn_t; @@ static irqreturn_t fn(int irq, void *dev_id) { ... } @@ identifier rule1.fn; expression E1, E2, E3; @@ fn(E1, E2 - ,E3 ) Signed-off-by: NYoann Padioleau <padator@wanadoo.fr> Cc: "David S. Miller" <davem@davemloft.net> Cc: Jeff Garzik <jeff@garzik.org> Cc: Greg KH <greg@kroah.com> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 26 4月, 2007 1 次提交
-
-
由 Arnaldo Carvalho de Melo 提交于
One less thing for drivers writers to worry about. Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 05 10月, 2006 1 次提交
-
-
由 David Howells 提交于
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: NDavid Howells <dhowells@redhat.com> (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
-
- 03 7月, 2006 1 次提交
-
-
由 Thomas Gleixner 提交于
Signed-off-by: NThomas 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: NAndrew Morton <akpm@osdl.org> Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
-
- 01 7月, 2006 1 次提交
-
-
由 Jörn Engel 提交于
Signed-off-by: NJörn Engel <joern@wohnheim.fh-wedel.de> Signed-off-by: NAdrian Bunk <bunk@stusta.de>
-
- 16 5月, 2006 1 次提交
-
-
由 Lennert Buytenhek 提交于
three gigabit ports, but some enp2611 models only have two ports (and only one onboard PM3386.) The current driver assumes there are always three ports and so it doesn't work on the two-port version of the board at all. This patch adds a bit of logic to the enp2611 driver to limit the number of ports to 2 if the second PM3386 isn't detected. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NStephen Hemminger <shemminger@osdl.org>
-
- 30 3月, 2006 1 次提交
-
-
由 Lennert Buytenhek 提交于
gcc4 doesn't like us declaring a static function inside another function. We can do away with this construct altogether and use BUILD_BUG_ON() instead (idea from Andi Kleen.) Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jeff@garzik.org>
-
- 22 3月, 2006 1 次提交
-
-
由 Lennert Buytenhek 提交于
Patch from Lennert Buytenhek Move the uengine loader from arch/arm/mach-ixp2000 to arch/arm/common so that ixp23xx can use it too. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
- 04 12月, 2005 1 次提交
-
-
由 Stephen Hemminger 提交于
Sky2 update changed name of netif_schedule_test to __netif_schedule_prep Signed-off-by: NStephen Hemminger <shemminger@osdl.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
- 01 12月, 2005 15 次提交
-
-
由 Lennert Buytenhek 提交于
Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
Add netpoll support to the ixp2000 driver. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
Disable/enable the SERDES carrier when an interface is administratively downed/upped. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
Implement pm3386 reset. A reset zeroes out the internally stored MAC addresses, so we need to save and reload them by hand. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
Add a pm3386 hook for disabling/enabling the SERDES carrier, so that we can disable it when the interface is administratively downed, and enable it when it is upped. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
When we reset the pm3386, it loses its internally stored MAC addresses that were programmed into it by the bootloader (and are used by the hardware for the generation of PAUSE frames.) Add a hook to allow setting these addresses so that we can program them back by hand. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
After initialising, report the MAC address that we're using for each port. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
Report carrier going up/down. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
We assign nds[i] to a local variable 'dev', which we never use afterwards. Use the local variable instead. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
Even after an interface has gone !netif_running(), we still want to catch the 'carrier went down' event for our internal bookkeeping. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
The sky2 driver introduced netif_rx_schedule_test(). This is exactly what we need, so remove our local version of this function (which was called netif_rx_schedule_prep_notup) and use the generic one instead. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
Make caleb.c and pm3386.c include their own header files, to catch incorrect prototype definitions. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
Remove a number of unnecessary udelay() calls. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
Zero our stats structure properly. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 Lennert Buytenhek 提交于
Do not register our netdevices with the kernel until we've actually finished setting up the hardware and microcode. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
- 19 11月, 2005 1 次提交
-
-
由 Lennert Buytenhek 提交于
The way the hardware and firmware work is that there is one shared RX queue and IRQ for a number of different network interfaces. Due to this, we would like to process received packets for every interface in the same NAPI poll handler, so we need a pseudo-device to schedule polling on. What the driver currently does is that it always schedules polling for the first network interface in the list, and processes packets for every interface in the poll handler for that first interface -- however, this scheme breaks down if the first network interface happens to not be up, since netif_rx_schedule_prep() checks netif_running(). sky2 apparently has the same issue, and Stephen Hemminger suggested a way to work around this: create a variant of netif_rx_schedule_prep() that does not check netif_running(). I implemented this locally and called it netif_rx_schedule_prep_notup(), and it seems to work well, but it's something that probably not everyone would be happy with. The ixp2000 is an ARM CPU with a high-speed network interface in the CPU itself (full duplex 4Gb/s or 10Gb/s depending on the IXP model.) The CPU package also contains 8 or 16 (again depending on the IXP model) 'microengines', which are somewhat primitive but very fast and efficient processor cores which can be used to offload various things from the main CPU. This driver makes the high-speed network interface in the CPU visible and usable as a regular linux network device. Currently, it only supports the Radisys ENP2611 IXP board, but adding support for other board types should be fairly easy. Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-