staging: r8188eu: check for initiator vs recipient
authorMartin Kaiser <martin@kaiser.cx>
Sat, 14 May 2022 16:47:39 +0000 (18:47 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 May 2022 15:41:56 +0000 (17:41 +0200)
For an incoming delba message, the code checks if the delba was sent by
the data initiator or by the data recipient.

Rewrite this check using the ieee80211 helpers, making the code easier to
understand.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Link: https://lore.kernel.org/r/20220514164740.282552-7-martin@kaiser.cx
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/r8188eu/core/rtw_mlme_ext.c

index 9aa6d09b2e74f60c150212535586216b2528c0d7..af525d633fd7e1a19ae2a07404ab4ae68e5c2c8e 100644 (file)
@@ -1517,10 +1517,11 @@ unsigned int OnAction_back(struct adapter *padapter, struct recv_frame *precv_fr
                }
                break;
        case WLAN_ACTION_DELBA:
-               if ((frame_body[3] & BIT(3)) == 0) {
+               if (u16_get_bits(le16_to_cpu(mgmt->u.action.u.delba.params),
+                                IEEE80211_DELBA_PARAM_INITIATOR_MASK) == WLAN_BACK_RECIPIENT) {
                        psta->htpriv.agg_enable_bitmap &= ~(1 << ((frame_body[3] >> 4) & 0xf));
                        psta->htpriv.candidate_tid_bitmap &= ~(1 << ((frame_body[3] >> 4) & 0xf));
-               } else if ((frame_body[3] & BIT(3)) == BIT(3)) {
+               } else {
                        tid = (frame_body[3] >> 4) & 0x0F;
                        preorder_ctrl =  &psta->recvreorder_ctrl[tid];
                        preorder_ctrl->enable = false;