diff options
author | Ilan Peer <ilan.peer@intel.com> | 2013-02-07 10:09:09 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-03-06 10:47:23 -0500 |
commit | 831e85f3fe078297ba452e12c0dba96008c59438 (patch) | |
tree | 597b226ec9032d2d1fdcc00e90aaf05d4b0b1f26 | |
parent | 6e6cc9f319bf81b292ceb281228ab1d261172cac (diff) |
iwlwifi: mvm: Add support for additional addresses
Use the number of addresses (max 5) from the NVM
instead of limiting to 2 artificially.
Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/mac80211.c | 14 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/mvm.h | 2 |
2 files changed, 10 insertions, 6 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index 65fc5531f7ba..d08ae2604d7b 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c | |||
@@ -105,7 +105,7 @@ static const struct ieee80211_iface_combination iwl_mvm_iface_combinations[] = { | |||
105 | int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm) | 105 | int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm) |
106 | { | 106 | { |
107 | struct ieee80211_hw *hw = mvm->hw; | 107 | struct ieee80211_hw *hw = mvm->hw; |
108 | int num_mac, ret; | 108 | int num_mac, ret, i; |
109 | 109 | ||
110 | /* Tell mac80211 our characteristics */ | 110 | /* Tell mac80211 our characteristics */ |
111 | hw->flags = IEEE80211_HW_SIGNAL_DBM | | 111 | hw->flags = IEEE80211_HW_SIGNAL_DBM | |
@@ -156,11 +156,15 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm) | |||
156 | memcpy(mvm->addresses[0].addr, mvm->nvm_data->hw_addr, ETH_ALEN); | 156 | memcpy(mvm->addresses[0].addr, mvm->nvm_data->hw_addr, ETH_ALEN); |
157 | hw->wiphy->addresses = mvm->addresses; | 157 | hw->wiphy->addresses = mvm->addresses; |
158 | hw->wiphy->n_addresses = 1; | 158 | hw->wiphy->n_addresses = 1; |
159 | num_mac = mvm->nvm_data->n_hw_addrs; | 159 | |
160 | if (num_mac > 1) { | 160 | /* Extract additional MAC addresses if available */ |
161 | memcpy(mvm->addresses[1].addr, mvm->addresses[0].addr, | 161 | num_mac = (mvm->nvm_data->n_hw_addrs > 1) ? |
162 | min(IWL_MVM_MAX_ADDRESSES, mvm->nvm_data->n_hw_addrs) : 1; | ||
163 | |||
164 | for (i = 1; i < num_mac; i++) { | ||
165 | memcpy(mvm->addresses[i].addr, mvm->addresses[i-1].addr, | ||
162 | ETH_ALEN); | 166 | ETH_ALEN); |
163 | mvm->addresses[1].addr[5]++; | 167 | mvm->addresses[i].addr[5]++; |
164 | hw->wiphy->n_addresses++; | 168 | hw->wiphy->n_addresses++; |
165 | } | 169 | } |
166 | 170 | ||
diff --git a/drivers/net/wireless/iwlwifi/mvm/mvm.h b/drivers/net/wireless/iwlwifi/mvm/mvm.h index 23c39eab4d97..efe5da992897 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mvm.h +++ b/drivers/net/wireless/iwlwifi/mvm/mvm.h | |||
@@ -79,7 +79,7 @@ | |||
79 | #include "fw-api.h" | 79 | #include "fw-api.h" |
80 | 80 | ||
81 | #define IWL_INVALID_MAC80211_QUEUE 0xff | 81 | #define IWL_INVALID_MAC80211_QUEUE 0xff |
82 | #define IWL_MVM_MAX_ADDRESSES 2 | 82 | #define IWL_MVM_MAX_ADDRESSES 5 |
83 | /* RSSI offset for WkP */ | 83 | /* RSSI offset for WkP */ |
84 | #define IWL_RSSI_OFFSET 50 | 84 | #define IWL_RSSI_OFFSET 50 |
85 | 85 | ||