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 <jouni@qca.qualcomm.com>
This commit is contained in:
Ashok Kumar Ponnaiah 2014-06-09 19:19:30 +03:00 committed by Jouni Malinen
parent d81731e681
commit 3dacd3ece7
2 changed files with 44 additions and 0 deletions

View file

@ -260,6 +260,17 @@ atheros_configure_wpa(struct atheros_driver_data *drv,
case WPA_CIPHER_CCMP: case WPA_CIPHER_CCMP:
v = IEEE80211_CIPHER_AES_CCM; v = IEEE80211_CIPHER_AES_CCM;
break; 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: case WPA_CIPHER_TKIP:
v = IEEE80211_CIPHER_TKIP; v = IEEE80211_CIPHER_TKIP;
break; break;
@ -294,6 +305,14 @@ atheros_configure_wpa(struct atheros_driver_data *drv,
v = 0; v = 0;
if (params->wpa_pairwise & WPA_CIPHER_CCMP) if (params->wpa_pairwise & WPA_CIPHER_CCMP)
v |= 1<<IEEE80211_CIPHER_AES_CCM; v |= 1<<IEEE80211_CIPHER_AES_CCM;
#ifdef ATH_GCM_SUPPORT
if (params->wpa_pairwise & WPA_CIPHER_CCMP_256)
v |= 1<<IEEE80211_CIPHER_AES_CCM_256;
if (params->wpa_pairwise & WPA_CIPHER_GCMP)
v |= 1<<IEEE80211_CIPHER_AES_GCM;
if (params->wpa_pairwise & WPA_CIPHER_GCMP_256)
v |= 1<<IEEE80211_CIPHER_AES_GCM_256;
#endif /* ATH_GCM_SUPPORT */
if (params->wpa_pairwise & WPA_CIPHER_TKIP) if (params->wpa_pairwise & WPA_CIPHER_TKIP)
v |= 1<<IEEE80211_CIPHER_TKIP; v |= 1<<IEEE80211_CIPHER_TKIP;
if (params->wpa_pairwise & WPA_CIPHER_NONE) if (params->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: case WPA_ALG_CCMP:
cipher = IEEE80211_CIPHER_AES_CCM; cipher = IEEE80211_CIPHER_AES_CCM;
break; 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 #ifdef CONFIG_IEEE80211W
case WPA_ALG_IGTK: case WPA_ALG_IGTK:
cipher = IEEE80211_CIPHER_AES_CMAC; cipher = IEEE80211_CIPHER_AES_CMAC;
break; 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 */ #endif /* CONFIG_IEEE80211W */
default: default:
printf("%s: unknown/unsupported algorithm %d\n", printf("%s: unknown/unsupported algorithm %d\n",

View file

@ -105,6 +105,9 @@ DRV_AP_OBJS += ../src/drivers/driver_atheros.o
CONFIG_L2_PACKET=linux CONFIG_L2_PACKET=linux
NEED_NETLINK=y NEED_NETLINK=y
NEED_LINUX_IOCTL=y NEED_LINUX_IOCTL=y
ifdef ATH_GCM_SUPPORT
CFLAGS += -DATH_GCM_SUPPORT
endif
endif endif
##### PURE CLIENT DRIVERS ##### PURE CLIENT DRIVERS