From 6553ea16beb0c08fb4277ab1384d24f7ee3191fa Mon Sep 17 00:00:00 2001 From: Krishna Kumaar Natarajan Date: Fri, 2 Sep 2016 12:28:07 -0700 Subject: [PATCH] qcacld-3.0: Handle protected dual of public action frame Handle protected dual of public action frame in lim_process_action_frame. GAS comeback request/response frames will be converted into protected dual of public action frame on encryption. These frames should be passed to userspace for further processing. Change-Id: I25e7f06369cdd238a561ddb5a825a63fe35f7b17 CRs-Fixed: 1063665 (cherry picked from commit 7745335fbdebcd81b274c703e5a080d61dd86428) --- core/mac/inc/sir_mac_prot_def.h | 6 +++++ .../mac/src/pe/lim/lim_process_action_frame.c | 24 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/core/mac/inc/sir_mac_prot_def.h b/core/mac/inc/sir_mac_prot_def.h index 1389661ea45c..79657e25cdca 100644 --- a/core/mac/inc/sir_mac_prot_def.h +++ b/core/mac/inc/sir_mac_prot_def.h @@ -243,6 +243,12 @@ #define SIR_MAC_WNM_NOTIF_REQUEST 26 #define SIR_MAC_WNM_NOTIF_RESPONSE 27 +/* Protected Dual of Public Action(PDPA) frames Action field */ +#define SIR_MAC_PDPA_GAS_INIT_REQ 10 +#define SIR_MAC_PDPA_GAS_INIT_RSP 11 +#define SIR_MAC_PDPA_GAS_COMEBACK_REQ 12 +#define SIR_MAC_PDPA_GAS_COMEBACK_RSP 13 + #define SIR_MAC_MAX_RANDOM_LENGTH 2306 /* ----------------------------------------------------------------------------- */ diff --git a/core/mac/src/pe/lim/lim_process_action_frame.c b/core/mac/src/pe/lim/lim_process_action_frame.c index d1ba40d169ad..3eee93849812 100644 --- a/core/mac/src/pe/lim/lim_process_action_frame.c +++ b/core/mac/src/pe/lim/lim_process_action_frame.c @@ -2104,6 +2104,30 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx, session, 0); break; } + case SIR_MAC_ACTION_PROT_DUAL_PUB: + lim_log(mac_ctx, LOG1, + FL("Rcvd Protected Dual of Public Action; action %d."), + action_hdr->actionID); + switch (action_hdr->actionID) { + case SIR_MAC_PDPA_GAS_INIT_REQ: + case SIR_MAC_PDPA_GAS_INIT_RSP: + case SIR_MAC_PDPA_GAS_COMEBACK_REQ: + case SIR_MAC_PDPA_GAS_COMEBACK_RSP: + mac_hdr = WMA_GET_RX_MAC_HEADER(rx_pkt_info); + frame_len = WMA_GET_RX_PAYLOAD_LEN(rx_pkt_info); + rssi = WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info); + lim_send_sme_mgmt_frame_ind(mac_ctx, + mac_hdr->fc.subType, (uint8_t *) mac_hdr, + frame_len + sizeof(tSirMacMgmtHdr), + session->smeSessionId, + WMA_GET_RX_CH(rx_pkt_info), session, rssi); + break; + default: + lim_log(mac_ctx, LOG1, + FL("Unhandled - Protected Dual Public Action")); + break; + } + break; default: lim_log(mac_ctx, LOG1, FL("Action category %d not handled"),