/* ======================================================================== Routine Description: Delete a cached PMKID. Arguments: pWiphy - Wireless hardware description pNdev - Network device interface pPmksa - PMKID information Return Value: 0 - success -x - fail Note: ======================================================================== */ static int CFG80211_OpsPmksaDel( IN struct wiphy *pWiphy, IN struct net_device *pNdev, IN struct cfg80211_pmksa *pPmksa) { #ifdef CONFIG_STA_SUPPORT struct rtmp_adapter *pAd; RT_CMD_STA_IOCTL_PMA_SA IoctlPmaSa, *pIoctlPmaSa = &IoctlPmaSa; CFG80211DBG(RT_DEBUG_ERROR, ("80211> %s ==>\n", __FUNCTION__)); MAC80211_PAD_GET(pAd, pWiphy); if ((pPmksa->bssid == NULL) || (pPmksa->pmkid == NULL)) return -ENOENT; /* End of if */ pIoctlPmaSa->Cmd = RT_CMD_STA_IOCTL_PMA_SA_REMOVE; memcpy(pIoctlPmaSa->Bssid, pPmksa->bssid, ETH_ALEN);; memcpy(pIoctlPmaSa->Pmkid, pPmksa->pmkid, IW_PMKID_LEN); RTMP_DRIVER_80211_PMKID_CTRL(pAd, pIoctlPmaSa); #endif /* CONFIG_STA_SUPPORT */ return 0; } /* End of CFG80211_OpsPmksaDel */
/* ======================================================================== Routine Description: Cache a PMKID for a BSSID. Arguments: pWiphy - Wireless hardware description pNdev - Network device interface pPmksa - PMKID information Return Value: 0 - success -x - fail Note: This is mostly useful for fullmac devices running firmwares capable of generating the (re) association RSN IE. It allows for faster roaming between WPA2 BSSIDs. ======================================================================== */ static int CFG80211_OpsPmksaSet( IN struct wiphy *pWiphy, IN struct net_device *pNdev, IN struct cfg80211_pmksa *pPmksa) { #ifdef CONFIG_STA_SUPPORT VOID *pAd; RT_CMD_STA_IOCTL_PMA_SA IoctlPmaSa, *pIoctlPmaSa = &IoctlPmaSa; CFG80211DBG(RT_DEBUG_ERROR, ("80211> %s ==>\n", __FUNCTION__)); MAC80211_PAD_GET(pAd, pWiphy); if ((pPmksa->bssid == NULL) || (pPmksa->pmkid == NULL)) return -ENOENT; /* End of if */ pIoctlPmaSa->Cmd = RT_CMD_STA_IOCTL_PMA_SA_ADD; pIoctlPmaSa->pBssid = (UCHAR *)pPmksa->bssid; pIoctlPmaSa->pPmkid = pPmksa->pmkid; RTMP_DRIVER_80211_PMKID_CTRL(pAd, pIoctlPmaSa); #endif /* CONFIG_STA_SUPPORT */ return 0; } /* End of CFG80211_OpsPmksaSet */
/* ======================================================================== Routine Description: Flush a cached PMKID. Arguments: pWiphy - Wireless hardware description pNdev - Network device interface Return Value: 0 - success -x - fail Note: ======================================================================== */ static int CFG80211_OpsPmksaFlush( IN struct wiphy *pWiphy, IN struct net_device *pNdev) { #ifdef CONFIG_STA_SUPPORT struct rtmp_adapter *pAd; RT_CMD_STA_IOCTL_PMA_SA IoctlPmaSa, *pIoctlPmaSa = &IoctlPmaSa; CFG80211DBG(RT_DEBUG_ERROR, ("80211> %s ==>\n", __FUNCTION__)); MAC80211_PAD_GET(pAd, pWiphy); pIoctlPmaSa->Cmd = RT_CMD_STA_IOCTL_PMA_SA_FLUSH; RTMP_DRIVER_80211_PMKID_CTRL(pAd, pIoctlPmaSa); #endif /* CONFIG_STA_SUPPORT */ return 0; } /* End of CFG80211_OpsPmksaFlush */