Linux wireless drivers development
 help / color / mirror / Atom feed
From: Reinette Chatre <reinette.chatre@intel.com>
To: linville@tuxdriver.com
Cc: linux-wireless@vger.kernel.org,
	ipw3945-devel@lists.sourceforge.net,
	Johannes Berg <johannes.berg@intel.com>,
	Reinette Chatre <reinette.chatre@intel.com>
Subject: [PATCH 05/23] iwlwifi: use virtual interface address for scan
Date: Sat,  5 Jun 2010 23:56:20 -0700	[thread overview]
Message-ID: <1275807398-18184-6-git-send-email-reinette.chatre@intel.com> (raw)
In-Reply-To: <1275807398-18184-1-git-send-email-reinette.chatre@intel.com>

From: Johannes Berg <johannes.berg@intel.com>

For probe request frames sent during scan, we
should use the virtual interface's mac address
that the scan was initiated on to avoid issues
when the wrong address is used.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-agn-lib.c  |    4 +++-
 drivers/net/wireless/iwlwifi/iwl-core.h     |    2 +-
 drivers/net/wireless/iwlwifi/iwl-scan.c     |    4 ++--
 drivers/net/wireless/iwlwifi/iwl3945-base.c |    4 +++-
 4 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
index 57c122d..42e6219 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
@@ -1462,13 +1462,15 @@ void iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif)
 	if (!priv->is_internal_short_scan) {
 		cmd_len = iwl_fill_probe_req(priv,
 					(struct ieee80211_mgmt *)scan->data,
+					vif->addr,
 					priv->scan_request->ie,
 					priv->scan_request->ie_len,
 					IWL_MAX_SCAN_SIZE - sizeof(*scan));
 	} else {
+		/* use bcast addr, will not be transmitted but must be valid */
 		cmd_len = iwl_fill_probe_req(priv,
 					(struct ieee80211_mgmt *)scan->data,
-					NULL, 0,
+					iwl_bcast_addr, NULL, 0,
 					IWL_MAX_SCAN_SIZE - sizeof(*scan));
 
 	}
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index d3b61dc..69738f1 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -524,7 +524,7 @@ void iwl_bg_start_internal_scan(struct work_struct *work);
 void iwl_internal_short_hw_scan(struct iwl_priv *priv);
 int iwl_force_reset(struct iwl_priv *priv, int mode);
 u16 iwl_fill_probe_req(struct iwl_priv *priv, struct ieee80211_mgmt *frame,
-		       const u8 *ie, int ie_len, int left);
+		       const u8 *ta, const u8 *ie, int ie_len, int left);
 void iwl_setup_rx_scan_handlers(struct iwl_priv *priv);
 u16 iwl_get_active_dwell_time(struct iwl_priv *priv,
 			      enum ieee80211_band band,
diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c
index 5d3f51f..0f9cbc2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-scan.c
+++ b/drivers/net/wireless/iwlwifi/iwl-scan.c
@@ -438,7 +438,7 @@ EXPORT_SYMBOL(iwl_bg_scan_check);
  */
 
 u16 iwl_fill_probe_req(struct iwl_priv *priv, struct ieee80211_mgmt *frame,
-		       const u8 *ies, int ie_len, int left)
+		       const u8 *ta, const u8 *ies, int ie_len, int left)
 {
 	int len = 0;
 	u8 *pos = NULL;
@@ -451,7 +451,7 @@ u16 iwl_fill_probe_req(struct iwl_priv *priv, struct ieee80211_mgmt *frame,
 
 	frame->frame_control = cpu_to_le16(IEEE80211_STYPE_PROBE_REQ);
 	memcpy(frame->da, iwl_bcast_addr, ETH_ALEN);
-	memcpy(frame->sa, priv->mac_addr, ETH_ALEN);
+	memcpy(frame->sa, ta, ETH_ALEN);
 	memcpy(frame->bssid, iwl_bcast_addr, ETH_ALEN);
 	frame->seq_ctrl = 0;
 
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 5976166..35471cf 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -2967,14 +2967,16 @@ void iwl3945_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif)
 		scan->tx_cmd.len = cpu_to_le16(
 			iwl_fill_probe_req(priv,
 				(struct ieee80211_mgmt *)scan->data,
+				vif->addr,
 				priv->scan_request->ie,
 				priv->scan_request->ie_len,
 				IWL_MAX_SCAN_SIZE - sizeof(*scan)));
 	} else {
+		/* use bcast addr, will not be transmitted but must be valid */
 		scan->tx_cmd.len = cpu_to_le16(
 			iwl_fill_probe_req(priv,
 				(struct ieee80211_mgmt *)scan->data,
-				NULL, 0,
+				iwl_bcast_addr, NULL, 0,
 				IWL_MAX_SCAN_SIZE - sizeof(*scan)));
 	}
 	/* select Rx antennas */
