Loading MAINTAINERS +3 −3 Original line number Diff line number Diff line Loading @@ -449,9 +449,9 @@ L: linux-hams@vger.kernel.org W: http://www.baycom.org/~tom/ham/ham.html S: Maintained BCM43XX WIRELESS DRIVER P: Michael Buesch M: mb@bu3sch.de BCM43XX WIRELESS DRIVER (SOFTMAC BASED VERSION) P: Larry Finger M: Larry.Finger@lwfinger.net P: Stefano Brivio M: st3@riseup.net W: http://bcm43xx.berlios.de/ Loading drivers/net/wireless/Kconfig +6 −17 Original line number Diff line number Diff line Loading @@ -271,25 +271,14 @@ config IPW2200_DEBUG bool "Enable full debugging output in IPW2200 module." depends on IPW2200 ---help--- This option will enable debug tracing output for the IPW2200. This option will enable low level debug tracing output for IPW2200. This will result in the kernel module being ~100k larger. You can control which debug output is sent to the kernel log by setting the value in /sys/bus/pci/drivers/ipw2200/debug_level This entry will only exist if this option is enabled. Note, normal debug code is already compiled in. This low level debug option enables debug on hot paths (e.g Tx, Rx, ISR) and will result in the kernel module being ~70 larger. Most users will typically not need this high verbosity debug information. To set a value, simply echo an 8-byte hex value to the same file: % echo 0x00000FFO > /sys/bus/pci/drivers/ipw2200/debug_level You can find the list of debug mask values in drivers/net/wireless/ipw2200.h If you are not trying to debug or develop the IPW2200 driver, you most likely want to say N here. If you are not sure, say N here. config AIRO tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards" Loading drivers/net/wireless/airo.c +16 −24 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ #include <linux/pci.h> #include <asm/uaccess.h> #include <net/ieee80211.h> #include <linux/kthread.h> #include "airo.h" Loading Loading @@ -1187,11 +1188,10 @@ struct airo_info { int whichbap); unsigned short *flash; tdsRssiEntry *rssi; struct task_struct *task; struct task_struct *list_bss_task; struct task_struct *airo_thread_task; struct semaphore sem; pid_t thr_pid; wait_queue_head_t thr_wait; struct completion thr_exited; unsigned long expires; struct { struct sk_buff *skb; Loading Loading @@ -1733,12 +1733,12 @@ static int readBSSListRid(struct airo_info *ai, int first, cmd.cmd=CMD_LISTBSS; if (down_interruptible(&ai->sem)) return -ERESTARTSYS; ai->list_bss_task = current; issuecommand(ai, &cmd, &rsp); up(&ai->sem); /* Let the command take effect */ ai->task = current; ssleep(3); ai->task = NULL; schedule_timeout_uninterruptible(3 * HZ); ai->list_bss_task = NULL; } rc = PC4500_readrid(ai, first ? ai->bssListFirst : ai->bssListNext, list, ai->bssListRidLen, 1); Loading Loading @@ -2400,8 +2400,7 @@ void stop_airo_card( struct net_device *dev, int freeres ) clear_bit(FLAG_REGISTERED, &ai->flags); } set_bit(JOB_DIE, &ai->jobs); kill_proc(ai->thr_pid, SIGTERM, 1); wait_for_completion(&ai->thr_exited); kthread_stop(ai->airo_thread_task); /* * Clean out tx queue Loading Loading @@ -2811,9 +2810,8 @@ static struct net_device *_init_airo_card( unsigned short irq, int port, ai->config.len = 0; ai->pci = pci; init_waitqueue_head (&ai->thr_wait); init_completion (&ai->thr_exited); ai->thr_pid = kernel_thread(airo_thread, dev, CLONE_FS | CLONE_FILES); if (ai->thr_pid < 0) ai->airo_thread_task = kthread_run(airo_thread, dev, dev->name); if (IS_ERR(ai->airo_thread_task)) goto err_out_free; ai->tfm = NULL; rc = add_airo_dev( dev ); Loading Loading @@ -2930,8 +2928,7 @@ static struct net_device *_init_airo_card( unsigned short irq, int port, del_airo_dev(dev); err_out_thr: set_bit(JOB_DIE, &ai->jobs); kill_proc(ai->thr_pid, SIGTERM, 1); wait_for_completion(&ai->thr_exited); kthread_stop(ai->airo_thread_task); err_out_free: free_netdev(dev); return NULL; Loading Loading @@ -3063,13 +3060,7 @@ static int airo_thread(void *data) { struct airo_info *ai = dev->priv; int locked; daemonize("%s", dev->name); allow_signal(SIGTERM); while(1) { if (signal_pending(current)) flush_signals(current); /* make swsusp happy with our thread */ try_to_freeze(); Loading Loading @@ -3097,7 +3088,7 @@ static int airo_thread(void *data) { set_bit(JOB_AUTOWEP, &ai->jobs); break; } if (!signal_pending(current)) { if (!kthread_should_stop()) { unsigned long wake_at; if (!ai->expires || !ai->scan_timeout) { wake_at = max(ai->expires, Loading @@ -3109,7 +3100,7 @@ static int airo_thread(void *data) { schedule_timeout(wake_at - jiffies); continue; } } else if (!signal_pending(current)) { } else if (!kthread_should_stop()) { schedule(); continue; } Loading Loading @@ -3154,7 +3145,8 @@ static int airo_thread(void *data) { else /* Shouldn't get here, but we make sure to unlock */ up(&ai->sem); } complete_and_exit (&ai->thr_exited, 0); return 0; } static irqreturn_t airo_interrupt ( int irq, void* dev_id, struct pt_regs *regs) { Loading Loading @@ -3235,8 +3227,8 @@ static irqreturn_t airo_interrupt ( int irq, void* dev_id, struct pt_regs *regs) if(newStatus == ASSOCIATED || newStatus == REASSOCIATED) { if (auto_wep) apriv->expires = 0; if (apriv->task) wake_up_process (apriv->task); if (apriv->list_bss_task) wake_up_process(apriv->list_bss_task); set_bit(FLAG_UPDATE_UNI, &apriv->flags); set_bit(FLAG_UPDATE_MULTI, &apriv->flags); Loading drivers/net/wireless/bcm43xx/bcm43xx.h +42 −16 Original line number Diff line number Diff line Loading @@ -33,14 +33,18 @@ #define BCM43xx_PCICFG_ICR 0x94 /* MMIO offsets */ #define BCM43xx_MMIO_DMA1_REASON 0x20 #define BCM43xx_MMIO_DMA1_IRQ_MASK 0x24 #define BCM43xx_MMIO_DMA2_REASON 0x28 #define BCM43xx_MMIO_DMA2_IRQ_MASK 0x2C #define BCM43xx_MMIO_DMA3_REASON 0x30 #define BCM43xx_MMIO_DMA3_IRQ_MASK 0x34 #define BCM43xx_MMIO_DMA4_REASON 0x38 #define BCM43xx_MMIO_DMA4_IRQ_MASK 0x3C #define BCM43xx_MMIO_DMA0_REASON 0x20 #define BCM43xx_MMIO_DMA0_IRQ_MASK 0x24 #define BCM43xx_MMIO_DMA1_REASON 0x28 #define BCM43xx_MMIO_DMA1_IRQ_MASK 0x2C #define BCM43xx_MMIO_DMA2_REASON 0x30 #define BCM43xx_MMIO_DMA2_IRQ_MASK 0x34 #define BCM43xx_MMIO_DMA3_REASON 0x38 #define BCM43xx_MMIO_DMA3_IRQ_MASK 0x3C #define BCM43xx_MMIO_DMA4_REASON 0x40 #define BCM43xx_MMIO_DMA4_IRQ_MASK 0x44 #define BCM43xx_MMIO_DMA5_REASON 0x48 #define BCM43xx_MMIO_DMA5_IRQ_MASK 0x4C #define BCM43xx_MMIO_STATUS_BITFIELD 0x120 #define BCM43xx_MMIO_STATUS2_BITFIELD 0x124 #define BCM43xx_MMIO_GEN_IRQ_REASON 0x128 Loading @@ -56,14 +60,27 @@ #define BCM43xx_MMIO_XMITSTAT_1 0x174 #define BCM43xx_MMIO_REV3PLUS_TSF_LOW 0x180 /* core rev >= 3 only */ #define BCM43xx_MMIO_REV3PLUS_TSF_HIGH 0x184 /* core rev >= 3 only */ #define BCM43xx_MMIO_DMA1_BASE 0x200 #define BCM43xx_MMIO_DMA2_BASE 0x220 #define BCM43xx_MMIO_DMA3_BASE 0x240 #define BCM43xx_MMIO_DMA4_BASE 0x260 /* 32-bit DMA */ #define BCM43xx_MMIO_DMA32_BASE0 0x200 #define BCM43xx_MMIO_DMA32_BASE1 0x220 #define BCM43xx_MMIO_DMA32_BASE2 0x240 #define BCM43xx_MMIO_DMA32_BASE3 0x260 #define BCM43xx_MMIO_DMA32_BASE4 0x280 #define BCM43xx_MMIO_DMA32_BASE5 0x2A0 /* 64-bit DMA */ #define BCM43xx_MMIO_DMA64_BASE0 0x200 #define BCM43xx_MMIO_DMA64_BASE1 0x240 #define BCM43xx_MMIO_DMA64_BASE2 0x280 #define BCM43xx_MMIO_DMA64_BASE3 0x2C0 #define BCM43xx_MMIO_DMA64_BASE4 0x300 #define BCM43xx_MMIO_DMA64_BASE5 0x340 /* PIO */ #define BCM43xx_MMIO_PIO1_BASE 0x300 #define BCM43xx_MMIO_PIO2_BASE 0x310 #define BCM43xx_MMIO_PIO3_BASE 0x320 #define BCM43xx_MMIO_PIO4_BASE 0x330 #define BCM43xx_MMIO_PHY_VER 0x3E0 #define BCM43xx_MMIO_PHY_RADIO 0x3E2 #define BCM43xx_MMIO_ANTENNA 0x3E8 Loading Loading @@ -233,8 +250,14 @@ #define BCM43xx_SBTMSTATELOW_FORCE_GATE_CLOCK 0x20000 /* sbtmstatehigh state flags */ #define BCM43xx_SBTMSTATEHIGH_SERROR 0x1 #define BCM43xx_SBTMSTATEHIGH_BUSY 0x4 #define BCM43xx_SBTMSTATEHIGH_SERROR 0x00000001 #define BCM43xx_SBTMSTATEHIGH_BUSY 0x00000004 #define BCM43xx_SBTMSTATEHIGH_TIMEOUT 0x00000020 #define BCM43xx_SBTMSTATEHIGH_COREFLAGS 0x1FFF0000 #define BCM43xx_SBTMSTATEHIGH_DMA64BIT 0x10000000 #define BCM43xx_SBTMSTATEHIGH_GATEDCLK 0x20000000 #define BCM43xx_SBTMSTATEHIGH_BISTFAILED 0x40000000 #define BCM43xx_SBTMSTATEHIGH_BISTCOMPLETE 0x80000000 /* sbimstate flags */ #define BCM43xx_SBIMSTATE_IB_ERROR 0x20000 Loading Loading @@ -574,8 +597,11 @@ struct bcm43xx_dma { struct bcm43xx_dmaring *tx_ring1; struct bcm43xx_dmaring *tx_ring2; struct bcm43xx_dmaring *tx_ring3; struct bcm43xx_dmaring *tx_ring4; struct bcm43xx_dmaring *tx_ring5; struct bcm43xx_dmaring *rx_ring0; struct bcm43xx_dmaring *rx_ring1; /* only available on core.rev < 5 */ struct bcm43xx_dmaring *rx_ring3; /* only available on core.rev < 5 */ }; /* Data structures for PIO transmission, per 80211 core. */ Loading Loading @@ -739,7 +765,7 @@ struct bcm43xx_private { /* Reason code of the last interrupt. */ u32 irq_reason; u32 dma_reason[4]; u32 dma_reason[6]; /* saved irq enable/disable state bitfield. */ u32 irq_savedstate; /* Link Quality calculation context. */ Loading Loading
MAINTAINERS +3 −3 Original line number Diff line number Diff line Loading @@ -449,9 +449,9 @@ L: linux-hams@vger.kernel.org W: http://www.baycom.org/~tom/ham/ham.html S: Maintained BCM43XX WIRELESS DRIVER P: Michael Buesch M: mb@bu3sch.de BCM43XX WIRELESS DRIVER (SOFTMAC BASED VERSION) P: Larry Finger M: Larry.Finger@lwfinger.net P: Stefano Brivio M: st3@riseup.net W: http://bcm43xx.berlios.de/ Loading
drivers/net/wireless/Kconfig +6 −17 Original line number Diff line number Diff line Loading @@ -271,25 +271,14 @@ config IPW2200_DEBUG bool "Enable full debugging output in IPW2200 module." depends on IPW2200 ---help--- This option will enable debug tracing output for the IPW2200. This option will enable low level debug tracing output for IPW2200. This will result in the kernel module being ~100k larger. You can control which debug output is sent to the kernel log by setting the value in /sys/bus/pci/drivers/ipw2200/debug_level This entry will only exist if this option is enabled. Note, normal debug code is already compiled in. This low level debug option enables debug on hot paths (e.g Tx, Rx, ISR) and will result in the kernel module being ~70 larger. Most users will typically not need this high verbosity debug information. To set a value, simply echo an 8-byte hex value to the same file: % echo 0x00000FFO > /sys/bus/pci/drivers/ipw2200/debug_level You can find the list of debug mask values in drivers/net/wireless/ipw2200.h If you are not trying to debug or develop the IPW2200 driver, you most likely want to say N here. If you are not sure, say N here. config AIRO tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards" Loading
drivers/net/wireless/airo.c +16 −24 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ #include <linux/pci.h> #include <asm/uaccess.h> #include <net/ieee80211.h> #include <linux/kthread.h> #include "airo.h" Loading Loading @@ -1187,11 +1188,10 @@ struct airo_info { int whichbap); unsigned short *flash; tdsRssiEntry *rssi; struct task_struct *task; struct task_struct *list_bss_task; struct task_struct *airo_thread_task; struct semaphore sem; pid_t thr_pid; wait_queue_head_t thr_wait; struct completion thr_exited; unsigned long expires; struct { struct sk_buff *skb; Loading Loading @@ -1733,12 +1733,12 @@ static int readBSSListRid(struct airo_info *ai, int first, cmd.cmd=CMD_LISTBSS; if (down_interruptible(&ai->sem)) return -ERESTARTSYS; ai->list_bss_task = current; issuecommand(ai, &cmd, &rsp); up(&ai->sem); /* Let the command take effect */ ai->task = current; ssleep(3); ai->task = NULL; schedule_timeout_uninterruptible(3 * HZ); ai->list_bss_task = NULL; } rc = PC4500_readrid(ai, first ? ai->bssListFirst : ai->bssListNext, list, ai->bssListRidLen, 1); Loading Loading @@ -2400,8 +2400,7 @@ void stop_airo_card( struct net_device *dev, int freeres ) clear_bit(FLAG_REGISTERED, &ai->flags); } set_bit(JOB_DIE, &ai->jobs); kill_proc(ai->thr_pid, SIGTERM, 1); wait_for_completion(&ai->thr_exited); kthread_stop(ai->airo_thread_task); /* * Clean out tx queue Loading Loading @@ -2811,9 +2810,8 @@ static struct net_device *_init_airo_card( unsigned short irq, int port, ai->config.len = 0; ai->pci = pci; init_waitqueue_head (&ai->thr_wait); init_completion (&ai->thr_exited); ai->thr_pid = kernel_thread(airo_thread, dev, CLONE_FS | CLONE_FILES); if (ai->thr_pid < 0) ai->airo_thread_task = kthread_run(airo_thread, dev, dev->name); if (IS_ERR(ai->airo_thread_task)) goto err_out_free; ai->tfm = NULL; rc = add_airo_dev( dev ); Loading Loading @@ -2930,8 +2928,7 @@ static struct net_device *_init_airo_card( unsigned short irq, int port, del_airo_dev(dev); err_out_thr: set_bit(JOB_DIE, &ai->jobs); kill_proc(ai->thr_pid, SIGTERM, 1); wait_for_completion(&ai->thr_exited); kthread_stop(ai->airo_thread_task); err_out_free: free_netdev(dev); return NULL; Loading Loading @@ -3063,13 +3060,7 @@ static int airo_thread(void *data) { struct airo_info *ai = dev->priv; int locked; daemonize("%s", dev->name); allow_signal(SIGTERM); while(1) { if (signal_pending(current)) flush_signals(current); /* make swsusp happy with our thread */ try_to_freeze(); Loading Loading @@ -3097,7 +3088,7 @@ static int airo_thread(void *data) { set_bit(JOB_AUTOWEP, &ai->jobs); break; } if (!signal_pending(current)) { if (!kthread_should_stop()) { unsigned long wake_at; if (!ai->expires || !ai->scan_timeout) { wake_at = max(ai->expires, Loading @@ -3109,7 +3100,7 @@ static int airo_thread(void *data) { schedule_timeout(wake_at - jiffies); continue; } } else if (!signal_pending(current)) { } else if (!kthread_should_stop()) { schedule(); continue; } Loading Loading @@ -3154,7 +3145,8 @@ static int airo_thread(void *data) { else /* Shouldn't get here, but we make sure to unlock */ up(&ai->sem); } complete_and_exit (&ai->thr_exited, 0); return 0; } static irqreturn_t airo_interrupt ( int irq, void* dev_id, struct pt_regs *regs) { Loading Loading @@ -3235,8 +3227,8 @@ static irqreturn_t airo_interrupt ( int irq, void* dev_id, struct pt_regs *regs) if(newStatus == ASSOCIATED || newStatus == REASSOCIATED) { if (auto_wep) apriv->expires = 0; if (apriv->task) wake_up_process (apriv->task); if (apriv->list_bss_task) wake_up_process(apriv->list_bss_task); set_bit(FLAG_UPDATE_UNI, &apriv->flags); set_bit(FLAG_UPDATE_MULTI, &apriv->flags); Loading
drivers/net/wireless/bcm43xx/bcm43xx.h +42 −16 Original line number Diff line number Diff line Loading @@ -33,14 +33,18 @@ #define BCM43xx_PCICFG_ICR 0x94 /* MMIO offsets */ #define BCM43xx_MMIO_DMA1_REASON 0x20 #define BCM43xx_MMIO_DMA1_IRQ_MASK 0x24 #define BCM43xx_MMIO_DMA2_REASON 0x28 #define BCM43xx_MMIO_DMA2_IRQ_MASK 0x2C #define BCM43xx_MMIO_DMA3_REASON 0x30 #define BCM43xx_MMIO_DMA3_IRQ_MASK 0x34 #define BCM43xx_MMIO_DMA4_REASON 0x38 #define BCM43xx_MMIO_DMA4_IRQ_MASK 0x3C #define BCM43xx_MMIO_DMA0_REASON 0x20 #define BCM43xx_MMIO_DMA0_IRQ_MASK 0x24 #define BCM43xx_MMIO_DMA1_REASON 0x28 #define BCM43xx_MMIO_DMA1_IRQ_MASK 0x2C #define BCM43xx_MMIO_DMA2_REASON 0x30 #define BCM43xx_MMIO_DMA2_IRQ_MASK 0x34 #define BCM43xx_MMIO_DMA3_REASON 0x38 #define BCM43xx_MMIO_DMA3_IRQ_MASK 0x3C #define BCM43xx_MMIO_DMA4_REASON 0x40 #define BCM43xx_MMIO_DMA4_IRQ_MASK 0x44 #define BCM43xx_MMIO_DMA5_REASON 0x48 #define BCM43xx_MMIO_DMA5_IRQ_MASK 0x4C #define BCM43xx_MMIO_STATUS_BITFIELD 0x120 #define BCM43xx_MMIO_STATUS2_BITFIELD 0x124 #define BCM43xx_MMIO_GEN_IRQ_REASON 0x128 Loading @@ -56,14 +60,27 @@ #define BCM43xx_MMIO_XMITSTAT_1 0x174 #define BCM43xx_MMIO_REV3PLUS_TSF_LOW 0x180 /* core rev >= 3 only */ #define BCM43xx_MMIO_REV3PLUS_TSF_HIGH 0x184 /* core rev >= 3 only */ #define BCM43xx_MMIO_DMA1_BASE 0x200 #define BCM43xx_MMIO_DMA2_BASE 0x220 #define BCM43xx_MMIO_DMA3_BASE 0x240 #define BCM43xx_MMIO_DMA4_BASE 0x260 /* 32-bit DMA */ #define BCM43xx_MMIO_DMA32_BASE0 0x200 #define BCM43xx_MMIO_DMA32_BASE1 0x220 #define BCM43xx_MMIO_DMA32_BASE2 0x240 #define BCM43xx_MMIO_DMA32_BASE3 0x260 #define BCM43xx_MMIO_DMA32_BASE4 0x280 #define BCM43xx_MMIO_DMA32_BASE5 0x2A0 /* 64-bit DMA */ #define BCM43xx_MMIO_DMA64_BASE0 0x200 #define BCM43xx_MMIO_DMA64_BASE1 0x240 #define BCM43xx_MMIO_DMA64_BASE2 0x280 #define BCM43xx_MMIO_DMA64_BASE3 0x2C0 #define BCM43xx_MMIO_DMA64_BASE4 0x300 #define BCM43xx_MMIO_DMA64_BASE5 0x340 /* PIO */ #define BCM43xx_MMIO_PIO1_BASE 0x300 #define BCM43xx_MMIO_PIO2_BASE 0x310 #define BCM43xx_MMIO_PIO3_BASE 0x320 #define BCM43xx_MMIO_PIO4_BASE 0x330 #define BCM43xx_MMIO_PHY_VER 0x3E0 #define BCM43xx_MMIO_PHY_RADIO 0x3E2 #define BCM43xx_MMIO_ANTENNA 0x3E8 Loading Loading @@ -233,8 +250,14 @@ #define BCM43xx_SBTMSTATELOW_FORCE_GATE_CLOCK 0x20000 /* sbtmstatehigh state flags */ #define BCM43xx_SBTMSTATEHIGH_SERROR 0x1 #define BCM43xx_SBTMSTATEHIGH_BUSY 0x4 #define BCM43xx_SBTMSTATEHIGH_SERROR 0x00000001 #define BCM43xx_SBTMSTATEHIGH_BUSY 0x00000004 #define BCM43xx_SBTMSTATEHIGH_TIMEOUT 0x00000020 #define BCM43xx_SBTMSTATEHIGH_COREFLAGS 0x1FFF0000 #define BCM43xx_SBTMSTATEHIGH_DMA64BIT 0x10000000 #define BCM43xx_SBTMSTATEHIGH_GATEDCLK 0x20000000 #define BCM43xx_SBTMSTATEHIGH_BISTFAILED 0x40000000 #define BCM43xx_SBTMSTATEHIGH_BISTCOMPLETE 0x80000000 /* sbimstate flags */ #define BCM43xx_SBIMSTATE_IB_ERROR 0x20000 Loading Loading @@ -574,8 +597,11 @@ struct bcm43xx_dma { struct bcm43xx_dmaring *tx_ring1; struct bcm43xx_dmaring *tx_ring2; struct bcm43xx_dmaring *tx_ring3; struct bcm43xx_dmaring *tx_ring4; struct bcm43xx_dmaring *tx_ring5; struct bcm43xx_dmaring *rx_ring0; struct bcm43xx_dmaring *rx_ring1; /* only available on core.rev < 5 */ struct bcm43xx_dmaring *rx_ring3; /* only available on core.rev < 5 */ }; /* Data structures for PIO transmission, per 80211 core. */ Loading Loading @@ -739,7 +765,7 @@ struct bcm43xx_private { /* Reason code of the last interrupt. */ u32 irq_reason; u32 dma_reason[4]; u32 dma_reason[6]; /* saved irq enable/disable state bitfield. */ u32 irq_savedstate; /* Link Quality calculation context. */ Loading