Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a344d677 authored by Johannes Berg's avatar Johannes Berg
Browse files

mac80211: allow drivers to support NL80211_SCAN_FLAG_RANDOM_ADDR



Allow drivers to support NL80211_SCAN_FLAG_RANDOM_ADDR with software
based scanning and generate a random MAC address for them for every
scan request with the flag.

Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 6ea0a69c
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -547,7 +547,9 @@ ath5k_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,


static void
ath5k_sw_scan_start(struct ieee80211_hw *hw)
ath5k_sw_scan_start(struct ieee80211_hw *hw,
		    struct ieee80211_vif *vif,
		    const u8 *mac_addr)
{
	struct ath5k_hw *ah = hw->priv;
	if (!ah->assoc)
@@ -556,7 +558,7 @@ ath5k_sw_scan_start(struct ieee80211_hw *hw)


static void
ath5k_sw_scan_complete(struct ieee80211_hw *hw)
ath5k_sw_scan_complete(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
{
	struct ath5k_hw *ah = hw->priv;
	ath5k_hw_set_ledstate(ah, ah->assoc ?
+1 −1
Original line number Diff line number Diff line
@@ -963,7 +963,7 @@ static void ath_scan_send_probe(struct ath_softc *sc,
	struct ieee80211_tx_info *info;
	int band = sc->offchannel.chan.chandef.chan->band;

	skb = ieee80211_probereq_get(sc->hw, vif,
	skb = ieee80211_probereq_get(sc->hw, vif->addr,
			ssid->ssid, ssid->ssid_len, req->ie_len);
	if (!skb)
		return;
+5 −2
Original line number Diff line number Diff line
@@ -1691,7 +1691,9 @@ static int ath9k_htc_ampdu_action(struct ieee80211_hw *hw,
	return ret;
}

static void ath9k_htc_sw_scan_start(struct ieee80211_hw *hw)
static void ath9k_htc_sw_scan_start(struct ieee80211_hw *hw,
				    struct ieee80211_vif *vif,
				    const u8 *mac_addr)
{
	struct ath9k_htc_priv *priv = hw->priv;
	struct ath_common *common = ath9k_hw_common(priv->ah);
@@ -1705,7 +1707,8 @@ static void ath9k_htc_sw_scan_start(struct ieee80211_hw *hw)
	mutex_unlock(&priv->mutex);
}

static void ath9k_htc_sw_scan_complete(struct ieee80211_hw *hw)
static void ath9k_htc_sw_scan_complete(struct ieee80211_hw *hw,
				       struct ieee80211_vif *vif)
{
	struct ath9k_htc_priv *priv = hw->priv;
	struct ath_common *common = ath9k_hw_common(priv->ah);
+5 −2
Original line number Diff line number Diff line
@@ -2180,14 +2180,17 @@ static int ath9k_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant)
	return 0;
}

static void ath9k_sw_scan_start(struct ieee80211_hw *hw)
static void ath9k_sw_scan_start(struct ieee80211_hw *hw,
				struct ieee80211_vif *vif,
				const u8 *mac_addr)
{
	struct ath_softc *sc = hw->priv;
	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
	set_bit(ATH_OP_SCANNING, &common->op_flags);
}

static void ath9k_sw_scan_complete(struct ieee80211_hw *hw)
static void ath9k_sw_scan_complete(struct ieee80211_hw *hw,
				   struct ieee80211_vif *vif)
{
	struct ath_softc *sc = hw->priv;
	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
+5 −2
Original line number Diff line number Diff line
@@ -494,7 +494,9 @@ static int wcn36xx_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
	return ret;
}

static void wcn36xx_sw_scan_start(struct ieee80211_hw *hw)
static void wcn36xx_sw_scan_start(struct ieee80211_hw *hw,
				  struct ieee80211_vif *vif,
				  const u8 *mac_addr)
{
	struct wcn36xx *wcn = hw->priv;

@@ -502,7 +504,8 @@ static void wcn36xx_sw_scan_start(struct ieee80211_hw *hw)
	wcn36xx_smd_start_scan(wcn);
}

static void wcn36xx_sw_scan_complete(struct ieee80211_hw *hw)
static void wcn36xx_sw_scan_complete(struct ieee80211_hw *hw,
				     struct ieee80211_vif *vif)
{
	struct wcn36xx *wcn = hw->priv;

Loading