diff mbox

[18/32] staging: brcm80211: Fix for WPA GTK install issue in brcmfmac driver

Message ID 1305280792-9475-18-git-send-email-arend@broadcom.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Arend van Spriel May 13, 2011, 9:59 a.m. UTC
From: Sukesh Srikakula <sukeshs@broadcom.com>

Last 16 bytes of the key sent by cfg80211 needs to be swapped before
installing it to FW for TKIP encryption. This is not done for group
key in current code, which is corrected with this fix.

Cc: devel@linuxdriverproject.org
Cc: linux-wireless@vger.kernel.org
Cc: Grant Grundler <grundler@chromium.org>
Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: Brett Rudley <brudley@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

Comments

Grant Grundler May 13, 2011, 3:22 p.m. UTC | #1
On Fri, May 13, 2011 at 2:59 AM, Arend van Spriel <arend@broadcom.com> wrote:
> From: Sukesh Srikakula <sukeshs@broadcom.com>
>
> Last 16 bytes of the key sent by cfg80211 needs to be swapped before
> installing it to FW for TKIP encryption. This is not done for group
> key in current code, which is corrected with this fix.
>
> Cc: devel@linuxdriverproject.org
> Cc: linux-wireless@vger.kernel.org
> Cc: Grant Grundler <grundler@chromium.org>

Thanks Arend+Sukesh for posting this! :)

Tested-by: Grant Grundler <grundler@chromium.org>

Please add the same line for Aaron Plattner <aplattner@nvidia.com>
    http://gerrit.chromium.org/gerrit/502

cheers,
grant

> Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
> Reviewed-by: Brett Rudley <brudley@broadcom.com>
> Signed-off-by: Arend van Spriel <arend@broadcom.com>
> ---
>  drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
> index b44daf9..c60fc7c 100644
> --- a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
> +++ b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
> @@ -1616,6 +1616,7 @@ wl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *dev,
>        s32 val;
>        s32 wsec;
>        s32 err = 0;
> +       u8 keybuf[8];
>
>        WL_DBG("key index (%d)\n", key_idx);
>        CHECK_SYS_UP();
> @@ -1644,6 +1645,9 @@ wl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *dev,
>                WL_DBG("WLAN_CIPHER_SUITE_WEP104\n");
>                break;
>        case WLAN_CIPHER_SUITE_TKIP:
> +               memcpy(keybuf, &key.data[24], sizeof(keybuf));
> +               memcpy(&key.data[24], &key.data[16], sizeof(keybuf));
> +               memcpy(&key.data[16], keybuf, sizeof(keybuf));
>                key.algo = CRYPTO_ALGO_TKIP;
>                WL_DBG("WLAN_CIPHER_SUITE_TKIP\n");
>                break;
> --
> 1.7.4.1
>
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
index b44daf9..c60fc7c 100644
--- a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
+++ b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
@@ -1616,6 +1616,7 @@  wl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *dev,
 	s32 val;
 	s32 wsec;
 	s32 err = 0;
+	u8 keybuf[8];
 
 	WL_DBG("key index (%d)\n", key_idx);
 	CHECK_SYS_UP();
@@ -1644,6 +1645,9 @@  wl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *dev,
 		WL_DBG("WLAN_CIPHER_SUITE_WEP104\n");
 		break;
 	case WLAN_CIPHER_SUITE_TKIP:
+		memcpy(keybuf, &key.data[24], sizeof(keybuf));
+		memcpy(&key.data[24], &key.data[16], sizeof(keybuf));
+		memcpy(&key.data[16], keybuf, sizeof(keybuf));
 		key.algo = CRYPTO_ALGO_TKIP;
 		WL_DBG("WLAN_CIPHER_SUITE_TKIP\n");
 		break;