Merge tag 'wireless-drivers-next-for-davem-2016-07-13' of git://git.kernel.org/pub...
authorDavid S. Miller <davem@davemloft.net>
Thu, 14 Jul 2016 23:27:42 +0000 (16:27 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 14 Jul 2016 23:32:27 +0000 (16:32 -0700)
Kalle Valo says:

====================
wireless-drivers-next patches for 4.8

Major changes:

iwlwifi

* more work on the RX path for the 9000 device series
* some more dynamic queue allocation work
* SAR BIOS implementation
* some work on debugging capabilities
* added support for GCMP encryption
* data path rework in preparation for new HW
* some cleanup to remove transport dependency on mac80211
* support for MSIx in preparation for new HW
* lots of work in preparation for HW support (9000 and a000 series)

mwifiex

* implement get_tx_power and get_antenna cfg80211 operation callbacks

wl18xx

* add support for 64bit clock

rtl8xxxu

* aggregation support (optional for now)

Also wireless-drivers is merged to fix some conflicts.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
1  2 
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
drivers/net/wireless/intel/iwlwifi/mvm/scan.c
drivers/net/wireless/marvell/mwifiex/scan.c
drivers/net/wireless/ti/wlcore/main.c

@@@ -400,9 -396,10 +400,9 @@@ void iwl_mvm_rx_lmac_scan_complete_noti
                               iwl_mvm_ebs_status_str(scan_notif->ebs_status));
  
                mvm->scan_status &= ~IWL_MVM_SCAN_REGULAR;
 -              ieee80211_scan_completed(mvm->hw,
 -                              scan_notif->status == IWL_SCAN_OFFLOAD_ABORTED);
 +              ieee80211_scan_completed(mvm->hw, &info);
                iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN);
-               del_timer(&mvm->scan_timer);
+               cancel_delayed_work(&mvm->scan_timeout_dwork);
        } else {
                IWL_ERR(mvm,
                        "got scan complete notification but no scan is running\n");
@@@ -1433,13 -1432,9 +1435,13 @@@ void iwl_mvm_rx_umac_scan_complete_noti
  
        /* if the scan is already stopping, we don't need to notify mac80211 */
        if (mvm->scan_uid_status[uid] == IWL_MVM_SCAN_REGULAR) {
 -              ieee80211_scan_completed(mvm->hw, aborted);
 +              struct cfg80211_scan_info info = {
 +                      .aborted = aborted,
 +              };
 +
 +              ieee80211_scan_completed(mvm->hw, &info);
                iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN);
-               del_timer(&mvm->scan_timer);
+               cancel_delayed_work(&mvm->scan_timeout_dwork);
        } else if (mvm->scan_uid_status[uid] == IWL_MVM_SCAN_SCHED) {
                ieee80211_sched_scan_stopped(mvm->hw);
                mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED;
                 * to release the scan reference here.
                 */
                iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN);
-               del_timer(&mvm->scan_timer);
+               cancel_delayed_work(&mvm->scan_timeout_dwork);
 -              if (notify)
 -                      ieee80211_scan_completed(mvm->hw, true);
 +              if (notify) {
 +                      struct cfg80211_scan_info info = {
 +                              .aborted = true,
 +                      };
 +
 +                      ieee80211_scan_completed(mvm->hw, &info);
 +              }
        } else if (notify) {
                ieee80211_sched_scan_stopped(mvm->hw);
                mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED;
@@@ -1956,14 -1957,11 +1957,15 @@@ static void mwifiex_check_next_scan_com
                        mwifiex_complete_scan(priv);
  
                if (priv->scan_request) {
 +                      struct cfg80211_scan_info info = {
 +                              .aborted = false,
 +                      };
 +
                        mwifiex_dbg(adapter, INFO,
                                    "info: notifying scan done\n");
 -                      cfg80211_scan_done(priv->scan_request, 0);
 +                      cfg80211_scan_done(priv->scan_request, &info);
                        priv->scan_request = NULL;
+                       priv->scan_aborting = false;
                } else {
                        priv->scan_aborting = false;
                        mwifiex_dbg(adapter, INFO,
  
                if (!adapter->active_scan_triggered) {
                        if (priv->scan_request) {
 +                              struct cfg80211_scan_info info = {
 +                                      .aborted = true,
 +                              };
 +
                                mwifiex_dbg(adapter, INFO,
                                            "info: aborting scan\n");
 -                              cfg80211_scan_done(priv->scan_request, 1);
 +                              cfg80211_scan_done(priv->scan_request, &info);
                                priv->scan_request = NULL;
+                               priv->scan_aborting = false;
                        } else {
                                priv->scan_aborting = false;
                                mwifiex_dbg(adapter, INFO,
        return;
  }
  
 -                              cfg80211_scan_done(priv->scan_request, 1);
+ void mwifiex_cancel_scan(struct mwifiex_adapter *adapter)
+ {
+       struct mwifiex_private *priv;
+       unsigned long cmd_flags;
+       int i;
+       mwifiex_cancel_pending_scan_cmd(adapter);
+       if (adapter->scan_processing) {
+               spin_lock_irqsave(&adapter->mwifiex_cmd_lock, cmd_flags);
+               adapter->scan_processing = false;
+               spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, cmd_flags);
+               for (i = 0; i < adapter->priv_num; i++) {
+                       priv = adapter->priv[i];
+                       if (!priv)
+                               continue;
+                       if (priv->scan_request) {
++                              struct cfg80211_scan_info info = {
++                                      .aborted = true,
++                              };
++
+                               mwifiex_dbg(adapter, INFO,
+                                           "info: aborting scan\n");
++                              cfg80211_scan_done(priv->scan_request, &info);
+                               priv->scan_request = NULL;
+                               priv->scan_aborting = false;
+                       }
+               }
+       }
+ }
  /*
   * This function handles the command response of scan.
   *
Simple merge