Subject: linux-next: manual merge of the wireless-next tree with the origin tree

From: [email-masked]
Date: Tue, 22 Feb 2022 16:12:18 +0000

Hi all,

Today's linux-next merge of the wireless-next tree got a conflict in:

  net/mac80211/mlme.c

between commit:

  a72c01a94f1d2 ("mac80211: mlme: check for null after calling kmemdup")

from the origin tree and commit:

  820acc810fb6e ("mac80211: Add EHT capabilities to association/probe request")

from the wireless-next tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --cc net/mac80211/mlme.c
index 20b57ddf149c4,197cad4a2768a..0000000000000
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@@ -671,7 -692,49 +692,49 @@@ static void ieee80211_add_he_ie(struct 
  	ieee80211_ie_build_he_6ghz_cap(sdata, skb);
  }
  
+ static void ieee80211_add_eht_ie(struct ieee80211_sub_if_data *sdata,
+ 				 struct sk_buff *skb,
+ 				 struct ieee80211_supported_band *sband)
+ {
+ 	u8 *pos;
+ 	const struct ieee80211_sta_he_cap *he_cap;
+ 	const struct ieee80211_sta_eht_cap *eht_cap;
+ 	struct ieee80211_chanctx_conf *chanctx_conf;
+ 	u8 eht_cap_size;
+ 	bool reg_cap = false;
+ 
+ 	rcu_read_lock();
+ 	chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
+ 	if (!WARN_ON_ONCE(!chanctx_conf))
+ 		reg_cap = cfg80211_chandef_usable(sdata->wdev.wiphy,
+ 						  &chanctx_conf->def,
+ 						  IEEE80211_CHAN_NO_HE |
+ 						  IEEE80211_CHAN_NO_EHT);
+ 	rcu_read_unlock();
+ 
+ 	he_cap = ieee80211_get_he_iftype_cap(sband,
+ 					     ieee80211_vif_type_p2p(&sdata->vif));
+ 	eht_cap = ieee80211_get_eht_iftype_cap(sband,
+ 					       ieee80211_vif_type_p2p(&sdata->vif));
+ 
+ 	/*
+ 	 * EHT capabilities element is only added if the HE capabilities element
+ 	 * was added so assume that 'he_cap' is valid and don't check it.
+ 	 */
+ 	if (WARN_ON(!he_cap || !eht_cap || !reg_cap))
+ 		return;
+ 
+ 	eht_cap_size =
+ 		2 + 1 + sizeof(eht_cap->eht_cap_elem) +
+ 		ieee80211_eht_mcs_nss_size(&he_cap->he_cap_elem,
+ 					   &eht_cap->eht_cap_elem) +
+ 		ieee80211_eht_ppe_size(eht_cap->eht_ppe_thres[0],
+ 				       eht_cap->eht_cap_elem.phy_cap_info);
+ 	pos = skb_put(skb, eht_cap_size);
+ 	ieee80211_ie_build_eht_cap(pos, he_cap, eht_cap, pos + eht_cap_size);
+ }
+ 
 -static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata)
 +static int ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata)
  {
  	struct ieee80211_local *local = sdata->local;
  	struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;