mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
wifi: cfg80211: support key installation on non-netdev wdevs
Currently key installation is only supported for netdev. For NAN, support most key operations (except setting default data key) on wdevs instead of netdevs, and adjust all the APIs and tracing to match. Since nothing currently sets NL80211_EXT_FEATURE_SECURE_NAN, this doesn't change anything (P2P Device already isn't allowed.) Signed-off-by: Avraham Stern <avraham.stern@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20260107150057.69a0cfad95fa.I00efdf3b2c11efab82ef6ece9f393382bcf33ba8@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
committed by
Johannes Berg
parent
94d8657392
commit
7c6084d7fa
@@ -1123,13 +1123,13 @@ void ath6kl_cfg80211_ch_switch_notify(struct ath6kl_vif *vif, int freq,
|
||||
wiphy_unlock(vif->ar->wiphy);
|
||||
}
|
||||
|
||||
static int ath6kl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
static int ath6kl_cfg80211_add_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr,
|
||||
struct key_params *params)
|
||||
{
|
||||
struct ath6kl *ar = ath6kl_priv(ndev);
|
||||
struct ath6kl_vif *vif = netdev_priv(ndev);
|
||||
struct ath6kl *ar = ath6kl_priv(wdev->netdev);
|
||||
struct ath6kl_vif *vif = netdev_priv(wdev->netdev);
|
||||
struct ath6kl_key *key = NULL;
|
||||
int seq_len;
|
||||
u8 key_usage;
|
||||
@@ -1248,12 +1248,12 @@ static int ath6kl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
(u8 *) mac_addr, SYNC_BOTH_WMIFLAG);
|
||||
}
|
||||
|
||||
static int ath6kl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
static int ath6kl_cfg80211_del_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr)
|
||||
{
|
||||
struct ath6kl *ar = ath6kl_priv(ndev);
|
||||
struct ath6kl_vif *vif = netdev_priv(ndev);
|
||||
struct ath6kl *ar = ath6kl_priv(wdev->netdev);
|
||||
struct ath6kl_vif *vif = netdev_priv(wdev->netdev);
|
||||
|
||||
ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "%s: index %d\n", __func__, key_index);
|
||||
|
||||
@@ -1278,13 +1278,13 @@ static int ath6kl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
return ath6kl_wmi_deletekey_cmd(ar->wmi, vif->fw_vif_idx, key_index);
|
||||
}
|
||||
|
||||
static int ath6kl_cfg80211_get_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
static int ath6kl_cfg80211_get_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr, void *cookie,
|
||||
void (*callback) (void *cookie,
|
||||
struct key_params *))
|
||||
{
|
||||
struct ath6kl_vif *vif = netdev_priv(ndev);
|
||||
struct ath6kl_vif *vif = netdev_priv(wdev->netdev);
|
||||
struct ath6kl_key *key = NULL;
|
||||
struct key_params params;
|
||||
|
||||
|
||||
@@ -1619,15 +1619,14 @@ static void wil_del_rx_key(u8 key_index, enum wmi_key_usage key_usage,
|
||||
}
|
||||
|
||||
static int wil_cfg80211_add_key(struct wiphy *wiphy,
|
||||
struct net_device *ndev, int link_id,
|
||||
struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr,
|
||||
struct key_params *params)
|
||||
{
|
||||
int rc;
|
||||
struct wil6210_vif *vif = ndev_to_vif(ndev);
|
||||
struct wil6210_priv *wil = wiphy_to_wil(wiphy);
|
||||
struct wireless_dev *wdev = vif_to_wdev(vif);
|
||||
struct wil6210_vif *vif = wdev_to_vif(wil, wdev);
|
||||
enum wmi_key_usage key_usage = wil_detect_key_usage(wdev, pairwise);
|
||||
struct wil_sta_info *cs = wil_find_sta_by_key_usage(wil, vif->mid,
|
||||
key_usage,
|
||||
@@ -1695,13 +1694,12 @@ static int wil_cfg80211_add_key(struct wiphy *wiphy,
|
||||
}
|
||||
|
||||
static int wil_cfg80211_del_key(struct wiphy *wiphy,
|
||||
struct net_device *ndev, int link_id,
|
||||
struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr)
|
||||
{
|
||||
struct wil6210_vif *vif = ndev_to_vif(ndev);
|
||||
struct wil6210_priv *wil = wiphy_to_wil(wiphy);
|
||||
struct wireless_dev *wdev = vif_to_wdev(vif);
|
||||
struct wil6210_vif *vif = wdev_to_vif(wil, wdev);
|
||||
enum wmi_key_usage key_usage = wil_detect_key_usage(wdev, pairwise);
|
||||
struct wil_sta_info *cs = wil_find_sta_by_key_usage(wil, vif->mid,
|
||||
key_usage,
|
||||
@@ -2071,7 +2069,8 @@ void wil_cfg80211_ap_recovery(struct wil6210_priv *wil)
|
||||
key_params.key = vif->gtk;
|
||||
key_params.key_len = vif->gtk_len;
|
||||
key_params.seq_len = IEEE80211_GCMP_PN_LEN;
|
||||
rc = wil_cfg80211_add_key(wiphy, ndev, -1, vif->gtk_index,
|
||||
rc = wil_cfg80211_add_key(wiphy, vif_to_wdev(vif), -1,
|
||||
vif->gtk_index,
|
||||
false, NULL, &key_params);
|
||||
if (rc)
|
||||
wil_err(wil, "vif %d recovery add key failed (%d)\n",
|
||||
|
||||
@@ -2758,11 +2758,11 @@ done:
|
||||
}
|
||||
|
||||
static s32
|
||||
brcmf_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
brcmf_cfg80211_del_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_idx, bool pairwise,
|
||||
const u8 *mac_addr)
|
||||
{
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
struct brcmf_if *ifp = netdev_priv(wdev->netdev);
|
||||
struct brcmf_wsec_key *key;
|
||||
s32 err;
|
||||
|
||||
@@ -2796,12 +2796,12 @@ brcmf_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
}
|
||||
|
||||
static s32
|
||||
brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
brcmf_cfg80211_add_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_idx, bool pairwise,
|
||||
const u8 *mac_addr, struct key_params *params)
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
struct brcmf_if *ifp = netdev_priv(wdev->netdev);
|
||||
struct brcmf_pub *drvr = cfg->pub;
|
||||
struct brcmf_wsec_key *key;
|
||||
s32 val;
|
||||
@@ -2822,7 +2822,7 @@ brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
}
|
||||
|
||||
if (params->key_len == 0)
|
||||
return brcmf_cfg80211_del_key(wiphy, ndev, -1, key_idx,
|
||||
return brcmf_cfg80211_del_key(wiphy, wdev, -1, key_idx,
|
||||
pairwise, mac_addr);
|
||||
|
||||
if (params->key_len > sizeof(key->data)) {
|
||||
@@ -2918,7 +2918,7 @@ done:
|
||||
}
|
||||
|
||||
static s32
|
||||
brcmf_cfg80211_get_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
brcmf_cfg80211_get_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_idx, bool pairwise,
|
||||
const u8 *mac_addr, void *cookie,
|
||||
void (*callback)(void *cookie,
|
||||
@@ -2926,7 +2926,7 @@ brcmf_cfg80211_get_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct key_params params;
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
struct brcmf_if *ifp = netdev_priv(wdev->netdev);
|
||||
struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
|
||||
struct brcmf_pub *drvr = cfg->pub;
|
||||
struct brcmf_cfg80211_security *sec;
|
||||
@@ -2976,10 +2976,10 @@ done:
|
||||
|
||||
static s32
|
||||
brcmf_cfg80211_config_default_mgmt_key(struct wiphy *wiphy,
|
||||
struct net_device *ndev, int link_id,
|
||||
struct wireless_dev *wdev, int link_id,
|
||||
u8 key_idx)
|
||||
{
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
struct brcmf_if *ifp = netdev_priv(wdev->netdev);
|
||||
|
||||
brcmf_dbg(TRACE, "Enter key_idx %d\n", key_idx);
|
||||
|
||||
|
||||
@@ -1507,7 +1507,7 @@ static int lbs_cfg_set_default_key(struct wiphy *wiphy,
|
||||
}
|
||||
|
||||
|
||||
static int lbs_cfg_add_key(struct wiphy *wiphy, struct net_device *netdev,
|
||||
static int lbs_cfg_add_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 idx, bool pairwise,
|
||||
const u8 *mac_addr, struct key_params *params)
|
||||
{
|
||||
@@ -1516,7 +1516,7 @@ static int lbs_cfg_add_key(struct wiphy *wiphy, struct net_device *netdev,
|
||||
u16 key_type;
|
||||
int ret = 0;
|
||||
|
||||
if (netdev == priv->mesh_dev)
|
||||
if (wdev->netdev == priv->mesh_dev)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
lbs_deb_assoc("add_key: cipher 0x%x, mac_addr %pM\n",
|
||||
@@ -1568,7 +1568,7 @@ static int lbs_cfg_add_key(struct wiphy *wiphy, struct net_device *netdev,
|
||||
}
|
||||
|
||||
|
||||
static int lbs_cfg_del_key(struct wiphy *wiphy, struct net_device *netdev,
|
||||
static int lbs_cfg_del_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr)
|
||||
{
|
||||
|
||||
@@ -141,11 +141,11 @@ static void *mwifiex_cfg80211_get_adapter(struct wiphy *wiphy)
|
||||
* CFG802.11 operation handler to delete a network key.
|
||||
*/
|
||||
static int
|
||||
mwifiex_cfg80211_del_key(struct wiphy *wiphy, struct net_device *netdev,
|
||||
mwifiex_cfg80211_del_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr)
|
||||
{
|
||||
struct mwifiex_private *priv = mwifiex_netdev_get_priv(netdev);
|
||||
struct mwifiex_private *priv = mwifiex_netdev_get_priv(wdev->netdev);
|
||||
static const u8 bc_mac[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
|
||||
const u8 *peer_mac = pairwise ? mac_addr : bc_mac;
|
||||
|
||||
@@ -480,11 +480,11 @@ mwifiex_cfg80211_set_default_key(struct wiphy *wiphy, struct net_device *netdev,
|
||||
* CFG802.11 operation handler to add a network key.
|
||||
*/
|
||||
static int
|
||||
mwifiex_cfg80211_add_key(struct wiphy *wiphy, struct net_device *netdev,
|
||||
mwifiex_cfg80211_add_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr, struct key_params *params)
|
||||
{
|
||||
struct mwifiex_private *priv = mwifiex_netdev_get_priv(netdev);
|
||||
struct mwifiex_private *priv = mwifiex_netdev_get_priv(wdev->netdev);
|
||||
struct mwifiex_wep_key *wep_key;
|
||||
static const u8 bc_mac[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
|
||||
const u8 *peer_mac = pairwise ? mac_addr : bc_mac;
|
||||
@@ -518,11 +518,11 @@ mwifiex_cfg80211_add_key(struct wiphy *wiphy, struct net_device *netdev,
|
||||
*/
|
||||
static int
|
||||
mwifiex_cfg80211_set_default_mgmt_key(struct wiphy *wiphy,
|
||||
struct net_device *netdev,
|
||||
struct wireless_dev *wdev,
|
||||
int link_id,
|
||||
u8 key_index)
|
||||
{
|
||||
struct mwifiex_private *priv = mwifiex_netdev_get_priv(netdev);
|
||||
struct mwifiex_private *priv = mwifiex_netdev_get_priv(wdev->netdev);
|
||||
struct mwifiex_ds_encrypt_key encrypt_key;
|
||||
|
||||
wiphy_dbg(wiphy, "set default mgmt key, key index=%d\n", key_index);
|
||||
|
||||
@@ -534,7 +534,7 @@ static int wilc_wfi_cfg_copy_wpa_info(struct wilc_wfi_key *key_info,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int add_key(struct wiphy *wiphy, struct net_device *netdev, int link_id,
|
||||
static int add_key(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index, bool pairwise, const u8 *mac_addr,
|
||||
struct key_params *params)
|
||||
|
||||
@@ -544,7 +544,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, int link_id,
|
||||
const u8 *tx_mic = NULL;
|
||||
u8 mode = WILC_FW_SEC_NO;
|
||||
u8 op_mode;
|
||||
struct wilc_vif *vif = netdev_priv(netdev);
|
||||
struct wilc_vif *vif = netdev_priv(wdev->netdev);
|
||||
struct wilc_priv *priv = &vif->priv;
|
||||
struct wilc_wfi_key *key;
|
||||
|
||||
@@ -632,19 +632,19 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, int link_id,
|
||||
break;
|
||||
|
||||
default:
|
||||
netdev_err(netdev, "%s: Unsupported cipher\n", __func__);
|
||||
netdev_err(wdev->netdev, "%s: Unsupported cipher\n", __func__);
|
||||
ret = -ENOTSUPP;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int del_key(struct wiphy *wiphy, struct net_device *netdev, int link_id,
|
||||
static int del_key(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index,
|
||||
bool pairwise,
|
||||
const u8 *mac_addr)
|
||||
{
|
||||
struct wilc_vif *vif = netdev_priv(netdev);
|
||||
struct wilc_vif *vif = netdev_priv(wdev->netdev);
|
||||
struct wilc_priv *priv = &vif->priv;
|
||||
|
||||
if (!pairwise && (key_index == 4 || key_index == 5)) {
|
||||
@@ -680,12 +680,12 @@ static int del_key(struct wiphy *wiphy, struct net_device *netdev, int link_id,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int get_key(struct wiphy *wiphy, struct net_device *netdev, int link_id,
|
||||
static int get_key(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index, bool pairwise, const u8 *mac_addr,
|
||||
void *cookie,
|
||||
void (*callback)(void *cookie, struct key_params *))
|
||||
{
|
||||
struct wilc_vif *vif = netdev_priv(netdev);
|
||||
struct wilc_vif *vif = netdev_priv(wdev->netdev);
|
||||
struct wilc_priv *priv = &vif->priv;
|
||||
struct key_params key_params;
|
||||
|
||||
@@ -725,10 +725,10 @@ static int set_default_key(struct wiphy *wiphy, struct net_device *netdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int set_default_mgmt_key(struct wiphy *wiphy, struct net_device *netdev,
|
||||
static int set_default_mgmt_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index)
|
||||
{
|
||||
struct wilc_vif *vif = netdev_priv(netdev);
|
||||
struct wilc_vif *vif = netdev_priv(wdev->netdev);
|
||||
|
||||
return wilc_set_default_mgmt_key_index(vif, key_index);
|
||||
}
|
||||
|
||||
@@ -532,11 +532,11 @@ qtnf_dump_station(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int qtnf_add_key(struct wiphy *wiphy, struct net_device *dev,
|
||||
static int qtnf_add_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr, struct key_params *params)
|
||||
{
|
||||
struct qtnf_vif *vif = qtnf_netdev_get_priv(dev);
|
||||
struct qtnf_vif *vif = qtnf_netdev_get_priv(wdev->netdev);
|
||||
int ret;
|
||||
|
||||
ret = qtnf_cmd_send_add_key(vif, key_index, pairwise, mac_addr, params);
|
||||
@@ -548,11 +548,11 @@ static int qtnf_add_key(struct wiphy *wiphy, struct net_device *dev,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int qtnf_del_key(struct wiphy *wiphy, struct net_device *dev,
|
||||
static int qtnf_del_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr)
|
||||
{
|
||||
struct qtnf_vif *vif = qtnf_netdev_get_priv(dev);
|
||||
struct qtnf_vif *vif = qtnf_netdev_get_priv(wdev->netdev);
|
||||
int ret;
|
||||
|
||||
ret = qtnf_cmd_send_del_key(vif, key_index, pairwise, mac_addr);
|
||||
@@ -587,10 +587,10 @@ static int qtnf_set_default_key(struct wiphy *wiphy, struct net_device *dev,
|
||||
}
|
||||
|
||||
static int
|
||||
qtnf_set_default_mgmt_key(struct wiphy *wiphy, struct net_device *dev,
|
||||
qtnf_set_default_mgmt_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index)
|
||||
{
|
||||
struct qtnf_vif *vif = qtnf_netdev_get_priv(dev);
|
||||
struct qtnf_vif *vif = qtnf_netdev_get_priv(wdev->netdev);
|
||||
int ret;
|
||||
|
||||
ret = qtnf_cmd_send_set_default_mgmt_key(vif, key_index);
|
||||
|
||||
@@ -831,7 +831,7 @@ exit:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr, struct key_params *params)
|
||||
{
|
||||
@@ -839,6 +839,7 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
u32 param_len;
|
||||
struct ieee_param *param = NULL;
|
||||
int ret = 0;
|
||||
struct net_device *ndev = wdev->netdev;
|
||||
struct adapter *padapter = rtw_netdev_priv(ndev);
|
||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||
|
||||
@@ -909,7 +910,7 @@ addkey_end:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int cfg80211_rtw_get_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
static int cfg80211_rtw_get_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr, void *cookie,
|
||||
void (*callback)(void *cookie,
|
||||
@@ -918,11 +919,11 @@ static int cfg80211_rtw_get_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cfg80211_rtw_del_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
static int cfg80211_rtw_del_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr)
|
||||
{
|
||||
struct adapter *padapter = rtw_netdev_priv(ndev);
|
||||
struct adapter *padapter = rtw_netdev_priv(wdev->netdev);
|
||||
struct security_priv *psecuritypriv = &padapter->securitypriv;
|
||||
|
||||
if (key_index == psecuritypriv->dot11PrivacyKeyIndex) {
|
||||
|
||||
@@ -4924,24 +4924,24 @@ struct cfg80211_ops {
|
||||
struct wireless_dev *wdev,
|
||||
unsigned int link_id);
|
||||
|
||||
int (*add_key)(struct wiphy *wiphy, struct net_device *netdev,
|
||||
int (*add_key)(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr, struct key_params *params);
|
||||
int (*get_key)(struct wiphy *wiphy, struct net_device *netdev,
|
||||
int (*get_key)(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr, void *cookie,
|
||||
void (*callback)(void *cookie, struct key_params*));
|
||||
int (*del_key)(struct wiphy *wiphy, struct net_device *netdev,
|
||||
int (*del_key)(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr);
|
||||
int (*set_default_key)(struct wiphy *wiphy,
|
||||
struct net_device *netdev, int link_id,
|
||||
u8 key_index, bool unicast, bool multicast);
|
||||
int (*set_default_mgmt_key)(struct wiphy *wiphy,
|
||||
struct net_device *netdev, int link_id,
|
||||
struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index);
|
||||
int (*set_default_beacon_key)(struct wiphy *wiphy,
|
||||
struct net_device *netdev,
|
||||
struct wireless_dev *wdev,
|
||||
int link_id,
|
||||
u8 key_index);
|
||||
|
||||
|
||||
+10
-10
@@ -608,11 +608,11 @@ static int ieee80211_set_tx(struct ieee80211_sub_if_data *sdata,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ieee80211_add_key(struct wiphy *wiphy, struct net_device *dev,
|
||||
static int ieee80211_add_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_idx, bool pairwise,
|
||||
const u8 *mac_addr, struct key_params *params)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
|
||||
struct ieee80211_link_data *link =
|
||||
ieee80211_link_or_deflink(sdata, link_id, false);
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
@@ -790,11 +790,11 @@ ieee80211_lookup_key(struct ieee80211_sub_if_data *sdata, int link_id,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int ieee80211_del_key(struct wiphy *wiphy, struct net_device *dev,
|
||||
static int ieee80211_del_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_idx, bool pairwise,
|
||||
const u8 *mac_addr)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
struct ieee80211_key *key;
|
||||
|
||||
@@ -809,7 +809,7 @@ static int ieee80211_del_key(struct wiphy *wiphy, struct net_device *dev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ieee80211_get_key(struct wiphy *wiphy, struct net_device *dev,
|
||||
static int ieee80211_get_key(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_idx, bool pairwise,
|
||||
const u8 *mac_addr, void *cookie,
|
||||
void (*callback)(void *cookie,
|
||||
@@ -825,7 +825,7 @@ static int ieee80211_get_key(struct wiphy *wiphy, struct net_device *dev,
|
||||
int err = -ENOENT;
|
||||
struct ieee80211_key_seq kseq = {};
|
||||
|
||||
sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
@@ -929,10 +929,10 @@ static int ieee80211_config_default_key(struct wiphy *wiphy,
|
||||
}
|
||||
|
||||
static int ieee80211_config_default_mgmt_key(struct wiphy *wiphy,
|
||||
struct net_device *dev,
|
||||
struct wireless_dev *wdev,
|
||||
int link_id, u8 key_idx)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
|
||||
struct ieee80211_link_data *link =
|
||||
ieee80211_link_or_deflink(sdata, link_id, true);
|
||||
|
||||
@@ -945,10 +945,10 @@ static int ieee80211_config_default_mgmt_key(struct wiphy *wiphy,
|
||||
}
|
||||
|
||||
static int ieee80211_config_default_beacon_key(struct wiphy *wiphy,
|
||||
struct net_device *dev,
|
||||
struct wireless_dev *wdev,
|
||||
int link_id, u8 key_idx)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
|
||||
struct ieee80211_link_data *link =
|
||||
ieee80211_link_or_deflink(sdata, link_id, true);
|
||||
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
* Some IBSS support code for cfg80211.
|
||||
*
|
||||
* Copyright 2009 Johannes Berg <johannes@sipsolutions.net>
|
||||
* Copyright (C) 2020-2024 Intel Corporation
|
||||
* Copyright (C) 2020-2026 Intel Corporation
|
||||
*/
|
||||
|
||||
#include <linux/etherdevice.h>
|
||||
@@ -172,7 +172,7 @@ void cfg80211_clear_ibss(struct net_device *dev, bool nowext)
|
||||
*/
|
||||
if (rdev->ops->del_key)
|
||||
for (i = 0; i < 6; i++)
|
||||
rdev_del_key(rdev, dev, -1, i, false, NULL);
|
||||
rdev_del_key(rdev, wdev, -1, i, false, NULL);
|
||||
|
||||
if (wdev->u.ibss.current_bss) {
|
||||
cfg80211_unhold_bss(wdev->u.ibss.current_bss);
|
||||
|
||||
+26
-20
@@ -4960,7 +4960,7 @@ static int nl80211_get_key(struct sk_buff *skb, struct genl_info *info)
|
||||
{
|
||||
struct cfg80211_registered_device *rdev = info->user_ptr[0];
|
||||
int err;
|
||||
struct net_device *dev = info->user_ptr[1];
|
||||
struct wireless_dev *wdev = info->user_ptr[1];
|
||||
u8 key_idx = 0;
|
||||
const u8 *mac_addr = NULL;
|
||||
bool pairwise;
|
||||
@@ -4971,7 +4971,6 @@ static int nl80211_get_key(struct sk_buff *skb, struct genl_info *info)
|
||||
struct sk_buff *msg;
|
||||
bool bigtk_support = false;
|
||||
int link_id = nl80211_link_id_or_invalid(info->attrs);
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
|
||||
if (wiphy_ext_feature_isset(&rdev->wiphy,
|
||||
NL80211_EXT_FEATURE_BEACON_PROTECTION))
|
||||
@@ -5023,7 +5022,10 @@ static int nl80211_get_key(struct sk_buff *skb, struct genl_info *info)
|
||||
cookie.msg = msg;
|
||||
cookie.idx = key_idx;
|
||||
|
||||
if (nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) ||
|
||||
if ((wdev->netdev &&
|
||||
nla_put_u32(msg, NL80211_ATTR_IFINDEX, wdev->netdev->ifindex)) ||
|
||||
nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
|
||||
NL80211_ATTR_PAD) ||
|
||||
nla_put_u8(msg, NL80211_ATTR_KEY_IDX, key_idx))
|
||||
goto nla_put_failure;
|
||||
if (mac_addr &&
|
||||
@@ -5034,7 +5036,7 @@ static int nl80211_get_key(struct sk_buff *skb, struct genl_info *info)
|
||||
if (err)
|
||||
goto free_msg;
|
||||
|
||||
err = rdev_get_key(rdev, dev, link_id, key_idx, pairwise, mac_addr,
|
||||
err = rdev_get_key(rdev, wdev, link_id, key_idx, pairwise, mac_addr,
|
||||
&cookie, get_key_callback);
|
||||
|
||||
if (err)
|
||||
@@ -5058,9 +5060,8 @@ static int nl80211_set_key(struct sk_buff *skb, struct genl_info *info)
|
||||
struct cfg80211_registered_device *rdev = info->user_ptr[0];
|
||||
struct key_parse key;
|
||||
int err;
|
||||
struct net_device *dev = info->user_ptr[1];
|
||||
struct wireless_dev *wdev = info->user_ptr[1];
|
||||
int link_id = nl80211_link_id_or_invalid(info->attrs);
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
|
||||
err = nl80211_parse_key(info, &key);
|
||||
if (err)
|
||||
@@ -5080,6 +5081,9 @@ static int nl80211_set_key(struct sk_buff *skb, struct genl_info *info)
|
||||
if (!rdev->ops->set_default_key)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (!wdev->netdev)
|
||||
return -EINVAL;
|
||||
|
||||
err = nl80211_key_allowed(wdev);
|
||||
if (err)
|
||||
return err;
|
||||
@@ -5088,7 +5092,7 @@ static int nl80211_set_key(struct sk_buff *skb, struct genl_info *info)
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = rdev_set_default_key(rdev, dev, link_id, key.idx,
|
||||
err = rdev_set_default_key(rdev, wdev->netdev, link_id, key.idx,
|
||||
key.def_uni, key.def_multi);
|
||||
|
||||
if (err)
|
||||
@@ -5113,7 +5117,7 @@ static int nl80211_set_key(struct sk_buff *skb, struct genl_info *info)
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = rdev_set_default_mgmt_key(rdev, dev, link_id, key.idx);
|
||||
err = rdev_set_default_mgmt_key(rdev, wdev, link_id, key.idx);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@@ -5136,7 +5140,8 @@ static int nl80211_set_key(struct sk_buff *skb, struct genl_info *info)
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
return rdev_set_default_beacon_key(rdev, dev, link_id, key.idx);
|
||||
return rdev_set_default_beacon_key(rdev, wdev, link_id,
|
||||
key.idx);
|
||||
} else if (key.p.mode == NL80211_KEY_SET_TX &&
|
||||
wiphy_ext_feature_isset(&rdev->wiphy,
|
||||
NL80211_EXT_FEATURE_EXT_KEY_ID)) {
|
||||
@@ -5152,7 +5157,7 @@ static int nl80211_set_key(struct sk_buff *skb, struct genl_info *info)
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
return rdev_add_key(rdev, dev, link_id, key.idx,
|
||||
return rdev_add_key(rdev, wdev, link_id, key.idx,
|
||||
NL80211_KEYTYPE_PAIRWISE,
|
||||
mac_addr, &key.p);
|
||||
}
|
||||
@@ -5164,11 +5169,10 @@ static int nl80211_new_key(struct sk_buff *skb, struct genl_info *info)
|
||||
{
|
||||
struct cfg80211_registered_device *rdev = info->user_ptr[0];
|
||||
int err;
|
||||
struct net_device *dev = info->user_ptr[1];
|
||||
struct wireless_dev *wdev = info->user_ptr[1];
|
||||
struct key_parse key;
|
||||
const u8 *mac_addr = NULL;
|
||||
int link_id = nl80211_link_id_or_invalid(info->attrs);
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
|
||||
err = nl80211_parse_key(info, &key);
|
||||
if (err)
|
||||
@@ -5219,7 +5223,7 @@ static int nl80211_new_key(struct sk_buff *skb, struct genl_info *info)
|
||||
key.type == NL80211_KEYTYPE_PAIRWISE);
|
||||
|
||||
if (!err) {
|
||||
err = rdev_add_key(rdev, dev, link_id, key.idx,
|
||||
err = rdev_add_key(rdev, wdev, link_id, key.idx,
|
||||
key.type == NL80211_KEYTYPE_PAIRWISE,
|
||||
mac_addr, &key.p);
|
||||
if (err)
|
||||
@@ -5233,11 +5237,10 @@ static int nl80211_del_key(struct sk_buff *skb, struct genl_info *info)
|
||||
{
|
||||
struct cfg80211_registered_device *rdev = info->user_ptr[0];
|
||||
int err;
|
||||
struct net_device *dev = info->user_ptr[1];
|
||||
struct wireless_dev *wdev = info->user_ptr[1];
|
||||
u8 *mac_addr = NULL;
|
||||
struct key_parse key;
|
||||
int link_id = nl80211_link_id_or_invalid(info->attrs);
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
|
||||
err = nl80211_parse_key(info, &key);
|
||||
if (err)
|
||||
@@ -5276,7 +5279,7 @@ static int nl80211_del_key(struct sk_buff *skb, struct genl_info *info)
|
||||
key.type == NL80211_KEYTYPE_PAIRWISE);
|
||||
|
||||
if (!err)
|
||||
err = rdev_del_key(rdev, dev, link_id, key.idx,
|
||||
err = rdev_del_key(rdev, wdev, link_id, key.idx,
|
||||
key.type == NL80211_KEYTYPE_PAIRWISE,
|
||||
mac_addr);
|
||||
|
||||
@@ -18071,6 +18074,9 @@ nl80211_epcs_cfg(struct sk_buff *skb, struct genl_info *info)
|
||||
NL80211_FLAG_CLEAR_SKB) \
|
||||
SELECTOR(__sel, WDEV_UP, \
|
||||
NL80211_FLAG_NEED_WDEV_UP) \
|
||||
SELECTOR(__sel, WDEV_UP_CLEAR, \
|
||||
NL80211_FLAG_NEED_WDEV_UP | \
|
||||
NL80211_FLAG_CLEAR_SKB) \
|
||||
SELECTOR(__sel, WDEV_UP_LINK, \
|
||||
NL80211_FLAG_NEED_WDEV_UP | \
|
||||
NL80211_FLAG_MLO_VALID_LINK_ID) \
|
||||
@@ -18403,7 +18409,7 @@ static const struct genl_small_ops nl80211_small_ops[] = {
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = nl80211_get_key,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
.internal_flags = IFLAGS(NL80211_FLAG_NEED_NETDEV_UP),
|
||||
.internal_flags = IFLAGS(NL80211_FLAG_NEED_WDEV_UP),
|
||||
},
|
||||
{
|
||||
.cmd = NL80211_CMD_SET_KEY,
|
||||
@@ -18411,7 +18417,7 @@ static const struct genl_small_ops nl80211_small_ops[] = {
|
||||
.doit = nl80211_set_key,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
/* cannot use NL80211_FLAG_MLO_VALID_LINK_ID, depends on key */
|
||||
.internal_flags = IFLAGS(NL80211_FLAG_NEED_NETDEV_UP |
|
||||
.internal_flags = IFLAGS(NL80211_FLAG_NEED_WDEV_UP |
|
||||
NL80211_FLAG_CLEAR_SKB),
|
||||
},
|
||||
{
|
||||
@@ -18419,7 +18425,7 @@ static const struct genl_small_ops nl80211_small_ops[] = {
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = nl80211_new_key,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
.internal_flags = IFLAGS(NL80211_FLAG_NEED_NETDEV_UP |
|
||||
.internal_flags = IFLAGS(NL80211_FLAG_NEED_WDEV_UP |
|
||||
NL80211_FLAG_CLEAR_SKB),
|
||||
},
|
||||
{
|
||||
@@ -18427,7 +18433,7 @@ static const struct genl_small_ops nl80211_small_ops[] = {
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = nl80211_del_key,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
.internal_flags = IFLAGS(NL80211_FLAG_NEED_NETDEV_UP),
|
||||
.internal_flags = IFLAGS(NL80211_FLAG_NEED_WDEV_UP),
|
||||
},
|
||||
{
|
||||
.cmd = NL80211_CMD_SET_BEACON,
|
||||
|
||||
+16
-16
@@ -2,7 +2,7 @@
|
||||
/*
|
||||
* Portions of this file
|
||||
* Copyright(c) 2016-2017 Intel Deutschland GmbH
|
||||
* Copyright (C) 2018, 2021-2025 Intel Corporation
|
||||
* Copyright (C) 2018, 2021-2026 Intel Corporation
|
||||
*/
|
||||
#ifndef __CFG80211_RDEV_OPS
|
||||
#define __CFG80211_RDEV_OPS
|
||||
@@ -77,42 +77,42 @@ rdev_change_virtual_intf(struct cfg80211_registered_device *rdev,
|
||||
}
|
||||
|
||||
static inline int rdev_add_key(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, int link_id,
|
||||
struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index, bool pairwise, const u8 *mac_addr,
|
||||
struct key_params *params)
|
||||
{
|
||||
int ret;
|
||||
trace_rdev_add_key(&rdev->wiphy, netdev, link_id, key_index, pairwise,
|
||||
trace_rdev_add_key(&rdev->wiphy, wdev, link_id, key_index, pairwise,
|
||||
mac_addr, params->mode);
|
||||
ret = rdev->ops->add_key(&rdev->wiphy, netdev, link_id, key_index,
|
||||
ret = rdev->ops->add_key(&rdev->wiphy, wdev, link_id, key_index,
|
||||
pairwise, mac_addr, params);
|
||||
trace_rdev_return_int(&rdev->wiphy, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int
|
||||
rdev_get_key(struct cfg80211_registered_device *rdev, struct net_device *netdev,
|
||||
rdev_get_key(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev,
|
||||
int link_id, u8 key_index, bool pairwise, const u8 *mac_addr,
|
||||
void *cookie,
|
||||
void (*callback)(void *cookie, struct key_params*))
|
||||
{
|
||||
int ret;
|
||||
trace_rdev_get_key(&rdev->wiphy, netdev, link_id, key_index, pairwise,
|
||||
trace_rdev_get_key(&rdev->wiphy, wdev, link_id, key_index, pairwise,
|
||||
mac_addr);
|
||||
ret = rdev->ops->get_key(&rdev->wiphy, netdev, link_id, key_index,
|
||||
ret = rdev->ops->get_key(&rdev->wiphy, wdev, link_id, key_index,
|
||||
pairwise, mac_addr, cookie, callback);
|
||||
trace_rdev_return_int(&rdev->wiphy, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int rdev_del_key(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, int link_id,
|
||||
struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index, bool pairwise, const u8 *mac_addr)
|
||||
{
|
||||
int ret;
|
||||
trace_rdev_del_key(&rdev->wiphy, netdev, link_id, key_index, pairwise,
|
||||
trace_rdev_del_key(&rdev->wiphy, wdev, link_id, key_index, pairwise,
|
||||
mac_addr);
|
||||
ret = rdev->ops->del_key(&rdev->wiphy, netdev, link_id, key_index,
|
||||
ret = rdev->ops->del_key(&rdev->wiphy, wdev, link_id, key_index,
|
||||
pairwise, mac_addr);
|
||||
trace_rdev_return_int(&rdev->wiphy, ret);
|
||||
return ret;
|
||||
@@ -134,12 +134,12 @@ rdev_set_default_key(struct cfg80211_registered_device *rdev,
|
||||
|
||||
static inline int
|
||||
rdev_set_default_mgmt_key(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, int link_id, u8 key_index)
|
||||
struct wireless_dev *wdev, int link_id, u8 key_index)
|
||||
{
|
||||
int ret;
|
||||
trace_rdev_set_default_mgmt_key(&rdev->wiphy, netdev, link_id,
|
||||
trace_rdev_set_default_mgmt_key(&rdev->wiphy, wdev, link_id,
|
||||
key_index);
|
||||
ret = rdev->ops->set_default_mgmt_key(&rdev->wiphy, netdev, link_id,
|
||||
ret = rdev->ops->set_default_mgmt_key(&rdev->wiphy, wdev, link_id,
|
||||
key_index);
|
||||
trace_rdev_return_int(&rdev->wiphy, ret);
|
||||
return ret;
|
||||
@@ -147,14 +147,14 @@ rdev_set_default_mgmt_key(struct cfg80211_registered_device *rdev,
|
||||
|
||||
static inline int
|
||||
rdev_set_default_beacon_key(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, int link_id,
|
||||
struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index)
|
||||
{
|
||||
int ret;
|
||||
|
||||
trace_rdev_set_default_beacon_key(&rdev->wiphy, netdev, link_id,
|
||||
trace_rdev_set_default_beacon_key(&rdev->wiphy, wdev, link_id,
|
||||
key_index);
|
||||
ret = rdev->ops->set_default_beacon_key(&rdev->wiphy, netdev, link_id,
|
||||
ret = rdev->ops->set_default_beacon_key(&rdev->wiphy, wdev, link_id,
|
||||
key_index);
|
||||
trace_rdev_return_int(&rdev->wiphy, ret);
|
||||
return ret;
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
* (for nl80211's connect() and wext)
|
||||
*
|
||||
* Copyright 2009 Johannes Berg <johannes@sipsolutions.net>
|
||||
* Copyright (C) 2009, 2020, 2022-2025 Intel Corporation. All rights reserved.
|
||||
* Copyright (C) 2009, 2020, 2022-2026 Intel Corporation. All rights reserved.
|
||||
* Copyright 2017 Intel Deutschland GmbH
|
||||
*/
|
||||
|
||||
@@ -1386,7 +1386,7 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie,
|
||||
NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT))
|
||||
max_key_idx = 7;
|
||||
for (i = 0; i <= max_key_idx; i++)
|
||||
rdev_del_key(rdev, dev, -1, i, false, NULL);
|
||||
rdev_del_key(rdev, wdev, -1, i, false, NULL);
|
||||
}
|
||||
|
||||
rdev_set_qos_map(rdev, dev, NULL);
|
||||
|
||||
+31
-31
@@ -2,7 +2,7 @@
|
||||
/*
|
||||
* Portions of this file
|
||||
* Copyright(c) 2016-2017 Intel Deutschland GmbH
|
||||
* Copyright (C) 2018, 2020-2025 Intel Corporation
|
||||
* Copyright (C) 2018, 2020-2026 Intel Corporation
|
||||
*/
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM cfg80211
|
||||
@@ -546,12 +546,12 @@ TRACE_EVENT(rdev_change_virtual_intf,
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(key_handle,
|
||||
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, int link_id,
|
||||
TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index, bool pairwise, const u8 *mac_addr),
|
||||
TP_ARGS(wiphy, netdev, link_id, key_index, pairwise, mac_addr),
|
||||
TP_ARGS(wiphy, wdev, link_id, key_index, pairwise, mac_addr),
|
||||
TP_STRUCT__entry(
|
||||
WIPHY_ENTRY
|
||||
NETDEV_ENTRY
|
||||
WDEV_ENTRY
|
||||
MAC_ENTRY(mac_addr)
|
||||
__field(int, link_id)
|
||||
__field(u8, key_index)
|
||||
@@ -559,38 +559,38 @@ DECLARE_EVENT_CLASS(key_handle,
|
||||
),
|
||||
TP_fast_assign(
|
||||
WIPHY_ASSIGN;
|
||||
NETDEV_ASSIGN;
|
||||
WDEV_ASSIGN;
|
||||
MAC_ASSIGN(mac_addr, mac_addr);
|
||||
__entry->link_id = link_id;
|
||||
__entry->key_index = key_index;
|
||||
__entry->pairwise = pairwise;
|
||||
),
|
||||
TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", link_id: %d, "
|
||||
TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", link_id: %d, "
|
||||
"key_index: %u, pairwise: %s, mac addr: %pM",
|
||||
WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->link_id,
|
||||
WIPHY_PR_ARG, WDEV_PR_ARG, __entry->link_id,
|
||||
__entry->key_index, BOOL_TO_STR(__entry->pairwise),
|
||||
__entry->mac_addr)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(key_handle, rdev_get_key,
|
||||
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, int link_id,
|
||||
TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index, bool pairwise, const u8 *mac_addr),
|
||||
TP_ARGS(wiphy, netdev, link_id, key_index, pairwise, mac_addr)
|
||||
TP_ARGS(wiphy, wdev, link_id, key_index, pairwise, mac_addr)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(key_handle, rdev_del_key,
|
||||
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, int link_id,
|
||||
TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index, bool pairwise, const u8 *mac_addr),
|
||||
TP_ARGS(wiphy, netdev, link_id, key_index, pairwise, mac_addr)
|
||||
TP_ARGS(wiphy, wdev, link_id, key_index, pairwise, mac_addr)
|
||||
);
|
||||
|
||||
TRACE_EVENT(rdev_add_key,
|
||||
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, int link_id,
|
||||
TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index, bool pairwise, const u8 *mac_addr, u8 mode),
|
||||
TP_ARGS(wiphy, netdev, link_id, key_index, pairwise, mac_addr, mode),
|
||||
TP_ARGS(wiphy, wdev, link_id, key_index, pairwise, mac_addr, mode),
|
||||
TP_STRUCT__entry(
|
||||
WIPHY_ENTRY
|
||||
NETDEV_ENTRY
|
||||
WDEV_ENTRY
|
||||
MAC_ENTRY(mac_addr)
|
||||
__field(int, link_id)
|
||||
__field(u8, key_index)
|
||||
@@ -599,17 +599,17 @@ TRACE_EVENT(rdev_add_key,
|
||||
),
|
||||
TP_fast_assign(
|
||||
WIPHY_ASSIGN;
|
||||
NETDEV_ASSIGN;
|
||||
WDEV_ASSIGN;
|
||||
MAC_ASSIGN(mac_addr, mac_addr);
|
||||
__entry->link_id = link_id;
|
||||
__entry->key_index = key_index;
|
||||
__entry->pairwise = pairwise;
|
||||
__entry->mode = mode;
|
||||
),
|
||||
TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", link_id: %d, "
|
||||
TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", link_id: %d, "
|
||||
"key_index: %u, mode: %u, pairwise: %s, "
|
||||
"mac addr: %pM",
|
||||
WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->link_id,
|
||||
WIPHY_PR_ARG, WDEV_PR_ARG, __entry->link_id,
|
||||
__entry->key_index, __entry->mode,
|
||||
BOOL_TO_STR(__entry->pairwise), __entry->mac_addr)
|
||||
);
|
||||
@@ -642,45 +642,45 @@ TRACE_EVENT(rdev_set_default_key,
|
||||
);
|
||||
|
||||
TRACE_EVENT(rdev_set_default_mgmt_key,
|
||||
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, int link_id,
|
||||
TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index),
|
||||
TP_ARGS(wiphy, netdev, link_id, key_index),
|
||||
TP_ARGS(wiphy, wdev, link_id, key_index),
|
||||
TP_STRUCT__entry(
|
||||
WIPHY_ENTRY
|
||||
NETDEV_ENTRY
|
||||
WDEV_ENTRY
|
||||
__field(int, link_id)
|
||||
__field(u8, key_index)
|
||||
),
|
||||
TP_fast_assign(
|
||||
WIPHY_ASSIGN;
|
||||
NETDEV_ASSIGN;
|
||||
WDEV_ASSIGN;
|
||||
__entry->link_id = link_id;
|
||||
__entry->key_index = key_index;
|
||||
),
|
||||
TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", link_id: %d, "
|
||||
"key index: %u", WIPHY_PR_ARG, NETDEV_PR_ARG,
|
||||
__entry->link_id, __entry->key_index)
|
||||
TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", link_id: %d, key index: %u",
|
||||
WIPHY_PR_ARG, WDEV_PR_ARG, __entry->link_id,
|
||||
__entry->key_index)
|
||||
);
|
||||
|
||||
TRACE_EVENT(rdev_set_default_beacon_key,
|
||||
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, int link_id,
|
||||
TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id,
|
||||
u8 key_index),
|
||||
TP_ARGS(wiphy, netdev, link_id, key_index),
|
||||
TP_ARGS(wiphy, wdev, link_id, key_index),
|
||||
TP_STRUCT__entry(
|
||||
WIPHY_ENTRY
|
||||
NETDEV_ENTRY
|
||||
WDEV_ENTRY
|
||||
__field(int, link_id)
|
||||
__field(u8, key_index)
|
||||
),
|
||||
TP_fast_assign(
|
||||
WIPHY_ASSIGN;
|
||||
NETDEV_ASSIGN;
|
||||
WDEV_ASSIGN;
|
||||
__entry->link_id = link_id;
|
||||
__entry->key_index = key_index;
|
||||
),
|
||||
TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", link_id: %d, "
|
||||
"key index: %u", WIPHY_PR_ARG, NETDEV_PR_ARG,
|
||||
__entry->link_id, __entry->key_index)
|
||||
TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", link_id: %d, key index: %u",
|
||||
WIPHY_PR_ARG, WDEV_PR_ARG, __entry->link_id,
|
||||
__entry->key_index)
|
||||
);
|
||||
|
||||
TRACE_EVENT(rdev_start_ap,
|
||||
|
||||
+1
-1
@@ -1095,7 +1095,7 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev)
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (!wdev->connect_keys->params[i].cipher)
|
||||
continue;
|
||||
if (rdev_add_key(rdev, dev, -1, i, false, NULL,
|
||||
if (rdev_add_key(rdev, wdev, -1, i, false, NULL,
|
||||
&wdev->connect_keys->params[i])) {
|
||||
netdev_err(dev, "failed to set key %d\n", i);
|
||||
continue;
|
||||
|
||||
@@ -457,7 +457,7 @@ static int cfg80211_set_encryption(struct cfg80211_registered_device *rdev,
|
||||
!(rdev->wiphy.flags & WIPHY_FLAG_IBSS_RSN))
|
||||
err = -ENOENT;
|
||||
else
|
||||
err = rdev_del_key(rdev, dev, -1, idx, pairwise,
|
||||
err = rdev_del_key(rdev, wdev, -1, idx, pairwise,
|
||||
addr);
|
||||
}
|
||||
wdev->wext.connect.privacy = false;
|
||||
@@ -496,7 +496,7 @@ static int cfg80211_set_encryption(struct cfg80211_registered_device *rdev,
|
||||
if (wdev->connected ||
|
||||
(wdev->iftype == NL80211_IFTYPE_ADHOC &&
|
||||
wdev->u.ibss.current_bss))
|
||||
err = rdev_add_key(rdev, dev, -1, idx, pairwise, addr, params);
|
||||
err = rdev_add_key(rdev, wdev, -1, idx, pairwise, addr, params);
|
||||
else if (params->cipher != WLAN_CIPHER_SUITE_WEP40 &&
|
||||
params->cipher != WLAN_CIPHER_SUITE_WEP104)
|
||||
return -EINVAL;
|
||||
@@ -549,7 +549,7 @@ static int cfg80211_set_encryption(struct cfg80211_registered_device *rdev,
|
||||
if (wdev->connected ||
|
||||
(wdev->iftype == NL80211_IFTYPE_ADHOC &&
|
||||
wdev->u.ibss.current_bss))
|
||||
err = rdev_set_default_mgmt_key(rdev, dev, -1, idx);
|
||||
err = rdev_set_default_mgmt_key(rdev, wdev, -1, idx);
|
||||
if (!err)
|
||||
wdev->wext.default_mgmt_key = idx;
|
||||
return err;
|
||||
|
||||
Reference in New Issue
Block a user