diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-07 15:23:31 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-07 15:23:31 -0400 |
| commit | 9fa0853a85a3a4067e4ad0aaa5d90984c2dd21b5 (patch) | |
| tree | ac90f6535bc053b3859dc050cbbd577a0a1ef95b | |
| parent | ef93127e4c7b4b8d46421045641048397eaac43d (diff) | |
| parent | cf4328cd949c2086091c62c5685f1580fe9b55e4 (diff) | |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
[NET]: rfkill: add support for input key to control wireless radio
[NET] net/core: Fix error handling
[TG3]: Update version and reldate.
[TG3]: Eliminate spurious interrupts.
[TG3]: Add ASPM workaround.
[Bluetooth] Correct SCO buffer for another Broadcom based dongle
[Bluetooth] Add support for Targus ACB10US USB dongle
[Bluetooth] Disconnect L2CAP connection after last RFCOMM DLC
[Bluetooth] Check that device is in rfcomm_dev_list before deleting
[Bluetooth] Use in-kernel sockets API
[Bluetooth] Attach host adapters to the Bluetooth bus
[Bluetooth] Fix L2CAP and HCI setsockopt() information leaks
| -rw-r--r-- | drivers/bluetooth/hci_usb.c | 6 | ||||
| -rw-r--r-- | drivers/net/tg3.c | 40 | ||||
| -rw-r--r-- | drivers/net/tg3.h | 10 | ||||
| -rw-r--r-- | include/linux/rfkill.h | 89 | ||||
| -rw-r--r-- | net/Kconfig | 2 | ||||
| -rw-r--r-- | net/Makefile | 1 | ||||
| -rw-r--r-- | net/bluetooth/hci_sock.c | 9 | ||||
| -rw-r--r-- | net/bluetooth/hci_sysfs.c | 9 | ||||
| -rw-r--r-- | net/bluetooth/l2cap.c | 6 | ||||
| -rw-r--r-- | net/bluetooth/rfcomm/core.c | 29 | ||||
| -rw-r--r-- | net/bluetooth/rfcomm/tty.c | 11 | ||||
| -rw-r--r-- | net/core/dev.c | 4 | ||||
| -rw-r--r-- | net/rfkill/Kconfig | 24 | ||||
| -rw-r--r-- | net/rfkill/Makefile | 6 | ||||
| -rw-r--r-- | net/rfkill/rfkill-input.c | 174 | ||||
| -rw-r--r-- | net/rfkill/rfkill.c | 407 |
16 files changed, 804 insertions, 23 deletions
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c index 406af579ac..b0238b46dd 100644 --- a/drivers/bluetooth/hci_usb.c +++ b/drivers/bluetooth/hci_usb.c | |||
| @@ -114,10 +114,16 @@ static struct usb_device_id blacklist_ids[] = { | |||
| 114 | { USB_DEVICE(0x0a5c, 0x200a), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU }, | 114 | { USB_DEVICE(0x0a5c, 0x200a), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU }, |
| 115 | { USB_DEVICE(0x0a5c, 0x2009), .driver_info = HCI_BCM92035 }, | 115 | { USB_DEVICE(0x0a5c, 0x2009), .driver_info = HCI_BCM92035 }, |
| 116 | 116 | ||
| 117 | /* Broadcom BCM2045 */ | ||
| 118 | { USB_DEVICE(0x0a5c, 0x2101), .driver_info = HCI_WRONG_SCO_MTU }, | ||
| 119 | |||
| 117 | /* IBM/Lenovo ThinkPad with Broadcom chip */ | 120 | /* IBM/Lenovo ThinkPad with Broadcom chip */ |
| 118 | { USB_DEVICE(0x0a5c, 0x201e), .driver_info = HCI_WRONG_SCO_MTU }, | 121 | { USB_DEVICE(0x0a5c, 0x201e), .driver_info = HCI_WRONG_SCO_MTU }, |
| 119 | { USB_DEVICE(0x0a5c, 0x2110), .driver_info = HCI_WRONG_SCO_MTU }, | 122 | { USB_DEVICE(0x0a5c, 0x2110), .driver_info = HCI_WRONG_SCO_MTU }, |
| 120 | 123 | ||
| 124 | /* Targus ACB10US */ | ||
| 125 | { USB_DEVICE(0x0a5c, 0x2100), .driver_info = HCI_RESET }, | ||
| 126 | |||
| 121 | /* ANYCOM Bluetooth USB-200 and USB-250 */ | 127 | /* ANYCOM Bluetooth USB-200 and USB-250 */ |
| 122 | { USB_DEVICE(0x0a5c, 0x2111), .driver_info = HCI_RESET }, | 128 | { USB_DEVICE(0x0a5c, 0x2111), .driver_info = HCI_RESET }, |
| 123 | 129 | ||
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 59d6e74a4a..e5e901ecd8 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
| @@ -64,8 +64,8 @@ | |||
| 64 | 64 | ||
| 65 | #define DRV_MODULE_NAME "tg3" | 65 | #define DRV_MODULE_NAME "tg3" |
| 66 | #define PFX DRV_MODULE_NAME ": " | 66 | #define PFX DRV_MODULE_NAME ": " |
| 67 | #define DRV_MODULE_VERSION "3.75" | 67 | #define DRV_MODULE_VERSION "3.76" |
| 68 | #define DRV_MODULE_RELDATE "March 23, 2007" | 68 | #define DRV_MODULE_RELDATE "May 5, 2007" |
| 69 | 69 | ||
| 70 | #define TG3_DEF_MAC_MODE 0 | 70 | #define TG3_DEF_MAC_MODE 0 |
| 71 | #define TG3_DEF_RX_MODE 0 | 71 | #define TG3_DEF_RX_MODE 0 |
| @@ -3019,6 +3019,16 @@ static int tg3_setup_phy(struct tg3 *tp, int force_reset) | |||
| 3019 | } | 3019 | } |
| 3020 | } | 3020 | } |
| 3021 | 3021 | ||
| 3022 | if (tp->tg3_flags & TG3_FLAG_ASPM_WORKAROUND) { | ||
| 3023 | u32 val = tr32(PCIE_PWR_MGMT_THRESH); | ||
| 3024 | if (!netif_carrier_ok(tp->dev)) | ||
| 3025 | val = (val & ~PCIE_PWR_MGMT_L1_THRESH_MSK) | | ||
| 3026 | tp->pwrmgmt_thresh; | ||
| 3027 | else | ||
| 3028 | val |= PCIE_PWR_MGMT_L1_THRESH_MSK; | ||
| 3029 | tw32(PCIE_PWR_MGMT_THRESH, val); | ||
| 3030 | } | ||
| 3031 | |||
| 3022 | return err; | 3032 | return err; |
| 3023 | } | 3033 | } |
| 3024 | 3034 | ||
| @@ -3580,8 +3590,12 @@ static irqreturn_t tg3_interrupt(int irq, void *dev_id) | |||
| 3580 | * Writing non-zero to intr-mbox-0 additional tells the | 3590 | * Writing non-zero to intr-mbox-0 additional tells the |
| 3581 | * NIC to stop sending us irqs, engaging "in-intr-handler" | 3591 | * NIC to stop sending us irqs, engaging "in-intr-handler" |
| 3582 | * event coalescing. | 3592 | * event coalescing. |
| 3593 | * | ||
| 3594 | * Flush the mailbox to de-assert the IRQ immediately to prevent | ||
| 3595 | * spurious interrupts. The flush impacts performance but | ||
| 3596 | * excessive spurious interrupts can be worse in some cases. | ||
| 3583 | */ | 3597 | */ |
| 3584 | tw32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 0x00000001); | 3598 | tw32_mailbox_f(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 0x00000001); |
| 3585 | if (tg3_irq_sync(tp)) | 3599 | if (tg3_irq_sync(tp)) |
| 3586 | goto out; | 3600 | goto out; |
| 3587 | sblk->status &= ~SD_STATUS_UPDATED; | 3601 | sblk->status &= ~SD_STATUS_UPDATED; |
| @@ -3625,8 +3639,12 @@ static irqreturn_t tg3_interrupt_tagged(int irq, void *dev_id) | |||
| 3625 | * writing non-zero to intr-mbox-0 additional tells the | 3639 | * writing non-zero to intr-mbox-0 additional tells the |
| 3626 | * NIC to stop sending us irqs, engaging "in-intr-handler" | 3640 | * NIC to stop sending us irqs, engaging "in-intr-handler" |
| 3627 | * event coalescing. | 3641 | * event coalescing. |
| 3642 | * | ||
| 3643 | * Flush the mailbox to de-assert the IRQ immediately to prevent | ||
| 3644 | * spurious interrupts. The flush impacts performance but | ||
| 3645 | * excessive spurious interrupts can be worse in some cases. | ||
| 3628 | */ | 3646 | */ |
| 3629 | tw32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 0x00000001); | 3647 | tw32_mailbox_f(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 0x00000001); |
| 3630 | if (tg3_irq_sync(tp)) | 3648 | if (tg3_irq_sync(tp)) |
| 3631 | goto out; | 3649 | goto out; |
| 3632 | if (netif_rx_schedule_prep(dev)) { | 3650 | if (netif_rx_schedule_prep(dev)) { |
| @@ -10004,6 +10022,8 @@ static void __devinit tg3_get_eeprom_hw_cfg(struct tg3 *tp) | |||
| 10004 | tp->tg3_flags &= ~TG3_FLAG_EEPROM_WRITE_PROT; | 10022 | tp->tg3_flags &= ~TG3_FLAG_EEPROM_WRITE_PROT; |
| 10005 | tp->tg3_flags2 |= TG3_FLG2_IS_NIC; | 10023 | tp->tg3_flags2 |= TG3_FLG2_IS_NIC; |
| 10006 | } | 10024 | } |
| 10025 | if (tr32(VCPU_CFGSHDW) & VCPU_CFGSHDW_ASPM_DBNC) | ||
| 10026 | tp->tg3_flags |= TG3_FLAG_ASPM_WORKAROUND; | ||
| 10007 | return; | 10027 | return; |
| 10008 | } | 10028 | } |
| 10009 | 10029 | ||
| @@ -10131,6 +10151,14 @@ static void __devinit tg3_get_eeprom_hw_cfg(struct tg3 *tp) | |||
| 10131 | /* bootcode if bit 18 is set */ | 10151 | /* bootcode if bit 18 is set */ |
| 10132 | if (cfg2 & (1 << 18)) | 10152 | if (cfg2 & (1 << 18)) |
| 10133 | tp->tg3_flags2 |= TG3_FLG2_SERDES_PREEMPHASIS; | 10153 | tp->tg3_flags2 |= TG3_FLG2_SERDES_PREEMPHASIS; |
| 10154 | |||
| 10155 | if (tp->tg3_flags2 & TG3_FLG2_PCI_EXPRESS) { | ||
| 10156 | u32 cfg3; | ||
| 10157 | |||
| 10158 | tg3_read_mem(tp, NIC_SRAM_DATA_CFG_3, &cfg3); | ||
| 10159 | if (cfg3 & NIC_SRAM_ASPM_DEBOUNCE) | ||
| 10160 | tp->tg3_flags |= TG3_FLAG_ASPM_WORKAROUND; | ||
| 10161 | } | ||
| 10134 | } | 10162 | } |
| 10135 | } | 10163 | } |
| 10136 | 10164 | ||
| @@ -10998,6 +11026,10 @@ static int __devinit tg3_get_invariants(struct tg3 *tp) | |||
| 10998 | */ | 11026 | */ |
| 10999 | tp->tg3_flags &= ~TG3_FLAG_WOL_ENABLE; | 11027 | tp->tg3_flags &= ~TG3_FLAG_WOL_ENABLE; |
| 11000 | 11028 | ||
| 11029 | if (tp->tg3_flags & TG3_FLAG_ASPM_WORKAROUND) | ||
| 11030 | tp->pwrmgmt_thresh = tr32(PCIE_PWR_MGMT_THRESH) & | ||
| 11031 | PCIE_PWR_MGMT_L1_THRESH_MSK; | ||
| 11032 | |||
| 11001 | return err; | 11033 | return err; |
| 11002 | } | 11034 | } |
| 11003 | 11035 | ||
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h index dcdfc08496..4d334cf5a2 100644 --- a/drivers/net/tg3.h +++ b/drivers/net/tg3.h | |||
| @@ -1150,6 +1150,9 @@ | |||
| 1150 | #define VCPU_STATUS_INIT_DONE 0x04000000 | 1150 | #define VCPU_STATUS_INIT_DONE 0x04000000 |
| 1151 | #define VCPU_STATUS_DRV_RESET 0x08000000 | 1151 | #define VCPU_STATUS_DRV_RESET 0x08000000 |
| 1152 | 1152 | ||
| 1153 | #define VCPU_CFGSHDW 0x00005104 | ||
| 1154 | #define VCPU_CFGSHDW_ASPM_DBNC 0x00001000 | ||
| 1155 | |||
| 1153 | /* Mailboxes */ | 1156 | /* Mailboxes */ |
| 1154 | #define GRCMBOX_BASE 0x00005600 | 1157 | #define GRCMBOX_BASE 0x00005600 |
| 1155 | #define GRCMBOX_INTERRUPT_0 0x00005800 /* 64-bit */ | 1158 | #define GRCMBOX_INTERRUPT_0 0x00005800 /* 64-bit */ |
| @@ -1507,6 +1510,8 @@ | |||
| 1507 | #define PCIE_TRANS_CFG_1SHOT_MSI 0x20000000 | 1510 | #define PCIE_TRANS_CFG_1SHOT_MSI 0x20000000 |
| 1508 | #define PCIE_TRANS_CFG_LOM 0x00000020 | 1511 | #define PCIE_TRANS_CFG_LOM 0x00000020 |
| 1509 | 1512 | ||
| 1513 | #define PCIE_PWR_MGMT_THRESH 0x00007d28 | ||
| 1514 | #define PCIE_PWR_MGMT_L1_THRESH_MSK 0x0000ff00 | ||
| 1510 | 1515 | ||
| 1511 | #define TG3_EEPROM_MAGIC 0x669955aa | 1516 | #define TG3_EEPROM_MAGIC 0x669955aa |
| 1512 | #define TG3_EEPROM_MAGIC_FW 0xa5000000 | 1517 | #define TG3_EEPROM_MAGIC_FW 0xa5000000 |
| @@ -1593,6 +1598,9 @@ | |||
| 1593 | #define SHASTA_EXT_LED_MAC 0x00010000 | 1598 | #define SHASTA_EXT_LED_MAC 0x00010000 |
| 1594 | #define SHASTA_EXT_LED_COMBO 0x00018000 | 1599 | #define SHASTA_EXT_LED_COMBO 0x00018000 |
| 1595 | 1600 | ||
| 1601 | #define NIC_SRAM_DATA_CFG_3 0x00000d3c | ||
| 1602 | #define NIC_SRAM_ASPM_DEBOUNCE 0x00000002 | ||
| 1603 | |||
| 1596 | #define NIC_SRAM_RX_MINI_BUFFER_DESC 0x00001000 | 1604 | #define NIC_SRAM_RX_MINI_BUFFER_DESC 0x00001000 |
| 1597 | 1605 | ||
| 1598 | #define NIC_SRAM_DMA_DESC_POOL_BASE 0x00002000 | 1606 | #define NIC_SRAM_DMA_DESC_POOL_BASE 0x00002000 |
| @@ -2200,6 +2208,7 @@ struct tg3 { | |||
| 2200 | #define TG3_FLAG_USE_LINKCHG_REG 0x00000008 | 2208 | #define TG3_FLAG_USE_LINKCHG_REG 0x00000008 |
| 2201 | #define TG3_FLAG_USE_MI_INTERRUPT 0x00000010 | 2209 | #define TG3_FLAG_USE_MI_INTERRUPT 0x00000010 |
| 2202 | #define TG3_FLAG_ENABLE_ASF 0x00000020 | 2210 | #define TG3_FLAG_ENABLE_ASF 0x00000020 |
| 2211 | #define TG3_FLAG_ASPM_WORKAROUND 0x00000040 | ||
| 2203 | #define TG3_FLAG_POLL_SERDES 0x00000080 | 2212 | #define TG3_FLAG_POLL_SERDES 0x00000080 |
| 2204 | #define TG3_FLAG_MBOX_WRITE_REORDER 0x00000100 | 2213 | #define TG3_FLAG_MBOX_WRITE_REORDER 0x00000100 |
| 2205 | #define TG3_FLAG_PCIX_TARGET_HWBUG 0x00000200 | 2214 | #define TG3_FLAG_PCIX_TARGET_HWBUG 0x00000200 |
| @@ -2288,6 +2297,7 @@ struct tg3 { | |||
| 2288 | u32 grc_local_ctrl; | 2297 | u32 grc_local_ctrl; |
| 2289 | u32 dma_rwctrl; | 2298 | u32 dma_rwctrl; |
| 2290 | u32 coalesce_mode; | 2299 | u32 coalesce_mode; |
| 2300 | u32 pwrmgmt_thresh; | ||
| 2291 | 2301 | ||
