Commit d8f2cff6 authored by Martin Kaiser's avatar Martin Kaiser Committed by Greg Kroah-Hartman
Browse files

staging: r8188eu: calculate the delba length



Use offsetofend to calculate the length of the delba message.

We are now calculating all message lengths based on the offset of their
last field. All intermediate updates of pattrib->pktlen can be removed.

Tested-by: default avatarPavel Skripkin <paskripkin@gmail.com>
Signed-off-by: default avatarMartin Kaiser <martin@kaiser.cx>
Link: https://lore.kernel.org/r/20220602193726.280922-10-martin@kaiser.cx


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 3d7deed4
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -5401,10 +5401,7 @@ void issue_action_BA(struct adapter *padapter, unsigned char *raddr, unsigned ch
	mgmt->seq_ctrl = cpu_to_le16(pmlmeext->mgnt_seq);
	pmlmeext->mgnt_seq++;

	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);

	mgmt->u.action.category = WLAN_CATEGORY_BACK;
	pattrib->pktlen++;

	switch (action) {
	case WLAN_ACTION_ADDBA_REQ:
@@ -5448,14 +5445,12 @@ void issue_action_BA(struct adapter *padapter, unsigned char *raddr, unsigned ch
		break;
	case WLAN_ACTION_DELBA:
		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;
		pattrib->pktlen = offsetofend(struct ieee80211_mgmt, u.action.u.delba.reason_code);
		break;
	default:
		break;