| Index: chromeos/drivers/ath6kl/os/linux/cfg80211.c
|
| diff --git a/chromeos/drivers/ath6kl/os/linux/cfg80211.c b/chromeos/drivers/ath6kl/os/linux/cfg80211.c
|
| index 82911d10511560c39f3121c66f49c29c38437a1e..fd3313b742877670d7e764ec08c7227194f37592 100644
|
| --- a/chromeos/drivers/ath6kl/os/linux/cfg80211.c
|
| +++ b/chromeos/drivers/ath6kl/os/linux/cfg80211.c
|
| @@ -1,25 +1,26 @@
|
| -/*
|
| - *
|
| - * Copyright (c) 2004-2010 Atheros Communications Inc.
|
| - * All rights reserved.
|
| - *
|
| - *
|
| -// This program is free software; you can redistribute it and/or modify
|
| -// it under the terms of the GNU General Public License version 2 as
|
| -// published by the Free Software Foundation;
|
| +//------------------------------------------------------------------------------
|
| +// Copyright (c) 2004-2010 Atheros Communications Inc.
|
| +// All rights reserved.
|
| //
|
| -// Software distributed under the License is distributed on an "AS
|
| -// IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
| -// implied. See the License for the specific language governing
|
| -// rights and limitations under the License.
|
| +//
|
| //
|
| +// Permission to use, copy, modify, and/or distribute this software for any
|
| +// purpose with or without fee is hereby granted, provided that the above
|
| +// copyright notice and this permission notice appear in all copies.
|
| //
|
| - *
|
| - */
|
| -
|
| +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
| +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
| +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
| +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
| +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
| +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
| +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
| +//
|
| +//
|
| +//
|
| +// Author(s): ="Atheros"
|
| +//------------------------------------------------------------------------------
|
|
|
| -#include <linux/kernel.h>
|
| -#include <linux/netdevice.h>
|
| #include <linux/wireless.h>
|
| #include <linux/ieee80211.h>
|
| #include <net/cfg80211.h>
|
| @@ -541,13 +542,10 @@ ar6k_cfg80211_connect_event(AR_SOFTC_T *ar, A_UINT16 channel,
|
|
|
| ibss_channel = ieee80211_get_channel(ar->wdev->wiphy, (int)channel);
|
|
|
| - AR_DEBUG_PRINTF(ATH_DEBUG_INFO,
|
| - ("%s: inform bss with bssid %02x:%02x:%02x:%02x:%02x:%02x "\
|
| - "channel %d beaconInterval %d capability 0x%x\n",
|
| - __func__,
|
| - mgmt->bssid[0], mgmt->bssid[1], mgmt->bssid[2],
|
| - mgmt->bssid[3], mgmt->bssid[4], mgmt->bssid[5],
|
| - ibss_channel->hw_value, beaconInterval, capability));
|
| + AR_DEBUG_PRINTF(ATH_DEBUG_INFO,
|
| + ("%s: inform bss with bssid %pM channel %d beaconInterval %d "
|
| + "capability 0x%x\n", __func__, mgmt->bssid,
|
| + ibss_channel->hw_value, beaconInterval, capability));
|
|
|
| bss = cfg80211_inform_bss_frame(ar->wdev->wiphy,
|
| ibss_channel, mgmt,
|
| @@ -712,12 +710,9 @@ ar6k_cfg80211_scan_node(void *arg, bss_t *ni)
|
| channel = ieee80211_get_channel(wiphy, freq);
|
| signal = ni->ni_snr * 100;
|
|
|
| - AR_DEBUG_PRINTF(ATH_DEBUG_INFO,
|
| - ("%s: bssid %02x:%02x:%02x:%02x:%02x:%02x channel %d freq %d size %d\n",
|
| - __func__,
|
| - mgmt->bssid[0], mgmt->bssid[1], mgmt->bssid[2],
|
| - mgmt->bssid[3], mgmt->bssid[4], mgmt->bssid[5],
|
| - channel->hw_value, freq, size));
|
| + AR_DEBUG_PRINTF(ATH_DEBUG_INFO,
|
| + ("%s: bssid %pM channel %d freq %d size %d\n", __func__,
|
| + mgmt->bssid, channel->hw_value, freq, size));
|
| cfg80211_inform_bss_frame(wiphy, channel, mgmt,
|
| le16_to_cpu(size),
|
| signal, GFP_KERNEL);
|
| @@ -865,9 +860,6 @@ ar6k_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
|
| case WLAN_CIPHER_SUITE_WEP40:
|
| case WLAN_CIPHER_SUITE_WEP104:
|
| key_type = WEP_CRYPT;
|
| - if(key_index == ar->arDefTxKeyIndex) {
|
| - key_usage = GROUP_USAGE | TX_USAGE;
|
| - }
|
| break;
|
|
|
| case WLAN_CIPHER_SUITE_TKIP:
|
| @@ -894,7 +886,8 @@ ar6k_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
|
| __func__, key_index, key->key_len, key_type,
|
| key_usage, key->seq_len));
|
|
|
| - status = wmi_addKey_cmd(ar->arWmi, key_index, key_type, key_usage,
|
| + ar->arDefTxKeyIndex = key_index;
|
| + status = wmi_addKey_cmd(ar->arWmi, ar->arDefTxKeyIndex, key_type, key_usage,
|
| key->key_len, key->seq, key->key, KEY_OP_INIT_VAL,
|
| (A_UINT8*)mac_addr, SYNC_BOTH_WMIFLAG);
|
|
|
| @@ -987,6 +980,8 @@ ar6k_cfg80211_set_default_key(struct wiphy *wiphy, struct net_device *ndev,
|
| A_UINT8 key_index)
|
| {
|
| AR_SOFTC_T *ar = (AR_SOFTC_T *)ar6k_priv(ndev);
|
| + struct ar_key *key = NULL;
|
| + A_STATUS status = A_OK;
|
|
|
| AR_DEBUG_PRINTF(ATH_DEBUG_INFO, ("%s: index %d\n", __func__, key_index));
|
|
|
| @@ -1014,6 +1009,14 @@ ar6k_cfg80211_set_default_key(struct wiphy *wiphy, struct net_device *ndev,
|
| }
|
|
|
| ar->arDefTxKeyIndex = key_index;
|
| + key = &ar->keys[ar->arDefTxKeyIndex];
|
| + status = wmi_addKey_cmd(ar->arWmi, ar->arDefTxKeyIndex,
|
| + ar->arPairwiseCrypto, GROUP_USAGE | TX_USAGE,
|
| + key->key_len, key->seq, key->key, KEY_OP_INIT_VAL,
|
| + NULL, SYNC_BOTH_WMIFLAG);
|
| + if (status != A_OK) {
|
| + return -EIO;
|
| + }
|
|
|
| return 0;
|
| }
|
| @@ -1083,34 +1086,11 @@ ar6k_cfg80211_set_bitrate_mask(struct wiphy *wiphy, struct net_device *dev,
|
| const A_UINT8 *peer,
|
| const struct cfg80211_bitrate_mask *mask)
|
| {
|
| - AR_SOFTC_T *ar = ar6k_priv(dev);
|
| - A_STATUS status;
|
| -
|
| - AR_DEBUG_PRINTF(ATH_DEBUG_INFO, ("%s: mask 0x%x\n", __func__, mask->fixed));
|
| -
|
| - if(ar->arWmiReady == FALSE) {
|
| - AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("%s: Wmi not ready\n", __func__));
|
| - return -EIO;
|
| - }
|
| -
|
| - if(ar->arWlanState == WLAN_DISABLED) {
|
| - AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("%s: Wlan disabled\n", __func__));
|
| - return -EIO;
|
| - }
|
| -
|
| - status = wmi_set_fixrates_cmd(ar->arWmi, mask->fixed);
|
| -
|
| - if(status == A_EINVAL) {
|
| - AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("%s: invalid params\n", __func__));
|
| - return -EINVAL;
|
| - } else if(status != A_OK) {
|
| - AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("%s: wmi_set_fixrates_cmd failed\n", __func__));
|
| - return -EIO;
|
| - }
|
| -
|
| - return 0;
|
| + AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("Setting rates: Not supported\n"));
|
| + return -EIO;
|
| }
|
|
|
| +/* The type nl80211_tx_power_setting replaces the following data type from 2.6.36 onwards */
|
| static int
|
| ar6k_cfg80211_set_txpower(struct wiphy *wiphy, enum tx_power_setting type, int dbm)
|
| {
|
|
|