Loading drivers/net/wireless/iwlwifi/dvm/agn.h +1 −1 Original line number Diff line number Diff line Loading @@ -269,7 +269,7 @@ void iwl_scan_offchannel_skb_status(struct iwl_priv *priv); #define IWL_ACTIVE_QUIET_TIME cpu_to_le16(10) /* msec */ #define IWL_PLCP_QUIET_THRESH cpu_to_le16(1) /* packets */ #define IWL_SCAN_CHECK_WATCHDOG (HZ * 7) #define IWL_SCAN_CHECK_WATCHDOG (HZ * 15) /* bt coex */ Loading drivers/net/wireless/iwlwifi/dvm/mac80211.c +17 −20 Original line number Diff line number Diff line Loading @@ -1415,9 +1415,7 @@ static int iwlagn_mac_change_interface(struct ieee80211_hw *hw, enum nl80211_iftype newtype, bool newp2p) { struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw); struct iwl_rxon_context *ctx = iwl_rxon_ctx_from_vif(vif); struct iwl_rxon_context *bss_ctx = &priv->contexts[IWL_RXON_CTX_BSS]; struct iwl_rxon_context *tmp; struct iwl_rxon_context *ctx, *tmp; enum nl80211_iftype newviftype = newtype; u32 interface_modes; int err; Loading @@ -1428,6 +1426,18 @@ static int iwlagn_mac_change_interface(struct ieee80211_hw *hw, mutex_lock(&priv->mutex); ctx = iwl_rxon_ctx_from_vif(vif); /* * To simplify this code, only support changes on the * BSS context. The PAN context is usually reassigned * by creating/removing P2P interfaces anyway. */ if (ctx->ctxid != IWL_RXON_CTX_BSS) { err = -EBUSY; goto out; } if (!ctx->vif || !iwl_is_ready_rf(priv)) { /* * Huh? But wait ... this can maybe happen when Loading @@ -1437,32 +1447,19 @@ static int iwlagn_mac_change_interface(struct ieee80211_hw *hw, goto out; } /* Check if the switch is supported in the same context */ interface_modes = ctx->interface_modes | ctx->exclusive_interface_modes; if (!(interface_modes & BIT(newtype))) { err = -EBUSY; goto out; } /* * Refuse a change that should be done by moving from the PAN * context to the BSS context instead, if the BSS context is * available and can support the new interface type. */ if (ctx->ctxid == IWL_RXON_CTX_PAN && !bss_ctx->vif && (bss_ctx->interface_modes & BIT(newtype) || bss_ctx->exclusive_interface_modes & BIT(newtype))) { BUILD_BUG_ON(NUM_IWL_RXON_CTX != 2); err = -EBUSY; goto out; } if (ctx->exclusive_interface_modes & BIT(newtype)) { for_each_context(priv, tmp) { if (ctx == tmp) continue; if (!tmp->vif) if (!tmp->is_active) continue; /* Loading drivers/net/wireless/iwlwifi/dvm/scan.c +6 −0 Original line number Diff line number Diff line Loading @@ -720,6 +720,12 @@ static int iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif) switch (priv->scan_type) { case IWL_SCAN_RADIO_RESET: IWL_DEBUG_SCAN(priv, "Start internal passive scan.\n"); /* * Override quiet time as firmware checks that active * dwell is >= quiet; since we use passive scan it'll * not actually be used. */ scan->quiet_time = cpu_to_le16(IWL_RADIO_RESET_DWELL_TIME); break; case IWL_SCAN_NORMAL: if (priv->scan_request->n_ssids) { Loading Loading
drivers/net/wireless/iwlwifi/dvm/agn.h +1 −1 Original line number Diff line number Diff line Loading @@ -269,7 +269,7 @@ void iwl_scan_offchannel_skb_status(struct iwl_priv *priv); #define IWL_ACTIVE_QUIET_TIME cpu_to_le16(10) /* msec */ #define IWL_PLCP_QUIET_THRESH cpu_to_le16(1) /* packets */ #define IWL_SCAN_CHECK_WATCHDOG (HZ * 7) #define IWL_SCAN_CHECK_WATCHDOG (HZ * 15) /* bt coex */ Loading
drivers/net/wireless/iwlwifi/dvm/mac80211.c +17 −20 Original line number Diff line number Diff line Loading @@ -1415,9 +1415,7 @@ static int iwlagn_mac_change_interface(struct ieee80211_hw *hw, enum nl80211_iftype newtype, bool newp2p) { struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw); struct iwl_rxon_context *ctx = iwl_rxon_ctx_from_vif(vif); struct iwl_rxon_context *bss_ctx = &priv->contexts[IWL_RXON_CTX_BSS]; struct iwl_rxon_context *tmp; struct iwl_rxon_context *ctx, *tmp; enum nl80211_iftype newviftype = newtype; u32 interface_modes; int err; Loading @@ -1428,6 +1426,18 @@ static int iwlagn_mac_change_interface(struct ieee80211_hw *hw, mutex_lock(&priv->mutex); ctx = iwl_rxon_ctx_from_vif(vif); /* * To simplify this code, only support changes on the * BSS context. The PAN context is usually reassigned * by creating/removing P2P interfaces anyway. */ if (ctx->ctxid != IWL_RXON_CTX_BSS) { err = -EBUSY; goto out; } if (!ctx->vif || !iwl_is_ready_rf(priv)) { /* * Huh? But wait ... this can maybe happen when Loading @@ -1437,32 +1447,19 @@ static int iwlagn_mac_change_interface(struct ieee80211_hw *hw, goto out; } /* Check if the switch is supported in the same context */ interface_modes = ctx->interface_modes | ctx->exclusive_interface_modes; if (!(interface_modes & BIT(newtype))) { err = -EBUSY; goto out; } /* * Refuse a change that should be done by moving from the PAN * context to the BSS context instead, if the BSS context is * available and can support the new interface type. */ if (ctx->ctxid == IWL_RXON_CTX_PAN && !bss_ctx->vif && (bss_ctx->interface_modes & BIT(newtype) || bss_ctx->exclusive_interface_modes & BIT(newtype))) { BUILD_BUG_ON(NUM_IWL_RXON_CTX != 2); err = -EBUSY; goto out; } if (ctx->exclusive_interface_modes & BIT(newtype)) { for_each_context(priv, tmp) { if (ctx == tmp) continue; if (!tmp->vif) if (!tmp->is_active) continue; /* Loading
drivers/net/wireless/iwlwifi/dvm/scan.c +6 −0 Original line number Diff line number Diff line Loading @@ -720,6 +720,12 @@ static int iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif) switch (priv->scan_type) { case IWL_SCAN_RADIO_RESET: IWL_DEBUG_SCAN(priv, "Start internal passive scan.\n"); /* * Override quiet time as firmware checks that active * dwell is >= quiet; since we use passive scan it'll * not actually be used. */ scan->quiet_time = cpu_to_le16(IWL_RADIO_RESET_DWELL_TIME); break; case IWL_SCAN_NORMAL: if (priv->scan_request->n_ssids) { Loading