staging: r8188eu: clarify the contents of the delba params
authorMartin Kaiser <martin@kaiser.cx>
Thu, 2 Jun 2022 19:37:23 +0000 (21:37 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 6 Jun 2022 06:08:35 +0000 (08:08 +0200)
The delba parameters field contains an initiator/receiver flag and the
tid. The caller of issue_action_BA passes these components in the status
parameter.

Extract the two components from status and use u16_encode_bits to copy
them into the parameters field. This should clarify what's going on and
should make it easier to replace the status parameter in the future.

Tested-by: Pavel Skripkin <paskripkin@gmail.com>
Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Link: https://lore.kernel.org/r/20220602193726.280922-9-martin@kaiser.cx
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/r8188eu/core/rtw_mlme_ext.c

index 46b770ea7f33dc9b4de58db92a7006f6053b9cd5..049c206fb72a509a94b3ab86fe41db398ded4535 100644 (file)
@@ -5377,7 +5377,7 @@ void issue_action_BA(struct adapter *padapter, unsigned char *raddr, unsigned ch
        struct sta_priv *pstapriv = &padapter->stapriv;
        struct registry_priv *pregpriv = &padapter->registrypriv;
        struct ieee80211_mgmt *mgmt;
-       u16 capab;
+       u16 capab, params;
 
        pmgntframe = alloc_mgtxmitframe(pxmitpriv);
        if (!pmgntframe)
@@ -5450,6 +5450,9 @@ void issue_action_BA(struct adapter *padapter, unsigned char *raddr, unsigned ch
                mgmt->u.action.u.delba.action_code = WLAN_ACTION_DELBA;
                pattrib->pktlen++;
                mgmt->u.action.u.delba.params = cpu_to_le16((status & 0x1F) << 3);
+               params = u16_encode_bits((status & 0x1), IEEE80211_DELBA_PARAM_INITIATOR_MASK);
+               params |= u16_encode_bits((status >> 1) & 0xF, IEEE80211_DELBA_PARAM_TID_MASK);
+               mgmt->u.action.u.delba.params = cpu_to_le16(params);
                pattrib->pktlen += 2;
                mgmt->u.action.u.delba.reason_code = cpu_to_le16(WLAN_STATUS_REQUEST_DECLINED);
                pattrib->pktlen += 2;