mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 08:07:32 -04:00
qcacld-3.0: Save previous auth algo in pe session
DUT retries auth with open system if shared key authentication is not supported by AP. If auth response from AP for open system auth has same sequence number as that of shared key response, host drops the frame. Fix is to drop the auth frame only if previous sequence number and auth algo match with current sequence number and auth algo. Change-Id: Ia02408d72371dfb91a7cae190ae9399cdf2e2e8b CRs-Fixed: 2163231
This commit is contained in:
parent
92dff40b76
commit
7cf307e148
3 changed files with 15 additions and 9 deletions
|
|
@ -528,6 +528,8 @@ typedef struct sPESession /* Added to Support BT-AMP */
|
|||
#endif
|
||||
/* previous auth frame's sequence number */
|
||||
uint16_t prev_auth_seq_num;
|
||||
/* previous auth algo */
|
||||
uint16_t prev_auth_algo;
|
||||
} tPESession, *tpPESession;
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -1096,15 +1096,6 @@ lim_process_auth_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
|
|||
pe_session->limMlmState, MAC_ADDR_ARRAY(mac_hdr->bssId),
|
||||
(uint) abs((int8_t) WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info)));
|
||||
|
||||
if (pe_session->prev_auth_seq_num == curr_seq_num) {
|
||||
pe_err("auth frame, seq num: %d is already processed, drop it",
|
||||
curr_seq_num);
|
||||
return;
|
||||
}
|
||||
|
||||
/* save seq number in pe_session */
|
||||
pe_session->prev_auth_seq_num = curr_seq_num;
|
||||
|
||||
body_ptr = WMA_GET_RX_MPDU_DATA(rx_pkt_info);
|
||||
|
||||
/* Restore default failure timeout */
|
||||
|
|
@ -1344,6 +1335,18 @@ lim_process_auth_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
|
|||
goto free;
|
||||
}
|
||||
|
||||
if (pe_session->prev_auth_seq_num == curr_seq_num &&
|
||||
pe_session->prev_auth_algo == rx_auth_frame->authAlgoNumber) {
|
||||
pe_err("auth frame, seq num: %d is already processed, drop it",
|
||||
curr_seq_num);
|
||||
goto free;
|
||||
}
|
||||
|
||||
/* save seq number in pe_session */
|
||||
pe_session->prev_auth_seq_num = curr_seq_num;
|
||||
|
||||
pe_session->prev_auth_algo = rx_auth_frame->authAlgoNumber;
|
||||
|
||||
rx_auth_frm_body = rx_auth_frame;
|
||||
|
||||
pe_debug("Received Auth frame with type: %d seqnum: %d status: %d %d",
|
||||
|
|
|
|||
|
|
@ -541,6 +541,7 @@ pe_create_session(tpAniSirGlobal pMac, uint8_t *bssid, uint8_t *sessionId,
|
|||
session_ptr->ht_client_cnt = 0;
|
||||
/* following is invalid value since seq number is 12 bit */
|
||||
session_ptr->prev_auth_seq_num = 0xFFFF;
|
||||
session_ptr->prev_auth_algo = 0xFFFF;
|
||||
|
||||
return &pMac->lim.gpSession[i];
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue