Return-path: Received: from mail-vc0-f175.google.com ([209.85.220.175]:51305 "EHLO mail-vc0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754631AbaKNJGU (ORCPT ); Fri, 14 Nov 2014 04:06:20 -0500 Received: by mail-vc0-f175.google.com with SMTP id hy10so612978vcb.6 for ; Fri, 14 Nov 2014 01:06:19 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <5465C333.7030704@rempel-privat.de> References: <1415941631-24140-1-git-send-email-yeohchunyeow@gmail.com> <5465C333.7030704@rempel-privat.de> Date: Fri, 14 Nov 2014 17:06:18 +0800 Message-ID: (sfid-20141114_100627_819568_BC7860A1) Subject: Re: [PATCH] ath9k_htc: turn on software mgmt crypto for secured mesh From: Yeoh Chun-Yeow To: Oleksij Rempel Cc: John Linville , "linux-wireless@vger.kernel.org" , ath9k-devel@lists.ath9k.org, Adrian Chadd Content-Type: text/plain; charset=UTF-8 Sender: linux-wireless-owner@vger.kernel.org List-ID: On Fri, Nov 14, 2014 at 4:54 PM, Oleksij Rempel wrote: > Am 14.11.2014 um 06:07 schrieb Chun-Yeow Yeoh: >> Secured mesh encrypts the unicast mgmt frame using the same >> key that used for encrypting the unicast data frame. The patch >> "ath9k_htc_firmware: fix the offset of CCMP header for mesh >> data frame" applied to open-ath9k-htc-firmware allows the >> ath9k_htc to be loaded without "nohwcrypt=1". Unfortunately, >> this is not working and we still need CCMP encryption of >> management frames to be done in software. Fix this. >> >> This patch is tested with the following hardwares: >> - TP-Link TL-WN821N v3 802.11n [Atheros AR7010+AR9287] >> - AR9271 802.11n >> >> and managed to work with peer mesh STA equipped with ath9k. >> >> Signed-off-by: Chun-Yeow Yeoh >> --- >> drivers/net/wireless/ath/ath9k/htc_drv_main.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c >> index 689ac99..d3f65a2 100644 >> --- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c >> +++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c >> @@ -1447,7 +1447,8 @@ static int ath9k_htc_set_key(struct ieee80211_hw *hw, >> key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV; >> if (key->cipher == WLAN_CIPHER_SUITE_TKIP) >> key->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC; >> - if (priv->ah->sw_mgmt_crypto && >> + if ((vif->type == NL80211_IFTYPE_MESH_POINT || >> + priv->ah->sw_mgmt_crypto) && >> key->cipher == WLAN_CIPHER_SUITE_CCMP) >> key->flags |= IEEE80211_KEY_FLAG_SW_MGMT_TX; >> ret = 0; >> > > > Hmm.. may be we should generally do it here: > if ((vif->type == NL80211_IFTYPE_ADHOC || > vif->type == NL80211_IFTYPE_MESH_POINT) && > (key->cipher == WLAN_CIPHER_SUITE_TKIP || > key->cipher == WLAN_CIPHER_SUITE_CCMP) && > !(key->flags & IEEE80211_KEY_FLAG_PAIRWISE)) { > Not so sure doing here is correctly. It is a pairwise key for unicast management frame, right? > or probably set "sw_mgmt_crypto = true" in ath9k_hw_init_mfp() for all > usb devices? All ath9k USB devices don't have MFP support? --- ChunYeow