mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-13 23:29:10 -04:00
wifi: mac80211: Add processing of TTLM teardown frame
Add processing of negotiated TTLM tear down frame. Handle this frame similar to the way a locally initiated tear down is handled. Signed-off-by: Ilan Peer <ilan.peer@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20250205110958.860691076786.I32df71182c25c5f84e4534f40efe1316926b8249@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -2777,6 +2777,7 @@ void ieee80211_process_neg_ttlm_res(struct ieee80211_sub_if_data *sdata,
|
||||
struct ieee80211_mgmt *mgmt, size_t len);
|
||||
int ieee80211_req_neg_ttlm(struct ieee80211_sub_if_data *sdata,
|
||||
struct cfg80211_ttlm_params *params);
|
||||
void ieee80211_process_ttlm_teardown(struct ieee80211_sub_if_data *sdata);
|
||||
|
||||
void ieee80211_check_wbrf_support(struct ieee80211_local *local);
|
||||
void ieee80211_add_wbrf(struct ieee80211_local *local, struct cfg80211_chan_def *chandef);
|
||||
|
||||
@@ -1552,6 +1552,9 @@ static void ieee80211_iface_process_skb(struct ieee80211_local *local,
|
||||
ieee80211_process_neg_ttlm_res(sdata, mgmt,
|
||||
skb->len);
|
||||
break;
|
||||
case WLAN_PROTECTED_EHT_ACTION_TTLM_TEARDOWN:
|
||||
ieee80211_process_ttlm_teardown(sdata);
|
||||
break;
|
||||
case WLAN_PROTECTED_EHT_ACTION_LINK_RECONFIG_RESP:
|
||||
ieee80211_process_ml_reconf_resp(sdata, mgmt,
|
||||
skb->len);
|
||||
|
||||
@@ -7705,13 +7705,9 @@ void ieee80211_process_neg_ttlm_res(struct ieee80211_sub_if_data *sdata,
|
||||
__ieee80211_disconnect(sdata);
|
||||
}
|
||||
|
||||
static void ieee80211_teardown_ttlm_work(struct wiphy *wiphy,
|
||||
struct wiphy_work *work)
|
||||
void ieee80211_process_ttlm_teardown(struct ieee80211_sub_if_data *sdata)
|
||||
{
|
||||
u16 new_dormant_links;
|
||||
struct ieee80211_sub_if_data *sdata =
|
||||
container_of(work, struct ieee80211_sub_if_data,
|
||||
u.mgd.teardown_ttlm_work);
|
||||
|
||||
if (!sdata->vif.neg_ttlm.valid)
|
||||
return;
|
||||
@@ -7726,6 +7722,16 @@ static void ieee80211_teardown_ttlm_work(struct wiphy *wiphy,
|
||||
BSS_CHANGED_MLD_VALID_LINKS);
|
||||
}
|
||||
|
||||
static void ieee80211_teardown_ttlm_work(struct wiphy *wiphy,
|
||||
struct wiphy_work *work)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata =
|
||||
container_of(work, struct ieee80211_sub_if_data,
|
||||
u.mgd.teardown_ttlm_work);
|
||||
|
||||
ieee80211_process_ttlm_teardown(sdata);
|
||||
}
|
||||
|
||||
void ieee80211_send_teardown_neg_ttlm(struct ieee80211_vif *vif)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
|
||||
|
||||
@@ -3811,6 +3811,14 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
|
||||
u.action.u.ttlm_res))
|
||||
goto invalid;
|
||||
goto queue;
|
||||
case WLAN_PROTECTED_EHT_ACTION_TTLM_TEARDOWN:
|
||||
if (sdata->vif.type != NL80211_IFTYPE_STATION)
|
||||
break;
|
||||
|
||||
if (len < offsetofend(typeof(*mgmt),
|
||||
u.action.u.ttlm_tear_down))
|
||||
goto invalid;
|
||||
goto queue;
|
||||
case WLAN_PROTECTED_EHT_ACTION_LINK_RECONFIG_RESP:
|
||||
if (sdata->vif.type != NL80211_IFTYPE_STATION)
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user