diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-04-06 11:34:06 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-04-06 11:34:06 -0400 |
| commit | cb4361c1dc29cd870f664c004b1817106fbce0fa (patch) | |
| tree | c31533210d738c9074b21b8f31fe0399b39545f0 /drivers/net/wireless | |
| parent | 309361e09ca9e9670dc8664e5d14125bf82078af (diff) | |
| parent | fb9e2d887243499b8d28efcf80821c4f6a092395 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (37 commits)
smc91c92_cs: fix the problem of "Unable to find hardware address"
r8169: clean up my printk uglyness
net: Hook up cxgb4 to Kconfig and Makefile
cxgb4: Add main driver file and driver Makefile
cxgb4: Add remaining driver headers and L2T management
cxgb4: Add packet queues and packet DMA code
cxgb4: Add HW and FW support code
cxgb4: Add register, message, and FW definitions
netlabel: Fix several rcu_dereference() calls used without RCU read locks
bonding: fix potential deadlock in bond_uninit()
net: check the length of the socket address passed to connect(2)
stmmac: add documentation for the driver.
stmmac: fix kconfig for crc32 build error
be2net: fix bug in vlan rx path for big endian architecture
be2net: fix flashing on big endian architectures
be2net: fix a bug in flashing the redboot section
bonding: bond_xmit_roundrobin() fix
drivers/net: Add missing unlock
net: gianfar - align BD ring size console messages
net: gianfar - initialize per-queue statistics
...
Diffstat (limited to 'drivers/net/wireless')
| -rw-r--r-- | drivers/net/wireless/ath/ar9170/usb.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 12 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/libertas/cfg.c | 8 | ||||
| -rw-r--r-- | drivers/net/wireless/libertas/dev.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/mwl8k.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/p54/p54usb.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2800lib.c | 4 |
10 files changed, 33 insertions, 13 deletions
diff --git a/drivers/net/wireless/ath/ar9170/usb.c b/drivers/net/wireless/ath/ar9170/usb.c index 0b0d2dc2f38c..99a6da464bd3 100644 --- a/drivers/net/wireless/ath/ar9170/usb.c +++ b/drivers/net/wireless/ath/ar9170/usb.c | |||
| @@ -95,6 +95,8 @@ static struct usb_device_id ar9170_usb_ids[] = { | |||
| 95 | { USB_DEVICE(0x04bb, 0x093f) }, | 95 | { USB_DEVICE(0x04bb, 0x093f) }, |
| 96 | /* AVM FRITZ!WLAN USB Stick N */ | 96 | /* AVM FRITZ!WLAN USB Stick N */ |
| 97 | { USB_DEVICE(0x057C, 0x8401) }, | 97 | { USB_DEVICE(0x057C, 0x8401) }, |
| 98 | /* NEC WL300NU-G */ | ||
| 99 | { USB_DEVICE(0x0409, 0x0249) }, | ||
| 98 | /* AVM FRITZ!WLAN USB Stick N 2.4 */ | 100 | /* AVM FRITZ!WLAN USB Stick N 2.4 */ |
| 99 | { USB_DEVICE(0x057C, 0x8402), .driver_info = AR9170_REQ_FW1_ONLY }, | 101 | { USB_DEVICE(0x057C, 0x8402), .driver_info = AR9170_REQ_FW1_ONLY }, |
| 100 | 102 | ||
| @@ -417,7 +419,7 @@ static int ar9170_usb_exec_cmd(struct ar9170 *ar, enum ar9170_cmd cmd, | |||
| 417 | spin_unlock_irqrestore(&aru->common.cmdlock, flags); | 419 | spin_unlock_irqrestore(&aru->common.cmdlock, flags); |
| 418 | 420 | ||
| 419 | usb_fill_int_urb(urb, aru->udev, | 421 | usb_fill_int_urb(urb, aru->udev, |
| 420 | usb_sndbulkpipe(aru->udev, AR9170_EP_CMD), | 422 | usb_sndintpipe(aru->udev, AR9170_EP_CMD), |
| 421 | aru->common.cmdbuf, plen + 4, | 423 | aru->common.cmdbuf, plen + 4, |
| 422 | ar9170_usb_tx_urb_complete, NULL, 1); | 424 | ar9170_usb_tx_urb_complete, NULL, 1); |
| 423 | 425 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index 1bd2cd836026..83c52a682622 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
| @@ -2041,16 +2041,14 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv, | |||
| 2041 | tx_resp->failure_frame); | 2041 | tx_resp->failure_frame); |
| 2042 | 2042 | ||
| 2043 | freed = iwl_tx_queue_reclaim(priv, txq_id, index); | 2043 | freed = iwl_tx_queue_reclaim(priv, txq_id, index); |
| 2044 | if (qc && likely(sta_id != IWL_INVALID_STATION)) | 2044 | iwl_free_tfds_in_queue(priv, sta_id, tid, freed); |
| 2045 | priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; | ||
| 2046 | 2045 | ||
| 2047 | if (priv->mac80211_registered && | 2046 | if (priv->mac80211_registered && |
| 2048 | (iwl_queue_space(&txq->q) > txq->q.low_mark)) | 2047 | (iwl_queue_space(&txq->q) > txq->q.low_mark)) |
| 2049 | iwl_wake_queue(priv, txq_id); | 2048 | iwl_wake_queue(priv, txq_id); |
| 2050 | } | 2049 | } |
| 2051 | 2050 | ||
| 2052 | if (qc && likely(sta_id != IWL_INVALID_STATION)) | 2051 | iwl_txq_check_empty(priv, sta_id, tid, txq_id); |
| 2053 | iwl_txq_check_empty(priv, sta_id, tid, txq_id); | ||
| 2054 | 2052 | ||
| 2055 | if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK)) | 2053 | if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK)) |
| 2056 | IWL_ERR(priv, "TODO: Implement Tx ABORT REQUIRED!!!\n"); | 2054 | IWL_ERR(priv, "TODO: Implement Tx ABORT REQUIRED!!!\n"); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 5e0c6bf3fbb1..8b8e3e1cbb44 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
| @@ -1259,7 +1259,15 @@ static void iwl_irq_tasklet(struct iwl_priv *priv) | |||
| 1259 | /* Ack/clear/reset pending uCode interrupts. | 1259 | /* Ack/clear/reset pending uCode interrupts. |
| 1260 | * Note: Some bits in CSR_INT are "OR" of bits in CSR_FH_INT_STATUS, | 1260 | * Note: Some bits in CSR_INT are "OR" of bits in CSR_FH_INT_STATUS, |
| 1261 | */ | 1261 | */ |
| 1262 | iwl_write32(priv, CSR_INT, priv->inta); | 1262 | /* There is a hardware bug in the interrupt mask function that some |
| 1263 | * interrupts (i.e. CSR_INT_BIT_SCD) can still be generated even if | ||
| 1264 | * they are disabled in the CSR_INT_MASK register. Furthermore the | ||
| 1265 | * ICT interrupt handling mechanism has another bug that might cause | ||
| 1266 | * these unmasked interrupts fail to be detected. We workaround the | ||
| 1267 | * hardware bugs here by ACKing all the possible interrupts so that | ||
| 1268 | * interrupt coalescing can still be achieved. | ||
| 1269 | */ | ||
| 1270 | iwl_write32(priv, CSR_INT, priv->inta | ~priv->inta_mask); | ||
| 1263 | 1271 | ||
| 1264 | inta = priv->inta; | 1272 | inta = priv->inta; |
| 1265 | 1273 | ||
| @@ -2645,7 +2653,7 @@ static int iwl_mac_setup_register(struct iwl_priv *priv) | |||
| 2645 | BIT(NL80211_IFTYPE_STATION) | | 2653 | BIT(NL80211_IFTYPE_STATION) | |
| 2646 | BIT(NL80211_IFTYPE_ADHOC); | 2654 | BIT(NL80211_IFTYPE_ADHOC); |
| 2647 | 2655 | ||
| 2648 | hw->wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY | | 2656 | hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | |
| 2649 | WIPHY_FLAG_DISABLE_BEACON_HINTS; | 2657 | WIPHY_FLAG_DISABLE_BEACON_HINTS; |
| 2650 | 2658 | ||
| 2651 | /* | 2659 | /* |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 1eaa0052c11b..b55e4f39a9e1 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
| @@ -1956,7 +1956,7 @@ static void iwl3945_init_hw_rates(struct iwl_priv *priv, | |||
| 1956 | { | 1956 | { |
| 1957 | int i; | 1957 | int i; |
| 1958 | 1958 | ||
| 1959 | for (i = 0; i < IWL_RATE_COUNT; i++) { | 1959 | for (i = 0; i < IWL_RATE_COUNT_LEGACY; i++) { |
| 1960 | rates[i].bitrate = iwl3945_rates[i].ieee * 5; | 1960 | rates[i].bitrate = iwl3945_rates[i].ieee * 5; |
| 1961 | rates[i].hw_value = i; /* Rate scaling will work on indexes */ | 1961 | rates[i].hw_value = i; /* Rate scaling will work on indexes */ |
| 1962 | rates[i].hw_value_short = i; | 1962 | rates[i].hw_value_short = i; |
| @@ -3922,7 +3922,7 @@ static int iwl3945_setup_mac(struct iwl_priv *priv) | |||
| 3922 | BIT(NL80211_IFTYPE_STATION) | | 3922 | BIT(NL80211_IFTYPE_STATION) | |
| 3923 | BIT(NL80211_IFTYPE_ADHOC); | 3923 | BIT(NL80211_IFTYPE_ADHOC); |
| 3924 | 3924 | ||
| 3925 | hw->wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY | | 3925 | hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | |
| 3926 | WIPHY_FLAG_DISABLE_BEACON_HINTS; | 3926 | WIPHY_FLAG_DISABLE_BEACON_HINTS; |
| 3927 | 3927 | ||
| 3928 | hw->wiphy->max_scan_ssids = PROBE_OPTION_MAX_3945; | 3928 | hw->wiphy->max_scan_ssids = PROBE_OPTION_MAX_3945; |
diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c index e196b84914db..ce7bec402a33 100644 --- a/drivers/net/wireless/libertas/cfg.c +++ b/drivers/net/wireless/libertas/cfg.c | |||
| @@ -173,6 +173,8 @@ int lbs_cfg_register(struct lbs_private *priv) | |||
| 173 | if (ret < 0) | 173 | if (ret < 0) |
| 174 | lbs_pr_err("cannot register wiphy device\n"); | 174 | lbs_pr_err("cannot register wiphy device\n"); |
| 175 | 175 | ||
| 176 | priv->wiphy_registered = true; | ||
| 177 | |||
| 176 | ret = register_netdev(priv->dev); | 178 | ret = register_netdev(priv->dev); |
| 177 | if (ret) | 179 | if (ret) |
| 178 | lbs_pr_err("cannot register network device\n"); | 180 | lbs_pr_err("cannot register network device\n"); |
| @@ -191,9 +193,11 @@ void lbs_cfg_free(struct lbs_private *priv) | |||
| 191 | if (!wdev) | 193 | if (!wdev) |
| 192 | return; | 194 | return; |
| 193 | 195 | ||
| 194 | if (wdev->wiphy) { | 196 | if (priv->wiphy_registered) |
| 195 | wiphy_unregister(wdev->wiphy); | 197 | wiphy_unregister(wdev->wiphy); |
| 198 | |||
| 199 | if (wdev->wiphy) | ||
| 196 | wiphy_free(wdev->wiphy); | 200 | wiphy_free(wdev->wiphy); |
| 197 | } | 201 | |
| 198 | kfree(wdev); | 202 | kfree(wdev); |
| 199 | } | 203 | } |
diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h index 6977ee820214..6875e1498bd5 100644 --- a/drivers/net/wireless/libertas/dev.h +++ b/drivers/net/wireless/libertas/dev.h | |||
| @@ -36,6 +36,7 @@ struct lbs_private { | |||
| 36 | 36 | ||
| 37 | /* CFG80211 */ | 37 | /* CFG80211 */ |
| 38 | struct wireless_dev *wdev; | 38 | struct wireless_dev *wdev; |
| 39 | bool wiphy_registered; | ||
| 39 | 40 | ||
| 40 | /* Mesh */ | 41 | /* Mesh */ |
| 41 | struct net_device *mesh_dev; /* Virtual device */ | 42 | struct net_device *mesh_dev; /* Virtual device */ |
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c index 89354c29f088..12fdcb25fd38 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c | |||
| @@ -3852,6 +3852,7 @@ MODULE_FIRMWARE("mwl8k/helper_8366.fw"); | |||
| 3852 | MODULE_FIRMWARE("mwl8k/fmimage_8366.fw"); | 3852 | MODULE_FIRMWARE("mwl8k/fmimage_8366.fw"); |
| 3853 | 3853 | ||
| 3854 | static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = { | 3854 | static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = { |
| 3855 | { PCI_VDEVICE(MARVELL, 0x2a0a), .driver_data = MWL8363, }, | ||
| 3855 | { PCI_VDEVICE(MARVELL, 0x2a0c), .driver_data = MWL8363, }, | 3856 | { PCI_VDEVICE(MARVELL, 0x2a0c), .driver_data = MWL8363, }, |
| 3856 | { PCI_VDEVICE(MARVELL, 0x2a24), .driver_data = MWL8363, }, | 3857 | { PCI_VDEVICE(MARVELL, 0x2a24), .driver_data = MWL8363, }, |
| 3857 | { PCI_VDEVICE(MARVELL, 0x2a2b), .driver_data = MWL8687, }, | 3858 | { PCI_VDEVICE(MARVELL, 0x2a2b), .driver_data = MWL8687, }, |
diff --git a/drivers/net/wireless/p54/p54usb.c b/drivers/net/wireless/p54/p54usb.c index 762952d688e2..743a6c68b29d 100644 --- a/drivers/net/wireless/p54/p54usb.c +++ b/drivers/net/wireless/p54/p54usb.c | |||
| @@ -36,6 +36,7 @@ MODULE_FIRMWARE("isl3887usb"); | |||
| 36 | static struct usb_device_id p54u_table[] __devinitdata = { | 36 | static struct usb_device_id p54u_table[] __devinitdata = { |
| 37 | /* Version 1 devices (pci chip + net2280) */ | 37 | /* Version 1 devices (pci chip + net2280) */ |
| 38 | {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ | 38 | {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ |
| 39 | {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */ | ||
| 39 | {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */ | 40 | {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */ |
| 40 | {USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */ | 41 | {USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */ |
| 41 | {USB_DEVICE(0x083a, 0x4501)}, /* Accton 802.11g WN4501 USB */ | 42 | {USB_DEVICE(0x083a, 0x4501)}, /* Accton 802.11g WN4501 USB */ |
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index d2cc4458477f..8ebb705fe106 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
| @@ -1644,6 +1644,11 @@ static int rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) | |||
| 1644 | unsigned int i; | 1644 | unsigned int i; |
| 1645 | 1645 | ||
| 1646 | /* | 1646 | /* |
| 1647 | * Disable powersaving as default. | ||
| 1648 | */ | ||
| 1649 | rt2x00dev->hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; | ||
| 1650 | |||
| 1651 | /* | ||
| 1647 | * Initialize all hw fields. | 1652 | * Initialize all hw fields. |
| 1648 | */ | 1653 | */ |
| 1649 | rt2x00dev->hw->flags = | 1654 | rt2x00dev->hw->flags = |
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index 58c7f218019d..c015ce9fdd09 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c | |||
| @@ -813,9 +813,9 @@ static void rt2800_config_channel_rt3x(struct rt2x00_dev *rt2x00dev, | |||
| 813 | rt2800_rfcsr_write(rt2x00dev, 24, | 813 | rt2800_rfcsr_write(rt2x00dev, 24, |
| 814 | rt2x00dev->calibration[conf_is_ht40(conf)]); | 814 | rt2x00dev->calibration[conf_is_ht40(conf)]); |
| 815 | 815 | ||
| 816 | rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr); | 816 | rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr); |
| 817 | rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1); | 817 | rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1); |
| 818 | rt2800_rfcsr_write(rt2x00dev, 23, rfcsr); | 818 | rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); |
| 819 | } | 819 | } |
| 820 | 820 | ||
| 821 | static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, | 821 | static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, |
