wifi: mac80211: fix the type of status_code for negotiated TID to Link Mapping
authorMichael-CY Lee <michael-cy.lee@mediatek.com>
Mon, 5 May 2025 08:19:46 +0000 (16:19 +0800)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 6 May 2025 19:27:10 +0000 (21:27 +0200)
The status code should be type of __le16.

Fixes: 83e897a961b8 ("wifi: ieee80211: add definitions for negotiated TID to Link map")
Fixes: 8f500fbc6c65 ("wifi: mac80211: process and save negotiated TID to Link mapping request")
Signed-off-by: Michael-CY Lee <michael-cy.lee@mediatek.com>
Link: https://patch.msgid.link/20250505081946.3927214-1-michael-cy.lee@mediatek.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/linux/ieee80211.h
net/mac80211/mlme.c

index 508d466de1cc24379c7e33abfc83153116f31bed..457b4fba88bd004c1b7c7a1c4afcf14e98798909 100644 (file)
@@ -1526,7 +1526,7 @@ struct ieee80211_mgmt {
                                struct {
                                        u8 action_code;
                                        u8 dialog_token;
-                                       u8 status_code;
+                                       __le16 status_code;
                                        u8 variable[];
                                } __packed ttlm_res;
                                struct {
index 5d1f2d6d09ad023728112176ec53e160a60de99d..35eaf0812c5b24ac6e6f18d570eb6b7b3d9871ef 100644 (file)
@@ -7675,6 +7675,7 @@ ieee80211_send_neg_ttlm_res(struct ieee80211_sub_if_data *sdata,
        int hdr_len = offsetofend(struct ieee80211_mgmt, u.action.u.ttlm_res);
        int ttlm_max_len = 2 + 1 + sizeof(struct ieee80211_ttlm_elem) + 1 +
                2 * 2 * IEEE80211_TTLM_NUM_TIDS;
+       u16 status_code;
 
        skb = dev_alloc_skb(local->tx_headroom + hdr_len + ttlm_max_len);
        if (!skb)
@@ -7697,19 +7698,18 @@ ieee80211_send_neg_ttlm_res(struct ieee80211_sub_if_data *sdata,
                WARN_ON(1);
                fallthrough;
        case NEG_TTLM_RES_REJECT:
-               mgmt->u.action.u.ttlm_res.status_code =
-                       WLAN_STATUS_DENIED_TID_TO_LINK_MAPPING;
+               status_code = WLAN_STATUS_DENIED_TID_TO_LINK_MAPPING;
                break;
        case NEG_TTLM_RES_ACCEPT:
-               mgmt->u.action.u.ttlm_res.status_code = WLAN_STATUS_SUCCESS;
+               status_code = WLAN_STATUS_SUCCESS;
                break;
        case NEG_TTLM_RES_SUGGEST_PREFERRED:
-               mgmt->u.action.u.ttlm_res.status_code =
-                       WLAN_STATUS_PREF_TID_TO_LINK_MAPPING_SUGGESTED;
+               status_code = WLAN_STATUS_PREF_TID_TO_LINK_MAPPING_SUGGESTED;
                ieee80211_neg_ttlm_add_suggested_map(skb, neg_ttlm);
                break;
        }
 
+       mgmt->u.action.u.ttlm_res.status_code = cpu_to_le16(status_code);
        ieee80211_tx_skb(sdata, skb);
 }
 
@@ -7875,7 +7875,7 @@ void ieee80211_process_neg_ttlm_res(struct ieee80211_sub_if_data *sdata,
         * This can be better implemented in the future, to handle request
         * rejections.
         */
-       if (mgmt->u.action.u.ttlm_res.status_code != WLAN_STATUS_SUCCESS)
+       if (le16_to_cpu(mgmt->u.action.u.ttlm_res.status_code) != WLAN_STATUS_SUCCESS)
                __ieee80211_disconnect(sdata);
 }