Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5dc11fb authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "Revert "cfg80211: Pass PTK as part of key management offload completion""

parents 04a6390b 3e7bc1c0
Loading
Loading
Loading
Loading
+0 −39
Original line number Diff line number Diff line
@@ -1854,24 +1854,6 @@ struct cfg80211_qos_map {
	struct cfg80211_dscp_range up[8];
};

/**
 * struct cfg80211_auth_params - Information about a key managment offload
 *
 * Information reported when a key managment offload has completed.
 *
 * @status: whether offload was successful
 * @key_replay_ctr: Key Replay Counter value last used in a valid
 *	EAPOL-Key frame
 * @ptk_kck: the derived PTK KCK
 * @ptk_kek: the derived PTK KEK
 */
struct cfg80211_auth_params {
	enum nl80211_authorization_status status;
	const u8 *key_replay_ctr;
	const u8 *ptk_kck;
	const u8 *ptk_kek;
};

/**
 * struct cfg80211_ops - backend description for wireless configuration
 *
@@ -4554,27 +4536,6 @@ void cfg80211_authorization_event(struct net_device *dev,
				  const u8 *key_replay_ctr,
				  gfp_t gfp);

/**
 * cfg80211_key_mgmt_auth - indicates key management offload complete
 * @dev: the device reporting offload
 * @auth_params: information about the offload
 * @gfp: allocation flags
 *
 * This function reports that the device offloaded the key management
 * operation and established temporal keys for an RSN connection.  In
 * this case, the device handled the exchange necessary to establish
 * the temporal keys by processing the EAPOL-Key frames instead of
 * the supplicant doing it.  This means the initial connection, roam
 * operation, or PKT rekeying is complete and the supplicant should
 * enter the authorized state for the port.  This event can be signaled
 * after cfg80211_connect_result during initial connection or after
 * cfg80211_roamed in the case of roaming.  This event might also be
 * signaled after the device handles a PTK rekeying operation.
 */
void cfg80211_key_mgmt_auth(struct net_device *dev,
			    struct cfg80211_auth_params *auth_params,
			    gfp_t gfp);

void cfg80211_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info);

/* Logging, debugging and troubleshooting/diagnostic helpers. */
+0 −6
Original line number Diff line number Diff line
@@ -1571,8 +1571,6 @@ enum nl80211_commands {
 * @NL80211_ATTR_PMK: The Pairwise Master Key to be used for the
 *	connection.
 * @NL80211_ATTR_PMK_LEN: The length of the PMK.
 * @NL80211_ATTR_PTK_KCK: Pairwise Transient Key, Key Confirmation Key.
 * @NL80211_ATTR_PTK_KEK: Pairwise Transient Key, Key Encryption Key.
 *
 * @NL80211_ATTR_MAX: highest attribute number currently defined
 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -1918,8 +1916,6 @@ enum nl80211_attrs {
	NL80211_ATTR_KEY_DERIVE_OFFLOAD_SUPPORT,
	NL80211_ATTR_PMK,
	NL80211_ATTR_PMK_LEN,
	NL80211_ATTR_PTK_KCK,
	NL80211_ATTR_PTK_KEK,

	/* add attributes here, update the policy in nl80211.c */

@@ -4007,8 +4003,6 @@ enum nl80211_tdls_peer_capability {
#define NL80211_KEY_LEN_PSK		32
#define NL80211_KEY_LEN_PMK		32
#define NL80211_KEY_REPLAY_CTR_LEN	8
#define NL80211_KEY_LEN_PTK_KCK		16
#define NL80211_KEY_LEN_PTK_KEK		16

/**
 * enum nl80211_key_mgmt_offload_support - key management offload types
+1 −4
Original line number Diff line number Diff line
@@ -244,8 +244,6 @@ struct cfg80211_event {
		struct {
			enum nl80211_authorization_status auth_status;
			u8 key_replay_ctr[NL80211_KEY_REPLAY_CTR_LEN];
			u8 ptk_kck[NL80211_KEY_LEN_PTK_KCK];
			u8 ptk_kek[NL80211_KEY_LEN_PTK_KEK];
		} au;
	};
};
@@ -405,8 +403,7 @@ int cfg80211_mgd_wext_connect(struct cfg80211_registered_device *rdev,
			      struct wireless_dev *wdev);
void __cfg80211_authorization_event(struct net_device *dev,
			   enum nl80211_authorization_status auth_status,
			   const u8 *key_replay_ctr, const u8 *ptk_kck,
			   const u8 *ptk_kek);
			   const u8 *key_replay_ctr);

void cfg80211_conn_work(struct work_struct *work);
void cfg80211_sme_failed_assoc(struct wireless_dev *wdev);
+2 −53
Original line number Diff line number Diff line
@@ -400,10 +400,6 @@ static const struct nla_policy nl80211_policy[NL80211_ATTR_MAX+1] = {
	[NL80211_ATTR_PMK] = { .type = NLA_BINARY,
				   .len = NL80211_KEY_LEN_PMK },
	[NL80211_ATTR_PMK_LEN] = { .type = NLA_U32 },
	[NL80211_ATTR_PTK_KCK] = { .type = NLA_BINARY,
				   .len = NL80211_KEY_LEN_PTK_KCK },
	[NL80211_ATTR_PTK_KEK] = { .type = NLA_BINARY,
				   .len = NL80211_KEY_LEN_PTK_KEK },
};

/* policy for the key attributes */
@@ -11253,8 +11249,7 @@ EXPORT_SYMBOL(cfg80211_ap_stopped);

void __cfg80211_authorization_event(struct net_device *dev,
			    enum nl80211_authorization_status auth_status,
			    const u8 *key_replay_ctr, const u8 *ptk_kck,
			    const u8 *ptk_kek)
			    const u8 *key_replay_ctr)
{
	struct wireless_dev *wdev = dev->ieee80211_ptr;
	struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
@@ -11276,11 +11271,7 @@ void __cfg80211_authorization_event(struct net_device *dev,
	    nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) ||
	    nla_put_u8(msg, NL80211_ATTR_AUTHORIZATION_STATUS, auth_status) ||
	    nla_put(msg, NL80211_ATTR_KEY_REPLAY_CTR,
			  NL80211_KEY_REPLAY_CTR_LEN, key_replay_ctr) ||
	    nla_put(msg, NL80211_ATTR_PTK_KCK, NL80211_KEY_LEN_PTK_KCK,
			  ptk_kck) ||
	    nla_put(msg, NL80211_ATTR_PTK_KEK, NL80211_KEY_LEN_PTK_KEK,
			  ptk_kek))
			  NL80211_KEY_REPLAY_CTR_LEN, key_replay_ctr))
		goto nla_put_failure;

	err = genlmsg_end(msg, hdr);
