aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorSara Sharon <sara.sharon@intel.com>2016-01-10 07:23:25 -0500
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2016-02-27 15:00:05 -0500
commit77fe739554e13d44466e115dbaba3e7aa3aececd (patch)
tree877db31530beb2b887b03c5a782e56326075cca3 /drivers/net
parente0d8fdecf3acf36eb738e42d3caf46371500881c (diff)
iwlwifi: mvm: update rx_status with mactime flag
When forming IBSS, mac80211 scans in order to find an already existing cell to join. In case the scan does not find any existing cell a new IBSS cell is formed. When receiving the beacons of another IBSS cell we should merge if the other IBSS cell's TSF is higher than ours. However, currently iwlmvm does not set any timestamp flag in rx_status so there is no valid rx timestamp to compare the beacon's TSF to. The reason for that is that TSF as indicated by the firmware is at INA time, but up till now mac80211 expected the TSF at the beginning or end of the MPDU. Set the flag to the newly added RX_FLAG_MACTIME_PLCP_START flag. Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rx.c8
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c2
3 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
index 535134d639e0..e885db3464b0 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
@@ -1484,6 +1484,8 @@ void iwl_mvm_rx_stored_beacon_notif(struct iwl_mvm *mvm,
1484 /* update rx_status according to the notification's metadata */ 1484 /* update rx_status according to the notification's metadata */
1485 memset(&rx_status, 0, sizeof(rx_status)); 1485 memset(&rx_status, 0, sizeof(rx_status));
1486 rx_status.mactime = le64_to_cpu(sb->tsf); 1486 rx_status.mactime = le64_to_cpu(sb->tsf);
1487 /* TSF as indicated by the firmware is at INA time */
1488 rx_status.flag |= RX_FLAG_MACTIME_PLCP_START;
1487 rx_status.device_timestamp = le32_to_cpu(sb->system_time); 1489 rx_status.device_timestamp = le32_to_cpu(sb->system_time);
1488 rx_status.band = 1490 rx_status.band =
1489 (sb->phy_flags & cpu_to_le16(RX_RES_PHY_FLAGS_BAND_24)) ? 1491 (sb->phy_flags & cpu_to_le16(RX_RES_PHY_FLAGS_BAND_24)) ?
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rx.c b/drivers/net/wireless/intel/iwlwifi/mvm/rx.c
index 055a8b0f7ad7..ad625f0c79ed 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rx.c
@@ -322,11 +322,9 @@ void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi,
322 rx_status->freq = 322 rx_status->freq =
323 ieee80211_channel_to_frequency(le16_to_cpu(phy_info->channel), 323 ieee80211_channel_to_frequency(le16_to_cpu(phy_info->channel),
324 rx_status->band); 324 rx_status->band);
325 /* 325
326 * TSF as indicated by the fw is at INA time, but mac80211 expects the 326 /* TSF as indicated by the firmware is at INA time */
327 * TSF at the beginning of the MPDU. 327 rx_status->flag |= RX_FLAG_MACTIME_PLCP_START;
328 */
329 /*rx_status->flag |= RX_FLAG_MACTIME_MPDU;*/
330 328
331 iwl_mvm_get_signal_strength(mvm, phy_info, rx_status); 329 iwl_mvm_get_signal_strength(mvm, phy_info, rx_status);
332 330
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
index 615dea143d4e..a9180b06fb52 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
@@ -332,6 +332,8 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
332 rx_status->freq = ieee80211_channel_to_frequency(desc->channel, 332 rx_status->freq = ieee80211_channel_to_frequency(desc->channel,
333 rx_status->band); 333 rx_status->band);
334 iwl_mvm_get_signal_strength(mvm, desc, rx_status); 334 iwl_mvm_get_signal_strength(mvm, desc, rx_status);
335 /* TSF as indicated by the firmware is at INA time */
336 rx_status->flag |= RX_FLAG_MACTIME_PLCP_START;
335 337
336 rcu_read_lock(); 338 rcu_read_lock();
337 339