diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-12 14:12:06 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-12 14:12:06 -0500 |
| commit | e697b8d13ede3893724898d983eff3f8c9183643 (patch) | |
| tree | 0144d2d98d33e92a1d93739f0db12997c000d456 | |
| parent | 46015977e70f672ae6b20a1b5fb1e361208365ba (diff) | |
| parent | 2994c63863ac350c4c8c6a65d8110749c2abb95c (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (39 commits)
[INET]: Small possible memory leak in FIB rules
[NETNS]: init dev_base_lock only once
[UNIX]: The unix_nr_socks limit can be exceeded
[AF_UNIX]: Convert socks to unix_socks in scan_inflight, not in callbacks
[AF_UNIX]: Make unix_tot_inflight counter non-atomic
[AF_PACKET]: Allow multicast traffic to be caught by ORIGDEV when bonded
ssb: Fix PCMCIA-host lowlevel bus access
mac80211: fix MAC80211_RCSIMPLE Kconfig
mac80211: make "decrypt failed" messages conditional upon MAC80211_DEBUG
mac80211: use IW_AUTH_PRIVACY_INVOKED rather than IW_AUTH_KEY_MGMT
mac80211: remove unused driver ops
mac80211: remove ieee80211_common.h
softmac: MAINTAINERS update
rfkill: Fix sparse warning
rfkill: Use mutex_lock() at register and add sanity check
iwlwifi: select proper rate control algorithm
mac80211: allow driver to ask for a rate control algorithm
mac80211: don't allow registering the same rate control twice
rfkill: Use subsys_initcall
mac80211: make simple rate control algorithm built-in
...
45 files changed, 380 insertions, 428 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 6a9702726239..cad0882754a6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -3454,15 +3454,10 @@ L: lm-sensors@lm-sensors.org | |||
| 3454 | S: Maintained | 3454 | S: Maintained |
| 3455 | 3455 | ||
| 3456 | SOFTMAC LAYER (IEEE 802.11) | 3456 | SOFTMAC LAYER (IEEE 802.11) |
| 3457 | P: Johannes Berg | ||
| 3458 | M: johannes@sipsolutions.net | ||
| 3459 | P: Joe Jezak | ||
| 3460 | M: josejx@gentoo.org | ||
| 3461 | P: Daniel Drake | 3457 | P: Daniel Drake |
| 3462 | M: dsd@gentoo.org | 3458 | M: dsd@gentoo.org |
| 3463 | W: http://softmac.sipsolutions.net/ | ||
| 3464 | L: linux-wireless@vger.kernel.org | 3459 | L: linux-wireless@vger.kernel.org |
| 3465 | S: Maintained | 3460 | S: Obsolete |
| 3466 | 3461 | ||
| 3467 | SOFTWARE RAID (Multiple Disks) SUPPORT | 3462 | SOFTWARE RAID (Multiple Disks) SUPPORT |
| 3468 | P: Ingo Molnar | 3463 | P: Ingo Molnar |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 4f22a7174caf..be7c9f42a340 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
| @@ -8354,6 +8354,8 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 8354 | } | 8354 | } |
| 8355 | SET_IEEE80211_DEV(hw, &pdev->dev); | 8355 | SET_IEEE80211_DEV(hw, &pdev->dev); |
| 8356 | 8356 | ||
| 8357 | hw->rate_control_algorithm = "iwl-3945-rs"; | ||
| 8358 | |||
| 8357 | IWL_DEBUG_INFO("*** LOAD DRIVER ***\n"); | 8359 | IWL_DEBUG_INFO("*** LOAD DRIVER ***\n"); |
| 8358 | priv = hw->priv; | 8360 | priv = hw->priv; |
| 8359 | priv->hw = hw; | 8361 | priv->hw = hw; |
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c index d60adcb9bd4a..6757c6c1b25a 100644 --- a/drivers/net/wireless/iwlwifi/iwl4965-base.c +++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c | |||
| @@ -8955,6 +8955,8 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 8955 | } | 8955 | } |
| 8956 | SET_IEEE80211_DEV(hw, &pdev->dev); | 8956 | SET_IEEE80211_DEV(hw, &pdev->dev); |
| 8957 | 8957 | ||
| 8958 | hw->rate_control_algorithm = "iwl-4965-rs"; | ||
| 8959 | |||
| 8958 | IWL_DEBUG_INFO("*** LOAD DRIVER ***\n"); | 8960 | IWL_DEBUG_INFO("*** LOAD DRIVER ***\n"); |
| 8959 | priv = hw->priv; | 8961 | priv = hw->priv; |
| 8960 | priv->hw = hw; | 8962 | priv->hw = hw; |
diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c index c12a741b5574..85a20546e827 100644 --- a/drivers/ssb/main.c +++ b/drivers/ssb/main.c | |||
| @@ -440,6 +440,7 @@ static int ssb_devices_register(struct ssb_bus *bus) | |||
| 440 | break; | 440 | break; |
| 441 | case SSB_BUSTYPE_PCMCIA: | 441 | case SSB_BUSTYPE_PCMCIA: |
| 442 | #ifdef CONFIG_SSB_PCMCIAHOST | 442 | #ifdef CONFIG_SSB_PCMCIAHOST |
| 443 | sdev->irq = bus->host_pcmcia->irq.AssignedIRQ; | ||
| 443 | dev->parent = &bus->host_pcmcia->dev; | 444 | dev->parent = &bus->host_pcmcia->dev; |
| 444 | #endif | 445 | #endif |
| 445 | break; | 446 | break; |
| @@ -1147,7 +1148,10 @@ static int __init ssb_modinit(void) | |||
| 1147 | 1148 | ||
| 1148 | return err; | 1149 | return err; |
| 1149 | } | 1150 | } |
| 1150 | subsys_initcall(ssb_modinit); | 1151 | /* ssb must be initialized after PCI but before the ssb drivers. |
| 1152 | * That means we must use some initcall between subsys_initcall | ||
| 1153 | * and device_initcall. */ | ||
| 1154 | fs_initcall(ssb_modinit); | ||
| 1151 | 1155 | ||
| 1152 | static void __exit ssb_modexit(void) | 1156 | static void __exit ssb_modexit(void) |
| 1153 | { | 1157 | { |
diff --git a/drivers/ssb/pcmcia.c b/drivers/ssb/pcmcia.c index b6abee846f02..bb44a76b3eb5 100644 --- a/drivers/ssb/pcmcia.c +++ b/drivers/ssb/pcmcia.c | |||
| @@ -63,17 +63,17 @@ int ssb_pcmcia_switch_coreidx(struct ssb_bus *bus, | |||
| 63 | err = pcmcia_access_configuration_register(pdev, ®); | 63 | err = pcmcia_access_configuration_register(pdev, ®); |
| 64 | if (err != CS_SUCCESS) | 64 | if (err != CS_SUCCESS) |
| 65 | goto error; | 65 | goto error; |
| 66 | read_addr |= (reg.Value & 0xF) << 12; | 66 | read_addr |= ((u32)(reg.Value & 0x0F)) << 12; |
| 67 | reg.Offset = 0x30; | 67 | reg.Offset = 0x30; |
| 68 | err = pcmcia_access_configuration_register(pdev, ®); | 68 | err = pcmcia_access_configuration_register(pdev, ®); |
| 69 | if (err != CS_SUCCESS) | 69 | if (err != CS_SUCCESS) |
| 70 | goto error; | 70 | goto error; |
| 71 | read_addr |= reg.Value << 16; | 71 | read_addr |= ((u32)reg.Value) << 16; |
| 72 | reg.Offset = 0x32; | 72 | reg.Offset = 0x32; |
| 73 | err = pcmcia_access_configuration_register(pdev, ®); | 73 | err = pcmcia_access_configuration_register(pdev, ®); |
| 74 | if (err != CS_SUCCESS) | 74 | if (err != CS_SUCCESS) |
| 75 | goto error; | 75 | goto error; |
| 76 | read_addr |= reg.Value << 24; | 76 | read_addr |= ((u32)reg.Value) << 24; |
| 77 | 77 | ||
| 78 | cur_core = (read_addr - SSB_ENUM_BASE) / SSB_CORE_SIZE; | 78 | cur_core = (read_addr - SSB_ENUM_BASE) / SSB_CORE_SIZE; |
| 79 | if (cur_core == coreidx) | 79 | if (cur_core == coreidx) |
| @@ -152,28 +152,29 @@ error: | |||
| 152 | goto out_unlock; | 152 | goto out_unlock; |
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | /* These are the main device register access functions. | 155 | static int select_core_and_segment(struct ssb_device *dev, |
| 156 | * do_select_core is inline to have the likely hotpath inline. | 156 | u16 *offset) |
| 157 | * All unlikely codepaths are out-of-line. */ | ||
| 158 | static inline int do_select_core(struct ssb_bus *bus, | ||
| 159 | struct ssb_device *dev, | ||
| 160 | u16 *offset) | ||
| 161 | { | 157 | { |
| 158 | struct ssb_bus *bus = dev->bus; | ||
| 162 | int err; | 159 | int err; |
