linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [[PATCH wireless-drivers-next] 0/1] *** Support for RX Broadcast key ***
@ 2020-01-16 14:33 Hari Nagalla
  2020-01-16 14:33 ` [[PATCH wireless-drivers-next] 1/1] wlcore: mesh: Add support for RX Boradcast Key Hari Nagalla
  0 siblings, 1 reply; 4+ messages in thread
From: Hari Nagalla @ 2020-01-16 14:33 UTC (permalink / raw)
  To: linux-wireless; +Cc: mailtalm, kvalo, hnagalla

*** BLURB HERE ***

Maital Hahn (1):
  wlcore: mesh: Add support for RX Boradcast Key

 drivers/net/wireless/ti/wlcore/cmd.c      |  6 ++++--
 drivers/net/wireless/ti/wlcore/cmd.h      |  2 +-
 drivers/net/wireless/ti/wlcore/main.c     | 23 +++++++++++++++--------
 drivers/net/wireless/ti/wlcore/wlcore_i.h |  1 +
 4 files changed, 21 insertions(+), 11 deletions(-)

-- 
2.17.1


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

* [[PATCH wireless-drivers-next] 1/1] wlcore: mesh: Add support for RX Boradcast Key
  2020-01-16 14:33 [[PATCH wireless-drivers-next] 0/1] *** Support for RX Broadcast key *** Hari Nagalla
@ 2020-01-16 14:33 ` Hari Nagalla
  2020-01-26 15:34   ` [PATCH wireless-drivers-next 1/1] wlcore: mesh: Add support for RX Broadcast Key Kalle Valo
  2020-01-26 15:35   ` Kalle Valo
  0 siblings, 2 replies; 4+ messages in thread
From: Hari Nagalla @ 2020-01-16 14:33 UTC (permalink / raw)
  To: linux-wireless; +Cc: mailtalm, kvalo, hnagalla

From: Maital Hahn <maitalm@ti.com>

In order to support authentication of equals peers,
need to save RX Broadcast key per peer (on top of 1 TX broadcast key
and unicast key per peer).


Signed-off-by: Maital Hahn <maitalm@ti.com>
Acked-by: Guy Mishol <guym@ti.com>
Signed-off-by: Hari Nagalla <hnagalla@gmail.com>
---
 drivers/net/wireless/ti/wlcore/cmd.c      |  6 ++++--
 drivers/net/wireless/ti/wlcore/cmd.h      |  2 +-
 drivers/net/wireless/ti/wlcore/main.c     | 23 +++++++++++++++--------
 drivers/net/wireless/ti/wlcore/wlcore_i.h |  1 +
 4 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/ti/wlcore/cmd.c b/drivers/net/wireless/ti/wlcore/cmd.c
index 903968735a74..874b7ecac65f 100644
--- a/drivers/net/wireless/ti/wlcore/cmd.c
+++ b/drivers/net/wireless/ti/wlcore/cmd.c
@@ -1443,7 +1443,7 @@ int wl1271_cmd_set_sta_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
 int wl1271_cmd_set_ap_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
 			  u16 action, u8 id, u8 key_type,
 			  u8 key_size, const u8 *key, u8 hlid, u32 tx_seq_32,
-			  u16 tx_seq_16)
+			  u16 tx_seq_16, bool is_pairwise)
 {
 	struct wl1271_cmd_set_keys *cmd;
 	int ret = 0;
@@ -1458,8 +1458,10 @@ int wl1271_cmd_set_ap_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
 			lid_type = WEP_DEFAULT_LID_TYPE;
 		else
 			lid_type = BROADCAST_LID_TYPE;
-	} else {
+	} else if (is_pairwise) {
 		lid_type = UNICAST_LID_TYPE;
+	} else {
+		lid_type = BROADCAST_LID_TYPE;
 	}
 
 	wl1271_debug(DEBUG_CRYPT, "ap key action: %d id: %d lid: %d type: %d"
diff --git a/drivers/net/wireless/ti/wlcore/cmd.h b/drivers/net/wireless/ti/wlcore/cmd.h
index 52c3b4860461..c27f1b58030c 100644
--- a/drivers/net/wireless/ti/wlcore/cmd.h
+++ b/drivers/net/wireless/ti/wlcore/cmd.h
@@ -79,7 +79,7 @@ int wl1271_cmd_set_sta_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
 int wl1271_cmd_set_ap_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
 			  u16 action, u8 id, u8 key_type,
 			  u8 key_size, const u8 *key, u8 hlid, u32 tx_seq_32,
-			  u16 tx_seq_16);
+			  u16 tx_seq_16, bool is_pairwise);
 int wl12xx_cmd_set_peer_state(struct wl1271 *wl, struct wl12xx_vif *wlvif,
 			      u8 hlid);
 int wl12xx_roc(struct wl1271 *wl, struct wl12xx_vif *wlvif, u8 role_id,
diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c
index 2ca5658bbc2a..36f6b95fc703 100644
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
@@ -3287,7 +3287,7 @@ static void wl1271_op_configure_filter(struct ieee80211_hw *hw,
 static int wl1271_record_ap_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
 				u8 id, u8 key_type, u8 key_size,
 				const u8 *key, u8 hlid, u32 tx_seq_32,
-				u16 tx_seq_16)
+				u16 tx_seq_16, bool is_pairwise)
 {
 	struct wl1271_ap_key *ap_key;
 	int i;
@@ -3325,6 +3325,7 @@ static int wl1271_record_ap_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
 	ap_key->hlid = hlid;
 	ap_key->tx_seq_32 = tx_seq_32;
 	ap_key->tx_seq_16 = tx_seq_16;
+	ap_key->is_pairwise = is_pairwise;
 
 	wlvif->ap.recorded_keys[i] = ap_key;
 	return 0;
@@ -3360,7 +3361,7 @@ static int wl1271_ap_init_hwenc(struct wl1271 *wl, struct wl12xx_vif *wlvif)
 					    key->id, key->key_type,
 					    key->key_size, key->key,
 					    hlid, key->tx_seq_32,
-					    key->tx_seq_16);
+					    key->tx_seq_16, key->is_pairwise);
 		if (ret < 0)
 			goto out;
 