-- 
1.7.0.4


  parent reply	other threads:[~2010-06-06  6:56 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-06  6:56 [PATCH 00/23] iwlwifi updates for 2.6.36 Reinette Chatre
2010-06-06  6:56 ` [PATCH 01/23] iwlwifi: remove useless node_addr assignments Reinette Chatre
2010-06-06  6:56 ` [PATCH 02/23] iwlwifi: remove unused wlap_bssid_addr assignment Reinette Chatre
2010-06-06  6:56 ` [PATCH 03/23] iwlwifi: remove mac_addr assignment Reinette Chatre
2010-06-06  6:56 ` [PATCH 04/23] iwlwifi: set MAC address in RXON from interface Reinette Chatre
2010-06-06  6:56 ` Reinette Chatre [this message]
2010-06-06  6:56 ` [PATCH 06/23] iwlwifi: remove debug frame dumping Reinette Chatre
2010-06-06  6:56 ` [PATCH 07/23] iwlwifi: do not clear data after chain noise calib Reinette Chatre
2010-06-06  6:56 ` [PATCH 08/23] iwlwifi: remove unused parameter in iwl_priv Reinette Chatre
2010-06-06  6:56 ` [PATCH 09/23] iwlwifi: beacon format related helper function Reinette Chatre
2010-06-06  6:56 ` [PATCH 10/23] iwlwifi: support channel switch offload in driver Reinette Chatre
2010-06-06  6:56 ` [PATCH 11/23] iwlwifi: beacon internal time unit Reinette Chatre
2010-06-06  6:56 ` [PATCH 12/23] iwlwifi: remove priv->mac_addr Reinette Chatre
2010-06-06  6:56 ` [PATCH 13/23] iwlwifi: remove inaccurate comment Reinette Chatre
2010-06-06  6:56 ` [PATCH 14/23] iwl3945: fix bugs in txq freeing Reinette Chatre
2010-06-06  6:56 ` [PATCH 15/23] iwlagn: fix bug " Reinette Chatre
2010-06-06  6:56 ` [PATCH 16/23] iwlwifi: kzalloc txb array Reinette Chatre
2010-06-06  6:56 ` [PATCH 17/23] iwlwifi: reduce memory allocation Reinette Chatre
2010-06-06  6:56 ` [PATCH 18/23] iwlwifi: do not use huge command buffer for channel switch Reinette Chatre
2010-06-06  6:56 ` [PATCH 19/23] iwlwifi: generic scan TX antenna forcing Reinette Chatre
2010-06-06  6:56 ` [PATCH 20/23] iwlwifi: queue user-initiated scan when doing internal scan Reinette Chatre
2010-06-06  6:56 ` [PATCH 21/23] iwlwifi: remove unused parameter Reinette Chatre
2010-06-06  6:56 ` [PATCH 22/23] iwlwifi: parse block ack responses correctly Reinette Chatre
2010-06-06  6:56 ` [PATCH 23/23] iwlwifi: fix wrapping when handling aggregated batches Reinette Chatre

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1275807398-18184-6-git-send-email-reinette.chatre@intel.com \
    --to=reinette.chatre@intel.com \
    --cc=ipw3945-devel@lists.sourceforge.net \
    --cc=johannes.berg@intel.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox