public inbox for linux-wireless@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] rndis_wlan: split getting current channel to separate function
@ 2011-11-19 11:04 Jussi Kivilinna
  2011-11-19 11:04 ` [PATCH 2/5] rndis_wlan: pass channel info to cfg80211_roamed() Jussi Kivilinna
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Jussi Kivilinna @ 2011-11-19 11:04 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless

Split getting current channel channel from hardware to separate function
as this function will be needed later in patch 'pass channel info to
cfg80211_roamed()'.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
---
 drivers/net/wireless/rndis_wlan.c |   49 +++++++++++++++++++++++--------------
 1 files changed, 31 insertions(+), 18 deletions(-)

diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 620e3c0..37c4c40 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -1347,6 +1347,32 @@ static int set_channel(struct usbnet *usbdev, int channel)
 	return ret;
 }
 
+static struct ieee80211_channel *get_current_channel(struct usbnet *usbdev,
+						     u16 *beacon_interval)
+{
+	struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
+	struct ieee80211_channel *channel;
+	struct ndis_80211_conf config;
+	int len, ret;
+
+	/* Get channel and beacon interval */
+	len = sizeof(config);
+	ret = rndis_query_oid(usbdev, OID_802_11_CONFIGURATION, &config, &len);
+	netdev_dbg(usbdev->net, "%s(): OID_802_11_CONFIGURATION -> %d\n",
+				__func__, ret);
+	if (ret < 0)
+		return NULL;
+
+	channel = ieee80211_get_channel(priv->wdev.wiphy,
+				KHZ_TO_MHZ(le32_to_cpu(config.ds_config)));
+	if (!channel)
+		return NULL;
+
+	if (beacon_interval)
+		*beacon_interval = le16_to_cpu(config.beacon_period);
+	return channel;
+}
+
 /* index must be 0 - N, as per NDIS  */
 static int add_wep_key(struct usbnet *usbdev, const u8 *key, int key_len,
 								int index)
@@ -2650,13 +2676,12 @@ static void rndis_wlan_craft_connected_bss(struct usbnet *usbdev, u8 *bssid,
 {
 	struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
 	struct ieee80211_channel *channel;
-	struct ndis_80211_conf config;
 	struct ndis_80211_ssid ssid;
 	struct cfg80211_bss *bss;
 	s32 signal;
 	u64 timestamp;
 	u16 capability;
-	u16 beacon_interval;
+	u16 beacon_interval = 0;
 	__le32 rssi;
 	u8 ie_buf[34];
 	int len, ret, ie_len;
@@ -2681,22 +2706,10 @@ static void rndis_wlan_craft_connected_bss(struct usbnet *usbdev, u8 *bssid,
 	}
 
 	/* Get channel and beacon interval */
-	len = sizeof(config);
-	ret = rndis_query_oid(usbdev, OID_802_11_CONFIGURATION, &config, &len);
-	netdev_dbg(usbdev->net, "%s(): OID_802_11_CONFIGURATION -> %d\n",
-				__func__, ret);
-	if (ret >= 0) {
-		beacon_interval = le16_to_cpu(config.beacon_period);
-		channel = ieee80211_get_channel(priv->wdev.wiphy,
-				KHZ_TO_MHZ(le32_to_cpu(config.ds_config)));
-		if (!channel) {
-			netdev_warn(usbdev->net, "%s(): could not get channel."
-						 "\n", __func__);
-			return;
-		}
-	} else {
-		netdev_warn(usbdev->net, "%s(): could not get configuration.\n",
-					 __func__);
+	channel = get_current_channel(usbdev, &beacon_interval);
+	if (!channel) {
+		netdev_warn(usbdev->net, "%s(): could not get channel.\n",
+					__func__);
 		return;
 	}
 


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/5] rndis_wlan: pass channel info to cfg80211_roamed()
  2011-11-19 11:04 [PATCH 1/5] rndis_wlan: split getting current channel to separate function Jussi Kivilinna
@ 2011-11-19 11:04 ` Jussi Kivilinna
  2011-11-19 11:04 ` [PATCH 3/5] rndis_wlan: add missing __packed Jussi Kivilinna
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Jussi Kivilinna @ 2011-11-19 11:04 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless

cfg80211_roamed() now has channel parameter so add passing current channel
info.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
---
 drivers/net/wireless/rndis_wlan.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 37c4c40..d5bfc8d 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -2854,8 +2854,9 @@ static void rndis_wlan_do_link_up_work(struct usbnet *usbdev)
 						req_ie_len, resp_ie,
 						resp_ie_len, 0, GFP_KERNEL);
 		else
-			cfg80211_roamed(usbdev->net, NULL, bssid,
-					req_ie, req_ie_len,
+			cfg80211_roamed(usbdev->net,
+					get_current_channel(usbdev, NULL),
+					bssid, req_ie, req_ie_len,
 					resp_ie, resp_ie_len, GFP_KERNEL);
 	} else if (priv->infra_mode == NDIS_80211_INFRA_ADHOC)
 		cfg80211_ibss_joined(usbdev->net, bssid, GFP_KERNEL);


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 3/5] rndis_wlan: add missing __packed
  2011-11-19 11:04 [PATCH 1/5] rndis_wlan: split getting current channel to separate function Jussi Kivilinna
  2011-11-19 11:04 ` [PATCH 2/5] rndis_wlan: pass channel info to cfg80211_roamed() Jussi Kivilinna
@ 2011-11-19 11:04 ` Jussi Kivilinna
  2011-11-19 11:04 ` [PATCH 4/5] rndis_wlan: add reporting of PMKSA candidate events Jussi Kivilinna
  2011-11-19 11:04 ` [PATCH 5/5] rndis_wlan: remove unused macro Jussi Kivilinna
  3 siblings, 0 replies; 5+ messages in thread
From: Jussi Kivilinna @ 2011-11-19 11:04 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless

Some structures were missing __packed.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
---
 drivers/net/wireless/rndis_wlan.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index d5bfc8d..08c85af 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -387,13 +387,13 @@ struct ndis_80211_capability {
 struct ndis_80211_bssid_info {
 	u8 bssid[6];
 	u8 pmkid[16];
-};
+} __packed;
 
 struct ndis_80211_pmkid {
 	__le32 length;
 	__le32 bssid_info_count;
 	struct ndis_80211_bssid_info bssid_info[0];
-};
+} __packed;
 
 /*
  *  private data


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 4/5] rndis_wlan: add reporting of PMKSA candidate events
  2011-11-19 11:04 [PATCH 1/5] rndis_wlan: split getting current channel to separate function Jussi Kivilinna
  2011-11-19 11:04 ` [PATCH 2/5] rndis_wlan: pass channel info to cfg80211_roamed() Jussi Kivilinna
  2011-11-19 11:04 ` [PATCH 3/5] rndis_wlan: add missing __packed Jussi Kivilinna
@ 2011-11-19 11:04 ` Jussi Kivilinna
  2011-11-19 11:04 ` [PATCH 5/5] rndis_wlan: remove unused macro Jussi Kivilinna
  3 siblings, 0 replies; 5+ messages in thread
From: Jussi Kivilinna @ 2011-11-19 11:04 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless

Convert old WEXT reporting to use new cfg80211_pmksa_candidate_notify().

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
---
 drivers/net/wireless/rndis_wlan.c |   26 +++++++++-----------------
 1 files changed, 9 insertions(+), 17 deletions(-)

diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 08c85af..56514d9 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -244,6 +244,10 @@ enum ndis_80211_power_mode {
 	NDIS_80211_POWER_MODE_FAST_PSP,
 };
 
+enum ndis_80211_pmkid_cand_list_flag_bits {
+	NDIS_80211_PMKID_CAND_PREAUTH = cpu_to_le32(1 << 0)
+};
+
 struct ndis_80211_auth_request {
 	__le32 length;
 	u8 bssid[6];
@@ -3022,25 +3026,13 @@ static void rndis_wlan_pmkid_cand_list_indication(struct usbnet *usbdev,
 	for (i = 0; i < le32_to_cpu(cand_list->num_candidates); i++) {
 		struct ndis_80211_pmkid_candidate *cand =
 						&cand_list->candidate_list[i];
+		bool preauth = !!(cand->flags & NDIS_80211_PMKID_CAND_PREAUTH);
 
-		netdev_dbg(usbdev->net, "cand[%i]: flags: 0x%08x, bssid: %pM\n",
-			   i, le32_to_cpu(cand->flags), cand->bssid);
-
-#if 0
-		struct iw_pmkid_cand pcand;
-		union iwreq_data wrqu;
+		netdev_dbg(usbdev->net, "cand[%i]: flags: 0x%08x, preauth: %d, bssid: %pM\n",
+			   i, le32_to_cpu(cand->flags), preauth, cand->bssid);
 
-		memset(&pcand, 0, sizeof(pcand));
-		if (le32_to_cpu(cand->flags) & 0x01)
-			pcand.flags |= IW_PMKID_CAND_PREAUTH;
-		pcand.index = i;
-		memcpy(pcand.bssid.sa_data, cand->bssid, ETH_ALEN);
-
-		memset(&wrqu, 0, sizeof(wrqu));
-		wrqu.data.length = sizeof(pcand);
-		wireless_send_event(usbdev->net, IWEVPMKIDCAND, &wrqu,
-								(u8 *)&pcand);
-#endif
+		cfg80211_pmksa_candidate_notify(usbdev->net, i, cand->bssid,
+						preauth, GFP_ATOMIC);
 	}
 }
 


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 5/5] rndis_wlan: remove unused macro
  2011-11-19 11:04 [PATCH 1/5] rndis_wlan: split getting current channel to separate function Jussi Kivilinna
                   ` (2 preceding siblings ...)
  2011-11-19 11:04 ` [PATCH 4/5] rndis_wlan: add reporting of PMKSA candidate events Jussi Kivilinna
@ 2011-11-19 11:04 ` Jussi Kivilinna
  3 siblings, 0 replies; 5+ messages in thread
From: Jussi Kivilinna @ 2011-11-19 11:04 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless

NET_TYPE_11FB actually has never been used.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
---
 drivers/net/wireless/rndis_wlan.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 56514d9..3802c31 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -402,8 +402,6 @@ struct ndis_80211_pmkid {
 /*
  *  private data
  */
-#define NET_TYPE_11FB	0
-
 #define CAP_MODE_80211A		1
 #define CAP_MODE_80211B		2
 #define CAP_MODE_80211G		4


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-11-19 11:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-19 11:04 [PATCH 1/5] rndis_wlan: split getting current channel to separate function Jussi Kivilinna
2011-11-19 11:04 ` [PATCH 2/5] rndis_wlan: pass channel info to cfg80211_roamed() Jussi Kivilinna
2011-11-19 11:04 ` [PATCH 3/5] rndis_wlan: add missing __packed Jussi Kivilinna
2011-11-19 11:04 ` [PATCH 4/5] rndis_wlan: add reporting of PMKSA candidate events Jussi Kivilinna
2011-11-19 11:04 ` [PATCH 5/5] rndis_wlan: remove unused macro Jussi Kivilinna

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox