aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2006-10-05 09:55:46 -0400
committerDavid Howells <dhowells@warthog.cambridge.redhat.com>2006-10-05 10:10:12 -0400
commit7d12e780e003f93433d49ce78cfedf4b4c52adc5 (patch)
tree6748550400445c11a306b132009f3001e3525df8 /drivers/net/wireless
parentda482792a6d1a3fbaaa25fae867b343fb4db3246 (diff)
IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
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)
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/airo.c5
-rw-r--r--drivers/net/wireless/arlan-main.c4
-rw-r--r--drivers/net/wireless/atmel.c2
-rw-r--r--drivers/net/wireless/bcm43xx/bcm43xx_main.c4
-rw-r--r--drivers/net/wireless/hostap/hostap_hw.c2
-rw-r--r--drivers/net/wireless/ipw2100.c2
-rw-r--r--drivers/net/wireless/ipw2200.c2
-rw-r--r--drivers/net/wireless/netwave_cs.c6
-rw-r--r--drivers/net/wireless/orinoco.c2
-rw-r--r--drivers/net/wireless/orinoco.h2
-rw-r--r--drivers/net/wireless/prism54/islpci_dev.c2
-rw-r--r--drivers/net/wireless/prism54/islpci_dev.h2
-rw-r--r--drivers/net/wireless/ray_cs.c4
-rw-r--r--drivers/net/wireless/wavelan.c2
-rw-r--r--drivers/net/wireless/wavelan.p.h3
-rw-r--r--drivers/net/wireless/wavelan_cs.c3
-rw-r--r--drivers/net/wireless/wavelan_cs.p.h3
-rw-r--r--drivers/net/wireless/wl3501_cs.c3
-rw-r--r--drivers/net/wireless/zd1201.c6
-rw-r--r--drivers/net/wireless/zd1211rw/zd_usb.c6
20 files changed, 30 insertions, 35 deletions
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index 39d09345027c..0a33c8a56e13 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -1120,8 +1120,7 @@ static void mpi_receive_802_3(struct airo_info *ai);
1120static void mpi_receive_802_11(struct airo_info *ai); 1120static void mpi_receive_802_11(struct airo_info *ai);
1121static int waitbusy (struct airo_info *ai); 1121static int waitbusy (struct airo_info *ai);
1122 1122
1123static irqreturn_t airo_interrupt( int irq, void* dev_id, struct pt_regs 1123static irqreturn_t airo_interrupt( int irq, void* dev_id);
1124 *regs);
1125static int airo_thread(void *data); 1124static int airo_thread(void *data);
1126static void timer_func( struct net_device *dev ); 1125static void timer_func( struct net_device *dev );
1127static int airo_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 1126static int airo_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
@@ -3151,7 +3150,7 @@ static int airo_thread(void *data) {
3151 return 0; 3150 return 0;
3152} 3151}
3153 3152
3154static irqreturn_t airo_interrupt ( int irq, void* dev_id, struct pt_regs *regs) { 3153static irqreturn_t airo_interrupt ( int irq, void* dev_id) {
3155 struct net_device *dev = (struct net_device *)dev_id; 3154 struct net_device *dev = (struct net_device *)dev_id;
3156 u16 status; 3155 u16 status;
3157 u16 fid; 3156 u16 fid;
diff --git a/drivers/net/wireless/arlan-main.c b/drivers/net/wireless/arlan-main.c
index bb6bea4f3233..4688e56b69c7 100644
--- a/drivers/net/wireless/arlan-main.c
+++ b/drivers/net/wireless/arlan-main.c
@@ -78,7 +78,7 @@ static int arlans_found;
78 78
79static int arlan_open(struct net_device *dev); 79static int arlan_open(struct net_device *dev);
80static int arlan_tx(struct sk_buff *skb, struct net_device *dev); 80static int arlan_tx(struct sk_buff *skb, struct net_device *dev);
81static irqreturn_t arlan_interrupt(int irq, void *dev_id, struct pt_regs *regs); 81static irqreturn_t arlan_interrupt(int irq, void *dev_id);
82static int arlan_close(struct net_device *dev); 82static int arlan_close(struct net_device *dev);
83static struct net_device_stats * 83static struct net_device_stats *
84 arlan_statistics (struct net_device *dev); 84 arlan_statistics (struct net_device *dev);
@@ -1651,7 +1651,7 @@ end_int_process:
1651 return; 1651 return;
1652} 1652}
1653 1653
1654static irqreturn_t arlan_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1654static irqreturn_t arlan_interrupt(int irq, void *dev_id)
1655{ 1655{
1656 struct net_device *dev = dev_id; 1656 struct net_device *dev = dev_id;
1657 struct arlan_private *priv = netdev_priv(dev); 1657 struct arlan_private *priv = netdev_priv(dev);
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c
index 0fc267d626dc..31eed85de60f 100644
--- a/drivers/net/wireless/atmel.c
+++ b/drivers/net/wireless/atmel.c
@@ -1145,7 +1145,7 @@ next:
1145 } 1145 }
1146} 1146}
1147 1147
1148static irqreturn_t service_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1148static irqreturn_t service_interrupt(int irq, void *dev_id)
1149{ 1149{
1150 struct net_device *dev = (struct net_device *) dev_id; 1150 struct net_device *dev = (struct net_device *) dev_id;
1151 struct atmel_private *priv = netdev_priv(dev); 1151 struct atmel_private *priv = netdev_priv(dev);
diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
index eb65db7393ba..bad3452ea893 100644
--- a/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -1834,7 +1834,7 @@ static void bcm43xx_interrupt_ack(struct bcm43xx_private *bcm, u32 reason)
1834} 1834}
1835 1835
1836/* Interrupt handler top-half */ 1836/* Interrupt handler top-half */
1837static irqreturn_t bcm43xx_interrupt_handler(int irq, void *dev_id, struct pt_regs *regs) 1837static irqreturn_t bcm43xx_interrupt_handler(int irq, void *dev_id)
1838{ 1838{
1839 irqreturn_t ret = IRQ_HANDLED; 1839 irqreturn_t ret = IRQ_HANDLED;
1840 struct bcm43xx_private *bcm = dev_id; 1840 struct bcm43xx_private *bcm = dev_id;
@@ -3963,7 +3963,7 @@ static void bcm43xx_net_poll_controller(struct net_device *net_dev)
3963 3963
3964 local_irq_save(flags); 3964 local_irq_save(flags);
3965 if (bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED) 3965 if (bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED)
3966 bcm43xx_interrupt_handler(bcm->irq, bcm, NULL); 3966 bcm43xx_interrupt_handler(bcm->irq, bcm);
3967 local_irq_restore(flags); 3967 local_irq_restore(flags);
3968} 3968}
3969#endif /* CONFIG_NET_POLL_CONTROLLER */ 3969#endif /* CONFIG_NET_POLL_CONTROLLER */
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c
index d500012fdc7a..ed00ebb6e7f4 100644
--- a/drivers/net/wireless/hostap/hostap_hw.c
+++ b/drivers/net/wireless/hostap/hostap_hw.c
@@ -2622,7 +2622,7 @@ static void prism2_check_magic(local_info_t *local)
2622 2622
2623 2623
2624/* Called only from hardware IRQ */ 2624/* Called only from hardware IRQ */
2625static irqreturn_t prism2_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2625static irqreturn_t prism2_interrupt(int irq, void *dev_id)
2626{ 2626{
2627 struct net_device *dev = (struct net_device *) dev_id; 2627 struct net_device *dev = (struct net_device *) dev_id;
2628 struct hostap_interface *iface; 2628 struct hostap_interface *iface;
diff --git a/drivers/net/wireless/ipw2100.c b/drivers/net/wireless/ipw2100.c
index 599e2fe76188..4e4eaa2a99ca 100644
--- a/drivers/net/wireless/ipw2100.c
+++ b/drivers/net/wireless/ipw2100.c
@@ -3255,7 +3255,7 @@ static void ipw2100_irq_tasklet(struct ipw2100_priv *priv)
3255 IPW_DEBUG_ISR("exit\n"); 3255 IPW_DEBUG_ISR("exit\n");
3256} 3256}
3257 3257
3258static irqreturn_t ipw2100_interrupt(int irq, void *data, struct pt_regs *regs) 3258static irqreturn_t ipw2100_interrupt(int irq, void *data)
3259{ 3259{
3260 struct ipw2100_priv *priv = data; 3260 struct ipw2100_priv *priv = data;
3261 u32 inta, inta_mask; 3261 u32 inta, inta_mask;
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
index 5685d7ba55bb..1f742814a01c 100644
--- a/drivers/net/wireless/ipw2200.c
+++ b/drivers/net/wireless/ipw2200.c
@@ -10467,7 +10467,7 @@ static const struct ethtool_ops ipw_ethtool_ops = {
10467 .set_eeprom = ipw_ethtool_set_eeprom, 10467 .set_eeprom = ipw_ethtool_set_eeprom,
10468}; 10468};
10469 10469
10470static irqreturn_t ipw_isr(int irq, void *data, struct pt_regs *regs) 10470static irqreturn_t ipw_isr(int irq, void *data)
10471{ 10471{
10472 struct ipw_priv *priv = data; 10472 struct ipw_priv *priv = data;
10473 u32 inta, inta_mask; 10473 u32 inta, inta_mask;
diff --git a/drivers/net/wireless/netwave_cs.c b/drivers/net/wireless/netwave_cs.c
index 36b5e004305e..6714e0dfa8d6 100644
--- a/drivers/net/wireless/netwave_cs.c
+++ b/drivers/net/wireless/netwave_cs.c
@@ -207,7 +207,7 @@ static int netwave_start_xmit( struct sk_buff *skb, struct net_device *dev);
207static int netwave_rx( struct net_device *dev); 207static int netwave_rx( struct net_device *dev);
208 208
209/* Interrupt routines */ 209/* Interrupt routines */
210static irqreturn_t netwave_interrupt(int irq, void *dev_id, struct pt_regs *regs); 210static irqreturn_t netwave_interrupt(int irq, void *dev_id);
211static void netwave_watchdog(struct net_device *); 211static void netwave_watchdog(struct net_device *);
212 212
213/* Statistics */ 213/* Statistics */
@@ -1072,7 +1072,7 @@ static int netwave_start_xmit(struct sk_buff *skb, struct net_device *dev) {
1072} /* netwave_start_xmit */ 1072} /* netwave_start_xmit */
1073 1073
1074/* 1074/*
1075 * Function netwave_interrupt (irq, dev_id, regs) 1075 * Function netwave_interrupt (irq, dev_id)
1076 * 1076 *
1077 * This function is the interrupt handler for the Netwave card. This 1077 * This function is the interrupt handler for the Netwave card. This
1078 * routine will be called whenever: 1078 * routine will be called whenever:
@@ -1081,7 +1081,7 @@ static int netwave_start_xmit(struct sk_buff *skb, struct net_device *dev) {
1081 * ready to transmit another packet. 1081 * ready to transmit another packet.
1082 * 3. A command has completed execution. 1082 * 3. A command has completed execution.
1083 */ 1083 */
1084static irqreturn_t netwave_interrupt(int irq, void* dev_id, struct pt_regs *regs) 1084static irqreturn_t netwave_interrupt(int irq, void* dev_id)
1085{ 1085{
1086 kio_addr_t iobase; 1086 kio_addr_t iobase;
1087 u_char __iomem *ramBase; 1087 u_char __iomem *ramBase;
diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c
index 9e19a963febc..793da5f69344 100644
--- a/drivers/net/wireless/orinoco.c
+++ b/drivers/net/wireless/orinoco.c
@@ -1952,7 +1952,7 @@ static void __orinoco_ev_wterr(struct net_device *dev, hermes_t *hw)
1952 dev->name); 1952 dev->name);
1953} 1953}
1954 1954
1955irqreturn_t orinoco_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1955irqreturn_t orinoco_interrupt(int irq, void *dev_id)
1956{ 1956{
1957 struct net_device *dev = (struct net_device *)dev_id; 1957 struct net_device *dev = (struct net_device *)dev_id;
1958 struct orinoco_private *priv = netdev_priv(dev); 1958 struct orinoco_private *priv = netdev_priv(dev);
diff --git a/drivers/net/wireless/orinoco.h b/drivers/net/wireless/orinoco.h
index fb5700d6c454..4720fb20d66d 100644
--- a/drivers/net/wireless/orinoco.h
+++ b/drivers/net/wireless/orinoco.h
@@ -128,7 +128,7 @@ extern void free_orinocodev(struct net_device *dev);
128extern int __orinoco_up(struct net_device *dev); 128extern int __orinoco_up(struct net_device *dev);
129extern int __orinoco_down(struct net_device *dev); 129extern int __orinoco_down(struct net_device *dev);
130extern int orinoco_reinit_firmware(struct net_device *dev); 130extern int orinoco_reinit_firmware(struct net_device *dev);
131extern irqreturn_t orinoco_interrupt(int irq, void * dev_id, struct pt_regs *regs); 131extern irqreturn_t orinoco_interrupt(int irq, void * dev_id);
132 132
133/********************************************************************/ 133/********************************************************************/
134/* Locking and synchronization functions */ 134/* Locking and synchronization functions */
diff --git a/drivers/net/wireless/prism54/islpci_dev.c b/drivers/net/wireless/prism54/islpci_dev.c
index ab3c5a27efd9..ec1c00f19eb3 100644
--- a/drivers/net/wireless/prism54/islpci_dev.c
+++ b/drivers/net/wireless/prism54/islpci_dev.c
@@ -182,7 +182,7 @@ isl_upload_firmware(islpci_private *priv)
182******************************************************************************/ 182******************************************************************************/
183 183
184irqreturn_t 184irqreturn_t
185islpci_interrupt(int irq, void *config, struct pt_regs *regs) 185islpci_interrupt(int irq, void *config)
186{ 186{
187 u32 reg; 187 u32 reg;
188 islpci_private *priv = config; 188 islpci_private *priv = config;
diff --git a/drivers/net/wireless/prism54/islpci_dev.h b/drivers/net/wireless/prism54/islpci_dev.h
index 5049f37455b1..2f7e525d0cf6 100644
--- a/drivers/net/wireless/prism54/islpci_dev.h
+++ b/drivers/net/wireless/prism54/islpci_dev.h
@@ -198,7 +198,7 @@ islpci_state_t islpci_set_state(islpci_private *priv, islpci_state_t new_state);
198 198
199#define ISLPCI_TX_TIMEOUT (2*HZ) 199#define ISLPCI_TX_TIMEOUT (2*HZ)
200 200
201irqreturn_t islpci_interrupt(int, void *, struct pt_regs *); 201irqreturn_t islpci_interrupt(int, void *);
202 202
203int prism54_post_setup(islpci_private *, int); 203int prism54_post_setup(islpci_private *, int);
204int islpci_reset(islpci_private *, int); 204int islpci_reset(islpci_private *, int);
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c
index e82548ea609a..0b381d77015c 100644
--- a/drivers/net/wireless/ray_cs.c
+++ b/drivers/net/wireless/ray_cs.c
@@ -130,7 +130,7 @@ static void ray_update_parm(struct net_device *dev, UCHAR objid, UCHAR *value, i
130static void verify_dl_startup(u_long); 130static void verify_dl_startup(u_long);
131 131
132/* Prototypes for interrpt time functions **********************************/ 132/* Prototypes for interrpt time functions **********************************/
133static irqreturn_t ray_interrupt (int reg, void *dev_id, struct pt_regs *regs); 133static irqreturn_t ray_interrupt (int reg, void *dev_id);
134static void clear_interrupt(ray_dev_t *local); 134static void clear_interrupt(ray_dev_t *local);
135static void rx_deauthenticate(ray_dev_t *local, struct rcs __iomem *prcs, 135static void rx_deauthenticate(ray_dev_t *local, struct rcs __iomem *prcs,
136 unsigned int pkt_addr, int rx_len); 136 unsigned int pkt_addr, int rx_len);
@@ -1940,7 +1940,7 @@ static void set_multicast_list(struct net_device *dev)
1940/*============================================================================= 1940/*=============================================================================
1941 * All routines below here are run at interrupt time. 1941 * All routines below here are run at interrupt time.
1942=============================================================================*/ 1942=============================================================================*/
1943static irqreturn_t ray_interrupt(int irq, void *dev_id, struct pt_regs * regs) 1943static irqreturn_t ray_interrupt(int irq, void *dev_id)
1944{ 1944{
1945 struct net_device *dev = (struct net_device *)dev_id; 1945 struct net_device *dev = (struct net_device *)dev_id;
1946 struct pcmcia_device *link; 1946 struct pcmcia_device *link;
diff --git a/drivers/net/wireless/wavelan.c b/drivers/net/wireless/wavelan.c
index 5b69befdab74..24221e476cd3 100644
--- a/drivers/net/wireless/wavelan.c
+++ b/drivers/net/wireless/wavelan.c
@@ -3768,7 +3768,7 @@ static int wv_check_ioaddr(unsigned long ioaddr, u8 * mac)
3768 * This function is the interrupt handler for the WaveLAN card. This 3768 * This function is the interrupt handler for the WaveLAN card. This
3769 * routine will be called whenever: 3769 * routine will be called whenever:
3770 */ 3770 */
3771static irqreturn_t wavelan_interrupt(int irq, void *dev_id, struct pt_regs *regs) 3771static irqreturn_t wavelan_interrupt(int irq, void *dev_id)
3772{ 3772{
3773 struct net_device *dev; 3773 struct net_device *dev;
3774 unsigned long ioaddr; 3774 unsigned long ioaddr;
diff --git a/drivers/net/wireless/wavelan.p.h b/drivers/net/wireless/wavelan.p.h
index 5cb0bc8bb128..72b646c77d5a 100644
--- a/drivers/net/wireless/wavelan.p.h
+++ b/drivers/net/wireless/wavelan.p.h
@@ -642,8 +642,7 @@ static int
642/* ---------------------- INTERRUPT HANDLING ---------------------- */ 642/* ---------------------- INTERRUPT HANDLING ---------------------- */
643static irqreturn_t 643static irqreturn_t
644 wavelan_interrupt(int, /* interrupt handler */ 644 wavelan_interrupt(int, /* interrupt handler */
645 void *, 645 void *);
646 struct pt_regs *);
647static void 646static void
648 wavelan_watchdog(struct net_device *); /* transmission watchdog */ 647 wavelan_watchdog(struct net_device *); /* transmission watchdog */
649/* ------------------- CONFIGURATION CALLBACKS ------------------- */ 648/* ------------------- CONFIGURATION CALLBACKS ------------------- */
diff --git a/drivers/net/wireless/wavelan_cs.c b/drivers/net/wireless/wavelan_cs.c
index 0065f057bb1c..cadfe132db84 100644
--- a/drivers/net/wireless/wavelan_cs.c
+++ b/drivers/net/wireless/wavelan_cs.c
@@ -4117,8 +4117,7 @@ wv_pcmcia_release(struct pcmcia_device *link)
4117 */ 4117 */
4118static irqreturn_t 4118static irqreturn_t
4119wavelan_interrupt(int irq, 4119wavelan_interrupt(int irq,
4120 void * dev_id, 4120 void * dev_id)
4121 struct pt_regs * regs)
4122{ 4121{
4123 struct net_device * dev; 4122 struct net_device * dev;
4124 net_local * lp; 4123 net_local * lp;
diff --git a/drivers/net/wireless/wavelan_cs.p.h b/drivers/net/wireless/wavelan_cs.p.h
index f34a36b0c7b0..4d1c4905c749 100644
--- a/drivers/net/wireless/wavelan_cs.p.h
+++ b/drivers/net/wireless/wavelan_cs.p.h
@@ -738,8 +738,7 @@ static void
738/* ---------------------- INTERRUPT HANDLING ---------------------- */ 738/* ---------------------- INTERRUPT HANDLING ---------------------- */
739static irqreturn_t 739static irqreturn_t
740 wavelan_interrupt(int, /* Interrupt handler */ 740 wavelan_interrupt(int, /* Interrupt handler */
741 void *, 741 void *);
742 struct pt_regs *);
743static void 742static void
744 wavelan_watchdog(struct net_device *); /* Transmission watchdog */ 743 wavelan_watchdog(struct net_device *); /* Transmission watchdog */
745/* ------------------- CONFIGURATION CALLBACKS ------------------- */ 744/* ------------------- CONFIGURATION CALLBACKS ------------------- */
diff --git a/drivers/net/wireless/wl3501_cs.c b/drivers/net/wireless/wl3501_cs.c
index e3ae5f60d5be..a1430352169b 100644
--- a/drivers/net/wireless/wl3501_cs.c
+++ b/drivers/net/wireless/wl3501_cs.c
@@ -1145,7 +1145,6 @@ static inline void wl3501_ack_interrupt(struct wl3501_card *this)
1145 * wl3501_interrupt - Hardware interrupt from card. 1145 * wl3501_interrupt - Hardware interrupt from card.
1146 * @irq - Interrupt number 1146 * @irq - Interrupt number
1147 * @dev_id - net_device 1147 * @dev_id - net_device
1148 * @regs - registers
1149 * 1148 *
1150 * We must acknowledge the interrupt as soon as possible, and block the 1149 * We must acknowledge the interrupt as soon as possible, and block the
1151 * interrupt from the same card immediately to prevent re-entry. 1150 * interrupt from the same card immediately to prevent re-entry.
@@ -1154,7 +1153,7 @@ static inline void wl3501_ack_interrupt(struct wl3501_card *this)
1154 * On the other hand, to prevent SUTRO from malfunctioning, we must 1153 * On the other hand, to prevent SUTRO from malfunctioning, we must
1155 * unlock the SUTRO as soon as possible. 1154 * unlock the SUTRO as soon as possible.
1156 */ 1155 */
1157static irqreturn_t wl3501_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1156static irqreturn_t wl3501_interrupt(int irq, void *dev_id)
1158{ 1157{
1159 struct net_device *dev = (struct net_device *)dev_id; 1158 struct net_device *dev = (struct net_device *)dev_id;
1160 struct wl3501_card *this; 1159 struct wl3501_card *this;
diff --git a/drivers/net/wireless/zd1201.c b/drivers/net/wireless/zd1201.c
index 80af9a9fcbb3..30057a335a7b 100644
--- a/drivers/net/wireless/zd1201.c
+++ b/drivers/net/wireless/zd1201.c
@@ -112,7 +112,7 @@ exit:
112 return err; 112 return err;
113} 113}
114 114
115static void zd1201_usbfree(struct urb *urb, struct pt_regs *regs) 115static void zd1201_usbfree(struct urb *urb)
116{ 116{
117 struct zd1201 *zd = urb->context; 117 struct zd1201 *zd = urb->context;
118 118
@@ -177,7 +177,7 @@ static int zd1201_docmd(struct zd1201 *zd, int cmd, int parm0,
177} 177}
178 178
179/* Callback after sending out a packet */ 179/* Callback after sending out a packet */
180static void zd1201_usbtx(struct urb *urb, struct pt_regs *regs) 180static void zd1201_usbtx(struct urb *urb)
181{ 181{
182 struct zd1201 *zd = urb->context; 182 struct zd1201 *zd = urb->context;
183 netif_wake_queue(zd->dev); 183 netif_wake_queue(zd->dev);
@@ -185,7 +185,7 @@ static void zd1201_usbtx(struct urb *urb, struct pt_regs *regs)
185} 185}
186 186
187/* Incoming data */ 187/* Incoming data */
188static void zd1201_usbrx(struct urb *urb, struct pt_regs *regs) 188static void zd1201_usbrx(struct urb *urb)
189{ 189{
190 struct zd1201 *zd = urb->context; 190 struct zd1201 *zd = urb->context;
191 int free = 0; 191 int free = 0;
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c
index 5c265ad0485a..3faaeb2b7c89 100644
--- a/drivers/net/wireless/zd1211rw/zd_usb.c
+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
@@ -408,7 +408,7 @@ static inline void handle_retry_failed_int(struct urb *urb)
408} 408}
409 409
410 410
411static void int_urb_complete(struct urb *urb, struct pt_regs *pt_regs) 411static void int_urb_complete(struct urb *urb)
412{ 412{
413 int r; 413 int r;
414 struct usb_int_header *hdr; 414 struct usb_int_header *hdr;
@@ -609,7 +609,7 @@ static void handle_rx_packet(struct zd_usb *usb, const u8 *buffer,
609 } 609 }
610} 610}
611 611
612static void rx_urb_complete(struct urb *urb, struct pt_regs *pt_regs) 612static void rx_urb_complete(struct urb *urb)
613{ 613{
614 struct zd_usb *usb; 614 struct zd_usb *usb;
615 struct zd_usb_rx *rx; 615 struct zd_usb_rx *rx;
@@ -779,7 +779,7 @@ void zd_usb_disable_rx(struct zd_usb *usb)
779 spin_unlock_irqrestore(&rx->lock, flags); 779 spin_unlock_irqrestore(&rx->lock, flags);
780} 780}
781 781
782static void tx_urb_complete(struct urb *urb, struct pt_regs *pt_regs) 782static void tx_urb_complete(struct urb *urb)
783{ 783{
784 int r; 784 int r;
785 785