@@ -3383,7 +3384,8 @@ static int wl1271_ap_init_hwenc(struct wl1271 *wl, struct wl12xx_vif *wlvif)
 static int wl1271_set_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
 		       u16 action, u8 id, u8 key_type,
 		       u8 key_size, const u8 *key, u32 tx_seq_32,
-		       u16 tx_seq_16, struct ieee80211_sta *sta)
+		       u16 tx_seq_16, struct ieee80211_sta *sta,
+		       bool is_pairwise)
 {
 	int ret;
 	bool is_ap = (wlvif->bss_type == BSS_TYPE_AP_BSS);
@@ -3410,12 +3412,12 @@ static int wl1271_set_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
 			ret = wl1271_record_ap_key(wl, wlvif, id,
 					     key_type, key_size,
 					     key, hlid, tx_seq_32,
-					     tx_seq_16);
+					     tx_seq_16, is_pairwise);
 		} else {
 			ret = wl1271_cmd_set_ap_key(wl, wlvif, action,
 					     id, key_type, key_size,
 					     key, hlid, tx_seq_32,
-					     tx_seq_16);
+					     tx_seq_16, is_pairwise);
 		}
 
 		if (ret < 0)
@@ -3515,6 +3517,7 @@ int wlcore_set_key(struct wl1271 *wl, enum set_key_cmd cmd,
 	u16 tx_seq_16 = 0;
 	u8 key_type;
 	u8 hlid;
+	bool is_pairwise;
 
 	wl1271_debug(DEBUG_MAC80211, "mac80211 set key");
 
@@ -3564,12 +3567,14 @@ int wlcore_set_key(struct wl1271 *wl, enum set_key_cmd cmd,
 		return -EOPNOTSUPP;
 	}
 
+	is_pairwise = key_conf->flags & IEEE80211_KEY_FLAG_PAIRWISE;
+
 	switch (cmd) {
 	case SET_KEY:
 		ret = wl1271_set_key(wl, wlvif, KEY_ADD_OR_REPLACE,
 				 key_conf->keyidx, key_type,
 				 key_conf->keylen, key_conf->key,
-				 tx_seq_32, tx_seq_16, sta);
+				 tx_seq_32, tx_seq_16, sta, is_pairwise);
 		if (ret < 0) {
 			wl1271_error("Could not add or replace key");
 			return ret;
@@ -3595,7 +3600,7 @@ int wlcore_set_key(struct wl1271 *wl, enum set_key_cmd cmd,
 		ret = wl1271_set_key(wl, wlvif, KEY_REMOVE,
 				     key_conf->keyidx, key_type,
 				     key_conf->keylen, key_conf->key,
-				     0, 0, sta);
+				     0, 0, sta, is_pairwise);
 		if (ret < 0) {
 			wl1271_error("Could not remove key");
 			return ret;
@@ -6236,6 +6241,7 @@ static int wl1271_init_ieee80211(struct wl1271 *wl)
 
 	ieee80211_hw_set(wl->hw, SUPPORT_FAST_XMIT);
 	ieee80211_hw_set(wl->hw, CHANCTX_STA_CSA);
+	ieee80211_hw_set(wl->hw, SUPPORTS_PER_STA_GTK);
 	ieee80211_hw_set(wl->hw, QUEUE_CONTROL);
 	ieee80211_hw_set(wl->hw, TX_AMPDU_SETUP_IN_HW);
 	ieee80211_hw_set(wl->hw, AMPDU_AGGREGATION);
@@ -6280,7 +6286,8 @@ static int wl1271_init_ieee80211(struct wl1271 *wl)
 
 	wl->hw->wiphy->flags |= WIPHY_FLAG_AP_UAPSD |
 				WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL |
-				WIPHY_FLAG_HAS_CHANNEL_SWITCH;
+				WIPHY_FLAG_HAS_CHANNEL_SWITCH |
++				WIPHY_FLAG_IBSS_RSN;
 
 	wl->hw->wiphy->features |= NL80211_FEATURE_AP_SCAN;
 
diff --git a/drivers/net/wireless/ti/wlcore/wlcore_i.h b/drivers/net/wireless/ti/wlcore/wlcore_i.h
index 32ec121ccac2..7ebcb563bc20 100644
--- a/drivers/net/wireless/ti/wlcore/wlcore_i.h
+++ b/drivers/net/wireless/ti/wlcore/wlcore_i.h
@@ -226,6 +226,7 @@ struct wl1271_ap_key {
 	u8 hlid;
 	u32 tx_seq_32;
 	u16 tx_seq_16;
+	bool is_pairwise;
 };
 
 enum wl12xx_flags {
-- 
2.17.1


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

* Re: [PATCH wireless-drivers-next 1/1] wlcore: mesh: Add support for RX Broadcast Key
  2020-01-16 14:33 ` [[PATCH wireless-drivers-next] 1/1] wlcore: mesh: Add support for RX Boradcast Key Hari Nagalla
@ 2020-01-26 15:34   ` Kalle Valo
  2020-01-26 15:35   ` Kalle Valo
  1 sibling, 0 replies; 4+ messages in thread
From: Kalle Valo @ 2020-01-26 15:34 UTC (permalink / raw)
  To: Hari Nagalla; +Cc: linux-wireless, mailtalm, hnagalla

Hari Nagalla <hnagalla@gmail.com> wrote:

> From: Maital Hahn <maitalm@ti.com>
> 
> In order to support authentication of equals peers,
> need to save RX Broadcast key per peer (on top of 1 TX broadcast key
> and unicast key per peer).
> 
> Signed-off-by: Maital Hahn <maitalm@ti.com>
> Acked-by: Guy Mishol <guym@ti.com>
> Signed-off-by: Hari Nagalla <hnagalla@gmail.com>

Patch applied to wireless-drivers-next.git, thanks.

cf33a7728bf2 wlcore: mesh: Add support for RX Broadcast Key

-- 
https://patchwork.kernel.org/patch/11337165/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

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

* Re: [PATCH wireless-drivers-next 1/1] wlcore: mesh: Add support for RX Broadcast Key
  2020-01-16 14:33 ` [[PATCH wireless-drivers-next] 1/1] wlcore: mesh: Add support for RX Boradcast Key Hari Nagalla
  2020-01-26 15:34   ` [PATCH wireless-drivers-next 1/1] wlcore: mesh: Add support for RX Broadcast Key Kalle Valo
@ 2020-01-26 15:35   ` Kalle Valo
  1 sibling, 0 replies; 4+ messages in thread
From: Kalle Valo @ 2020-01-26 15:35 UTC (permalink / raw)
  To: Hari Nagalla; +Cc: linux-wireless, mailtalm, hnagalla

Hari Nagalla <hnagalla@gmail.com> wrote:

> From: Maital Hahn <maitalm@ti.com>
> 
> In order to support authentication of equals peers,
> need to save RX Broadcast key per peer (on top of 1 TX broadcast key
> and unicast key per peer).
> 
> Signed-off-by: Maital Hahn <maitalm@ti.com>
> Acked-by: Guy Mishol <guym@ti.com>
> Signed-off-by: Hari Nagalla <hnagalla@gmail.com>

The subject was broken and I had to manually fix it. It should look like this:

Subject: [PATCH wireless-drivers-next 1/1] wlcore: mesh: Add support for RX Boradcast Key

Please check this in the future patches, thanks.

-- 
https://patchwork.kernel.org/patch/11337165/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

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

end of thread, other threads:[~2020-01-26 15:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-01-16 14:33 [[PATCH wireless-drivers-next] 0/1] *** Support for RX Broadcast key *** Hari Nagalla
2020-01-16 14:33 ` [[PATCH wireless-drivers-next] 1/1] wlcore: mesh: Add support for RX Boradcast Key Hari Nagalla
2020-01-26 15:34   ` [PATCH wireless-drivers-next 1/1] wlcore: mesh: Add support for RX Broadcast Key Kalle Valo
2020-01-26 15:35   ` Kalle Valo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).