@@ -11330,48 +11321,6 @@ void cfg80211_authorization_event(struct net_device *dev,
}
EXPORT_SYMBOL(cfg80211_authorization_event);

void cfg80211_key_mgmt_auth(struct net_device *dev,
			    struct cfg80211_auth_params *auth_params,
			    gfp_t gfp)
{
	struct wireless_dev *wdev = dev->ieee80211_ptr;
	struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
	struct cfg80211_event *ev;
	unsigned long flags;

	/* Valid only in SME_CONNECTED state */
	if (wdev->sme_state != CFG80211_SME_CONNECTED)
		return;

	ev = kzalloc(sizeof(*ev), gfp);
	if (!ev)
		return;

	trace_cfg80211_authorization_event(wdev->wiphy, dev,
					   auth_params->status);

	ev->type = EVENT_AUTHORIZATION;
	ev->au.auth_status = auth_params->status;
	if (auth_params->key_replay_ctr) {
		memcpy(ev->au.key_replay_ctr, auth_params->key_replay_ctr,
		       NL80211_KEY_REPLAY_CTR_LEN);
	}
	if (auth_params->ptk_kck) {
		memcpy(ev->au.ptk_kck, auth_params->ptk_kck,
		       NL80211_KEY_LEN_PTK_KCK);
	}
	if (auth_params->ptk_kek) {
		memcpy(ev->au.ptk_kek, auth_params->ptk_kek,
		       NL80211_KEY_LEN_PTK_KEK);
	}

	spin_lock_irqsave(&wdev->event_lock, flags);
	list_add_tail(&ev->list, &wdev->event_list);
	spin_unlock_irqrestore(&wdev->event_lock, flags);
	queue_work(cfg80211_wq, &rdev->event_work);
}
EXPORT_SYMBOL(cfg80211_key_mgmt_auth);

/* initialisation/exit functions */

int nl80211_init(void)
+1 −3
Original line number Diff line number Diff line
@@ -793,9 +793,7 @@ void cfg80211_process_wdev_events(struct wireless_dev *wdev)
		case EVENT_AUTHORIZATION:
			__cfg80211_authorization_event(wdev->netdev,
						       ev->au.auth_status,
						       ev->au.key_replay_ctr,
						       ev->au.ptk_kck,
						       ev->au.ptk_kek);
						       ev->au.key_replay_ctr);
			break;
		}
		wdev_unlock(wdev);