From 3dacd3ece743d938e848813d8935808c260eda2f Mon Sep 17 00:00:00 2001 From: Ashok Kumar Ponnaiah Date: Mon, 9 Jun 2014 19:19:30 +0300 Subject: [PATCH] atheros: Add support for new GCMP/CCMP/CMAC/GMAC cipher suites Extend the set of supported cipher suites to include CCMP-256, GCMP, GCMP-256, CMAC-256, GMAC, and GMAC-256 when ATH_GCM_SUPPORT=y is set in the build configuration. Signed-off-by: Jouni Malinen --- src/drivers/driver_atheros.c | 41 ++++++++++++++++++++++++++++++++++++ src/drivers/drivers.mak | 3 +++ 2 files changed, 44 insertions(+) diff --git a/src/drivers/driver_atheros.c b/src/drivers/driver_atheros.c index c146cdc54..b569a0a7d 100644 --- a/src/drivers/driver_atheros.c +++ b/src/drivers/driver_atheros.c @@ -260,6 +260,17 @@ atheros_configure_wpa(struct atheros_driver_data *drv, case WPA_CIPHER_CCMP: v = IEEE80211_CIPHER_AES_CCM; break; +#ifdef ATH_GCM_SUPPORT + case WPA_CIPHER_CCMP_256: + v = IEEE80211_CIPHER_AES_CCM_256; + break; + case WPA_CIPHER_GCMP: + v = IEEE80211_CIPHER_AES_GCM; + break; + case WPA_CIPHER_GCMP_256: + v = IEEE80211_CIPHER_AES_GCM_256; + break; +#endif /* ATH_GCM_SUPPORT */ case WPA_CIPHER_TKIP: v = IEEE80211_CIPHER_TKIP; break; @@ -294,6 +305,14 @@ atheros_configure_wpa(struct atheros_driver_data *drv, v = 0; if (params->wpa_pairwise & WPA_CIPHER_CCMP) v |= 1<wpa_pairwise & WPA_CIPHER_CCMP_256) + v |= 1<wpa_pairwise & WPA_CIPHER_GCMP) + v |= 1<wpa_pairwise & WPA_CIPHER_GCMP_256) + v |= 1<wpa_pairwise & WPA_CIPHER_TKIP) v |= 1<wpa_pairwise & WPA_CIPHER_NONE) @@ -471,10 +490,32 @@ atheros_set_key(const char *ifname, void *priv, enum wpa_alg alg, case WPA_ALG_CCMP: cipher = IEEE80211_CIPHER_AES_CCM; break; +#ifdef ATH_GCM_SUPPORT + case WPA_ALG_CCMP_256: + cipher = IEEE80211_CIPHER_AES_CCM_256; + break; + case WPA_ALG_GCMP: + cipher = IEEE80211_CIPHER_AES_GCM; + break; + case WPA_ALG_GCMP_256: + cipher = IEEE80211_CIPHER_AES_GCM_256; + break; +#endif /* ATH_GCM_SUPPORT */ #ifdef CONFIG_IEEE80211W case WPA_ALG_IGTK: cipher = IEEE80211_CIPHER_AES_CMAC; break; +#ifdef ATH_GCM_SUPPORT + case WPA_ALG_BIP_CMAC_256: + cipher = IEEE80211_CIPHER_AES_CMAC_256; + break; + case WPA_ALG_BIP_GMAC_128: + cipher = IEEE80211_CIPHER_AES_GMAC; + break; + case WPA_ALG_BIP_GMAC_256: + cipher = IEEE80211_CIPHER_AES_GMAC_256; + break; +#endif /* ATH_GCM_SUPPORT */ #endif /* CONFIG_IEEE80211W */ default: printf("%s: unknown/unsupported algorithm %d\n", diff --git a/src/drivers/drivers.mak b/src/drivers/drivers.mak index 7e175f404..40aaba591 100644 --- a/src/drivers/drivers.mak +++ b/src/drivers/drivers.mak @@ -105,6 +105,9 @@ DRV_AP_OBJS += ../src/drivers/driver_atheros.o CONFIG_L2_PACKET=linux NEED_NETLINK=y NEED_LINUX_IOCTL=y +ifdef ATH_GCM_SUPPORT +CFLAGS += -DATH_GCM_SUPPORT +endif endif ##### PURE CLIENT DRIVERS