diff options
| author | David S. Miller <davem@davemloft.net> | 2009-07-30 13:35:45 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2009-07-30 13:35:45 -0400 |
| commit | a1b97440eec0ea3e53183cde8fe82ff8c1ffb091 (patch) | |
| tree | e634dc66b0094cf26281704cce56d5117b0a15f9 /drivers/net | |
| parent | 27fed4175acf81ddd91d9a4ee2fd298981f60295 (diff) | |
| parent | 89c3a8aca28e6d57f2ae945d97858a372d624b81 (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
Diffstat (limited to 'drivers/net')
| -rw-r--r-- | drivers/net/wireless/airo.c | 13 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/eeprom.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-3945.h | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-dev.h | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-tx.c | 14 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/iwmc3200wifi/netdev.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/libertas/assoc.c | 18 | ||||
| -rw-r--r-- | drivers/net/wireless/libertas/scan.c | 3 |
9 files changed, 35 insertions, 35 deletions
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c index c70604f0329e..8ce5e4cee168 100644 --- a/drivers/net/wireless/airo.c +++ b/drivers/net/wireless/airo.c | |||
| @@ -5918,20 +5918,19 @@ static int airo_set_essid(struct net_device *dev, | |||
| 5918 | readSsidRid(local, &SSID_rid); | 5918 | readSsidRid(local, &SSID_rid); |
| 5919 | 5919 | ||
| 5920 | /* Check if we asked for `any' */ | 5920 | /* Check if we asked for `any' */ |
| 5921 | if(dwrq->flags == 0) { | 5921 | if (dwrq->flags == 0) { |
| 5922 | /* Just send an empty SSID list */ | 5922 | /* Just send an empty SSID list */ |
| 5923 | memset(&SSID_rid, 0, sizeof(SSID_rid)); | 5923 | memset(&SSID_rid, 0, sizeof(SSID_rid)); |
| 5924 | } else { | 5924 | } else { |
| 5925 | int index = (dwrq->flags & IW_ENCODE_INDEX) - 1; | 5925 | unsigned index = (dwrq->flags & IW_ENCODE_INDEX) - 1; |
| 5926 | 5926 | ||
| 5927 | /* Check the size of the string */ | 5927 | /* Check the size of the string */ |
| 5928 | if(dwrq->length > IW_ESSID_MAX_SIZE) { | 5928 | if (dwrq->length > IW_ESSID_MAX_SIZE) |
| 5929 | return -E2BIG ; | 5929 | return -E2BIG ; |
| 5930 | } | 5930 | |
| 5931 | /* Check if index is valid */ | 5931 | /* Check if index is valid */ |
| 5932 | if((index < 0) || (index >= 4)) { | 5932 | if (index >= ARRAY_SIZE(SSID_rid.ssids)) |
| 5933 | return -EINVAL; | 5933 | return -EINVAL; |
| 5934 | } | ||
| 5935 | 5934 | ||
| 5936 | /* Set the SSID */ | 5935 | /* Set the SSID */ |
| 5937 | memset(SSID_rid.ssids[index].ssid, 0, | 5936 | memset(SSID_rid.ssids[index].ssid, 0, |
| @@ -6819,7 +6818,7 @@ static int airo_set_txpow(struct net_device *dev, | |||
| 6819 | return -EINVAL; | 6818 | return -EINVAL; |
| 6820 | } | 6819 | } |
| 6821 | clear_bit (FLAG_RADIO_OFF, &local->flags); | 6820 | clear_bit (FLAG_RADIO_OFF, &local->flags); |
| 6822 | for (i = 0; cap_rid.txPowerLevels[i] && (i < 8); i++) | 6821 | for (i = 0; i < 8 && cap_rid.txPowerLevels[i]; i++) |
| 6823 | if (v == cap_rid.txPowerLevels[i]) { | 6822 | if (v == cap_rid.txPowerLevels[i]) { |
| 6824 | readConfigRid(local, 1); | 6823 | readConfigRid(local, 1); |
| 6825 | local->config.txPower = v; | 6824 | local->config.txPower = v; |
diff --git a/drivers/net/wireless/ath/ath9k/eeprom.c b/drivers/net/wireless/ath/ath9k/eeprom.c index a2fda702b620..ce0e86c36a82 100644 --- a/drivers/net/wireless/ath/ath9k/eeprom.c +++ b/drivers/net/wireless/ath/ath9k/eeprom.c | |||
| @@ -460,7 +460,7 @@ static int ath9k_hw_4k_check_eeprom(struct ath_hw *ah) | |||
| 460 | integer = swab32(eep->modalHeader.antCtrlCommon); | 460 | integer = swab32(eep->modalHeader.antCtrlCommon); |
| 461 | eep->modalHeader.antCtrlCommon = integer; | 461 | eep->modalHeader.antCtrlCommon = integer; |
| 462 | 462 | ||
| 463 | for (i = 0; i < AR5416_MAX_CHAINS; i++) { | 463 | for (i = 0; i < AR5416_EEP4K_MAX_CHAINS; i++) { |
| 464 | integer = swab32(eep->modalHeader.antCtrlChain[i]); | 464 | integer = swab32(eep->modalHeader.antCtrlChain[i]); |
| 465 | eep->modalHeader.antCtrlChain[i] = integer; | 465 | eep->modalHeader.antCtrlChain[i] = integer; |
| 466 | } | 466 | } |
| @@ -914,7 +914,7 @@ static void ath9k_hw_set_4k_power_per_rate_table(struct ath_hw *ah, | |||
| 914 | ctlMode, numCtlModes, isHt40CtlMode, | 914 | ctlMode, numCtlModes, isHt40CtlMode, |
| 915 | (pCtlMode[ctlMode] & EXT_ADDITIVE)); | 915 | (pCtlMode[ctlMode] & EXT_ADDITIVE)); |
| 916 | 916 | ||
| 917 | for (i = 0; (i < AR5416_NUM_CTLS) && | 917 | for (i = 0; (i < AR5416_EEP4K_NUM_CTLS) && |
| 918 | pEepData->ctlIndex[i]; i++) { | 918 | pEepData->ctlIndex[i]; i++) { |
| 919 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | 919 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, |
| 920 | " LOOP-Ctlidx %d: cfgCtl 0x%2.2x " | 920 | " LOOP-Ctlidx %d: cfgCtl 0x%2.2x " |
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.h b/drivers/net/wireless/iwlwifi/iwl-3945.h index fbb3a573463e..2de6471d4be9 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945.h +++ b/drivers/net/wireless/iwlwifi/iwl-3945.h | |||
| @@ -112,7 +112,7 @@ enum iwl3945_antenna { | |||
| 112 | #define IWL_TX_FIFO_NONE 7 | 112 | #define IWL_TX_FIFO_NONE 7 |
| 113 | 113 | ||
| 114 | /* Minimum number of queues. MAX_NUM is defined in hw specific files */ | 114 | /* Minimum number of queues. MAX_NUM is defined in hw specific files */ |
| 115 | #define IWL_MIN_NUM_QUEUES 4 | 115 | #define IWL39_MIN_NUM_QUEUES 4 |
| 116 | 116 | ||
| 117 | #define IEEE80211_DATA_LEN 2304 | 117 | #define IEEE80211_DATA_LEN 2304 |
| 118 | #define IEEE80211_4ADDR_LEN 30 | 118 | #define IEEE80211_4ADDR_LEN 30 |
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h index e2d620f0b6e8..650e20af20fa 100644 --- a/drivers/net/wireless/iwlwifi/iwl-dev.h +++ b/drivers/net/wireless/iwlwifi/iwl-dev.h | |||
| @@ -258,8 +258,10 @@ struct iwl_channel_info { | |||
| 258 | #define IWL_TX_FIFO_HCCA_2 6 | 258 | #define IWL_TX_FIFO_HCCA_2 6 |
| 259 | #define IWL_TX_FIFO_NONE 7 | 259 | #define IWL_TX_FIFO_NONE 7 |
| 260 | 260 | ||
| 261 | /* Minimum number of queues. MAX_NUM is defined in hw specific files */ | 261 | /* Minimum number of queues. MAX_NUM is defined in hw specific files. |
| 262 | #define IWL_MIN_NUM_QUEUES 4 | 262 | * Set the minimum to accommodate the 4 standard TX queues, 1 command |
| 263 | * queue, 2 (unused) HCCA queues, and 4 HT queues (one for each AC) */ | ||
| 264 | #define IWL_MIN_NUM_QUEUES 10 | ||
| 263 | 265 | ||
| 264 | /* Power management (not Tx power) structures */ | 266 | /* Power management (not Tx power) structures */ |
| 265 | 267 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c index 9bbeec9427f0..2e89040e63be 100644 --- a/drivers/net/wireless/iwlwifi/iwl-tx.c +++ b/drivers/net/wireless/iwlwifi/iwl-tx.c | |||
| @@ -720,8 +720,6 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb) | |||
| 720 | goto drop_unlock; | 720 | goto drop_unlock; |
| 721 | } | 721 | } |
| 722 | 722 | ||
| 723 | spin_unlock_irqrestore(&priv->lock, flags); | ||
| 724 | |||
| 725 | hdr_len = ieee80211_hdrlen(fc); | 723 | hdr_len = ieee80211_hdrlen(fc); |
| 726 | 724 | ||
| 727 | /* Find (or create) index into station table for destination station */ | 725 | /* Find (or create) index into station table for destination station */ |
| @@ -729,7 +727,7 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb) | |||
| 729 | if (sta_id == IWL_INVALID_STATION) { | 727 | if (sta_id == IWL_INVALID_STATION) { |
| 730 | IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n", | 728 | IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n", |
| 731 | hdr->addr1); | 729 | hdr->addr1); |
| 732 | goto drop; | 730 | goto drop_unlock; |
| 733 | } | 731 | } |
| 734 | 732 | ||
| 735 | IWL_DEBUG_TX(priv, "station Id %d\n", sta_id); | 733 | IWL_DEBUG_TX(priv, "station Id %d\n", sta_id); |
| @@ -750,14 +748,17 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb) | |||
| 750 | txq_id = priv->stations[sta_id].tid[tid].agg.txq_id; | 748 | txq_id = priv->stations[sta_id].tid[tid].agg.txq_id; |
| 751 | swq_id = iwl_virtual_agg_queue_num(swq_id, txq_id); | 749 | swq_id = iwl_virtual_agg_queue_num(swq_id, txq_id); |
| 752 | } | 750 | } |
| 753 | priv->stations[sta_id].tid[tid].tfds_in_queue++; | ||
| 754 | } | 751 | } |
| 755 | 752 | ||
| 756 | txq = &priv->txq[txq_id]; | 753 | txq = &priv->txq[txq_id]; |
| 757 | q = &txq->q; | 754 | q = &txq->q; |
| 758 | txq->swq_id = swq_id; | 755 | txq->swq_id = swq_id; |
| 759 | 756 | ||
| 760 | spin_lock_irqsave(&priv->lock, flags); | 757 | if (unlikely(iwl_queue_space(q) < q->high_mark)) |
| 758 | goto drop_unlock; | ||
| 759 | |||
| 760 | if (ieee80211_is_data_qos(fc)) | ||
| 761 | priv->stations[sta_id].tid[tid].tfds_in_queue++; | ||
| 761 | 762 | ||
| 762 | /* Set up driver data for this TFD */ | 763 | /* Set up driver data for this TFD */ |
| 763 | memset(&(txq->txb[q->write_ptr]), 0, sizeof(struct iwl_tx_info)); | 764 | memset(&(txq->txb[q->write_ptr]), 0, sizeof(struct iwl_tx_info)); |
| @@ -902,7 +903,6 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb) | |||
| 902 | 903 | ||
| 903 | drop_unlock: | 904 | drop_unlock: |
| 904 | spin_unlock_irqrestore(&priv->lock, flags); | 905 | spin_unlock_irqrestore(&priv->lock, flags); |
| 905 | drop: | ||
| 906 | return -1; | 906 | return -1; |
| 907 | } | 907 | } |
| 908 | EXPORT_SYMBOL(iwl_tx_skb); | 908 | EXPORT_SYMBOL(iwl_tx_skb); |
| @@ -1171,6 +1171,8 @@ int iwl_tx_agg_start(struct iwl_priv *priv, const u8 *ra, u16 tid, u16 *ssn) | |||
| 1171 | IWL_ERR(priv, "Start AGG on invalid station\n"); | 1171 | IWL_ERR(priv, "Start AGG on invalid station\n"); |
| 1172 | return -ENXIO; | 1172 | return -ENXIO; |
| 1173 | } | 1173 | } |
| 1174 | if (unlikely(tid >= MAX_TID_COUNT)) | ||
| 1175 | return -EINVAL; | ||
| 1174 | 1176 | ||
| 1175 | if (priv->stations[sta_id].tid[tid].agg.state != IWL_AGG_OFF) { | 1177 | if (priv->stations[sta_id].tid[tid].agg.state != IWL_AGG_OFF) { |
| 1176 | IWL_ERR(priv, "Start AGG when state is not IWL_AGG_OFF !\n"); | 1178 | IWL_ERR(priv, "Start AGG when state is not IWL_AGG_OFF !\n"); |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 956798f2c80c..2f50ab60bfdf 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
| @@ -4018,10 +4018,10 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e | |||
| 4018 | SET_IEEE80211_DEV(hw, &pdev->dev); | 4018 | SET_IEEE80211_DEV(hw, &pdev->dev); |
| 4019 | 4019 | ||
| 4020 | if ((iwl3945_mod_params.num_of_queues > IWL39_MAX_NUM_QUEUES) || | 4020 | if ((iwl3945_mod_params.num_of_queues > IWL39_MAX_NUM_QUEUES) || |
| 4021 | (iwl3945_mod_params.num_of_queues < IWL_MIN_NUM_QUEUES)) { | 4021 | (iwl3945_mod_params.num_of_queues < IWL39_MIN_NUM_QUEUES)) { |
| 4022 | IWL_ERR(priv, | 4022 | IWL_ERR(priv, |
| 4023 | "invalid queues_num, should be between %d and %d\n", | 4023 | "invalid queues_num, should be between %d and %d\n", |
| 4024 | IWL_MIN_NUM_QUEUES, IWL39_MAX_NUM_QUEUES); | 4024 | IWL39_MIN_NUM_QUEUES, IWL39_MAX_NUM_QUEUES); |
| 4025 | err = -EINVAL; | 4025 | err = -EINVAL; |
| 4026 | goto out_ieee80211_free_hw; | 4026 | goto out_ieee80211_free_hw; |
| 4027 | } | 4027 | } |
diff --git a/drivers/net/wireless/iwmc3200wifi/netdev.c b/drivers/net/wireless/iwmc3200wifi/netdev.c index aea5ccf24ccf..bf294e41753b 100644 --- a/drivers/net/wireless/iwmc3200wifi/netdev.c +++ b/drivers/net/wireless/iwmc3200wifi/netdev.c | |||
| @@ -106,10 +106,8 @@ void *iwm_if_alloc(int sizeof_bus, struct device *dev, | |||
| 106 | int ret = 0; | 106 | int ret = 0; |
| 107 | 107 | ||
| 108 | wdev = iwm_wdev_alloc(sizeof_bus, dev); | 108 | wdev = iwm_wdev_alloc(sizeof_bus, dev); |
| 109 | if (!wdev) { | 109 | if (IS_ERR(wdev)) |
| 110 | dev_err(dev, "no memory for wireless device instance\n"); | 110 | return wdev; |
| 111 | return ERR_PTR(-ENOMEM); | ||
| 112 | } | ||
| 113 | 111 | ||
| 114 | iwm = wdev_to_iwm(wdev); | 112 | iwm = wdev_to_iwm(wdev); |
| 115 | iwm->bus_ops = if_ops; | 113 | iwm->bus_ops = if_ops; |
diff --git a/drivers/net/wireless/libertas/assoc.c b/drivers/net/wireless/libertas/assoc.c index b9b374119033..d6997371c27e 100644 --- a/drivers/net/wireless/libertas/assoc.c +++ b/drivers/net/wireless/libertas/assoc.c | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | /* Copyright (C) 2006, Red Hat, Inc. */ | 1 | /* Copyright (C) 2006, Red Hat, Inc. */ |
| 2 | 2 | ||
| 3 | #include <linux/types.h> | 3 | #include <linux/types.h> |
| 4 | #include <linux/kernel.h> | ||
| 4 | #include <linux/etherdevice.h> | 5 | #include <linux/etherdevice.h> |
| 5 | #include <linux/ieee80211.h> | 6 | #include <linux/ieee80211.h> |
| 6 | #include <linux/if_arp.h> | 7 | #include <linux/if_arp.h> |
| @@ -43,21 +44,21 @@ static int get_common_rates(struct lbs_private *priv, | |||
| 43 | u16 *rates_size) | 44 | u16 *rates_size) |
| 44 | { | 45 | { |
| 45 | u8 *card_rates = lbs_bg_rates; | 46 | u8 *card_rates = lbs_bg_rates; |
| 46 | size_t num_card_rates = sizeof(lbs_bg_rates); | ||
| 47 | int ret = 0, i, j; | 47 | int ret = 0, i, j; |
| 48 | u8 tmp[30]; | 48 | u8 tmp[(ARRAY_SIZE(lbs_bg_rates) - 1) * (*rates_size - 1)]; |
| 49 | size_t tmp_size = 0; | 49 | size_t tmp_size = 0; |
| 50 | 50 | ||
| 51 | /* For each rate in card_rates that exists in rate1, copy to tmp */ | 51 | /* For each rate in card_rates that exists in rate1, copy to tmp */ |
| 52 | for (i = 0; card_rates[i] && (i < num_card_rates); i++) { | 52 | for (i = 0; i < ARRAY_SIZE(lbs_bg_rates) && card_rates[i]; i++) { |
| 53 | for (j = 0; rates[j] && (j < *rates_size); j++) { | 53 | for (j = 0; j < *rates_size && rates[j]; j++) { |
| 54 | if (rates[j] == card_rates[i]) | 54 | if (rates[j] == card_rates[i]) |
| 55 | tmp[tmp_size++] = card_rates[i]; | 55 | tmp[tmp_size++] = card_rates[i]; |
| 56 | } | 56 | } |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | lbs_deb_hex(LBS_DEB_JOIN, "AP rates ", rates, *rates_size); | 59 | lbs_deb_hex(LBS_DEB_JOIN, "AP rates ", rates, *rates_size); |
| 60 | lbs_deb_hex(LBS_DEB_JOIN, "card rates ", card_rates, num_card_rates); | 60 | lbs_deb_hex(LBS_DEB_JOIN, "card rates ", card_rates, |
| 61 | ARRAY_SIZE(lbs_bg_rates)); | ||
| 61 | lbs_deb_hex(LBS_DEB_JOIN, "common rates", tmp, tmp_size); | 62 | lbs_deb_hex(LBS_DEB_JOIN, "common rates", tmp, tmp_size); |
| 62 | lbs_deb_join("TX data rate 0x%02x\n", priv->cur_rate); | 63 | lbs_deb_join("TX data rate 0x%02x\n", priv->cur_rate); |
| 63 | 64 | ||
| @@ -69,10 +70,7 @@ static int get_common_rates(struct lbs_private *priv, | |||
| 69 | lbs_pr_alert("Previously set fixed data rate %#x isn't " | 70 | lbs_pr_alert("Previously set fixed data rate %#x isn't " |
| 70 | "compatible with the network.\n", priv->cur_rate); | 71 | "compatible with the network.\n", priv->cur_rate); |
| 71 | ret = -1; | 72 | ret = -1; |
| 72 | goto done; | ||
| 73 | } | 73 | } |
| 74 | ret = 0; | ||
| 75 | |||
| 76 | done: | 74 | done: |
| 77 | memset(rates, 0, *rates_size); | 75 | memset(rates, 0, *rates_size); |
| 78 | *rates_size = min_t(int, tmp_size, *rates_size); | 76 | *rates_size = min_t(int, tmp_size, *rates_size); |
| @@ -322,7 +320,7 @@ static int lbs_associate(struct lbs_private *priv, | |||
| 322 | rates = (struct mrvl_ie_rates_param_set *) pos; | 320 | rates = (struct mrvl_ie_rates_param_set *) pos; |
| 323 | rates->header.type = cpu_to_le16(TLV_TYPE_RATES); | 321 | rates->header.type = cpu_to_le16(TLV_TYPE_RATES); |
| 324 | memcpy(&rates->rates, &bss->rates, MAX_RATES); | 322 | memcpy(&rates->rates, &bss->rates, MAX_RATES); |
| 325 | tmplen = MAX_RATES; | 323 | tmplen = min_t(u16, ARRAY_SIZE(rates->rates), MAX_RATES); |
| 326 | if (get_common_rates(priv, rates->rates, &tmplen)) { | 324 | if (get_common_rates(priv, rates->rates, &tmplen)) { |
| 327 | ret = -1; | 325 | ret = -1; |
| 328 | goto done; | 326 | goto done; |
| @@ -598,7 +596,7 @@ static int lbs_adhoc_join(struct lbs_private *priv, | |||
| 598 | 596 | ||
| 599 | /* Copy Data rates from the rates recorded in scan response */ | 597 | /* Copy Data rates from the rates recorded in scan response */ |
| 600 | memset(cmd.bss.rates, 0, sizeof(cmd.bss.rates)); | 598 | memset(cmd.bss.rates, 0, sizeof(cmd.bss.rates)); |
| 601 | ratesize = min_t(u16, sizeof(cmd.bss.rates), MAX_RATES); | 599 | ratesize = min_t(u16, ARRAY_SIZE(cmd.bss.rates), MAX_RATES); |
| 602 | memcpy(cmd.bss.rates, bss->rates, ratesize); | 600 | memcpy(cmd.bss.rates, bss->rates, ratesize); |
| 603 | if (get_common_rates(priv, cmd.bss.rates, &ratesize)) { | 601 | if (get_common_rates(priv, cmd.bss.rates, &ratesize)) { |
| 604 | lbs_deb_join("ADHOC_JOIN: get_common_rates returned error.\n"); | 602 | lbs_deb_join("ADHOC_JOIN: get_common_rates returned error.\n"); |
diff --git a/drivers/net/wireless/libertas/scan.c b/drivers/net/wireless/libertas/scan.c index 601b54249677..6c95af3023cc 100644 --- a/drivers/net/wireless/libertas/scan.c +++ b/drivers/net/wireless/libertas/scan.c | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | * for sending scan commands to the firmware. | 5 | * for sending scan commands to the firmware. |
| 6 | */ | 6 | */ |
| 7 | #include <linux/types.h> | 7 | #include <linux/types.h> |
| 8 | #include <linux/kernel.h> | ||
| 8 | #include <linux/etherdevice.h> | 9 | #include <linux/etherdevice.h> |
| 9 | #include <linux/if_arp.h> | 10 | #include <linux/if_arp.h> |
| 10 | #include <asm/unaligned.h> | 11 | #include <asm/unaligned.h> |
| @@ -876,7 +877,7 @@ static inline char *lbs_translate_scan(struct lbs_private *priv, | |||
| 876 | iwe.u.bitrate.disabled = 0; | 877 | iwe.u.bitrate.disabled = 0; |
| 877 | iwe.u.bitrate.value = 0; | 878 | iwe.u.bitrate.value = 0; |
| 878 | 879 | ||
| 879 | for (j = 0; bss->rates[j] && (j < sizeof(bss->rates)); j++) { | 880 | for (j = 0; j < ARRAY_SIZE(bss->rates) && bss->rates[j]; j++) { |
| 880 | /* Bit rate given in 500 kb/s units */ | 881 | /* Bit rate given in 500 kb/s units */ |
| 881 | iwe.u.bitrate.value = bss->rates[j] * 500000; | 882 | iwe.u.bitrate.value = bss->rates[j] * 500000; |
| 882 | current_val = iwe_stream_add_value(info, start, current_val, | 883 | current_val = iwe_stream_add_value(info, start, current_val, |
