diff options
| author | Srinivas Girigowda <sgirigow@qca.qualcomm.com> | 2014-01-22 19:00:20 -0800 |
|---|---|---|
| committer | Prakash Dhavali <pdhavali@qca.qualcomm.com> | 2014-01-26 21:37:05 -0800 |
| commit | b136a7fa03a117481dd6be1f1d69c1f28682bee8 (patch) | |
| tree | c9f443d8d459726dba12a1c405f2f8f5e66d9c6c | |
| parent | 2419ff9c90a119c6aa14bb7196417323cfdb9ec4 (diff) | |
qcacld-new: Set PMF QoS vdev param for PMF connection
For PMF association, host driver need to configure the
firmware to inform about PMF association to encrypt and
decrypt robust management frames properly.
Change-Id: I1edc6604f5cb04b58760e3620b80837273c2e812
CRs-Fixed: 602154
| -rw-r--r-- | CORE/CLD_TXRX/TLSHIM/tl_shim.c | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 37 |
2 files changed, 41 insertions, 0 deletions
diff --git a/CORE/CLD_TXRX/TLSHIM/tl_shim.c b/CORE/CLD_TXRX/TLSHIM/tl_shim.c index 36496d224639..a34f6c7ae61b 100644 --- a/CORE/CLD_TXRX/TLSHIM/tl_shim.c +++ b/CORE/CLD_TXRX/TLSHIM/tl_shim.c @@ -549,6 +549,10 @@ static int tlshim_mgmt_rx_process(void *context, u_int8_t *data, adf_nbuf_trim_tail(wbuf, IEEE80211_CCMP_MICLEN); rx_pkt->pkt_meta.mpdu_hdr_ptr = adf_nbuf_data(wbuf); + rx_pkt->pkt_meta.mpdu_len = adf_nbuf_len(wbuf); + rx_pkt->pkt_meta.mpdu_data_len = + rx_pkt->pkt_meta.mpdu_len - + rx_pkt->pkt_meta.mpdu_hdr_len; rx_pkt->pkt_meta.mpdu_data_ptr = rx_pkt->pkt_meta.mpdu_hdr_ptr + rx_pkt->pkt_meta.mpdu_hdr_len; diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index b7ad3ab512ac..6437d1a3eb47 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -7369,6 +7369,9 @@ static void wma_add_bss_sta_mode(tp_wma_handle wma, tpAddBssParams add_bss) VOS_STATUS status; struct wma_txrx_node *iface; tPowerdBm maxTxPower = 0; +#ifdef WLAN_FEATURE_11W + int ret = 0; +#endif /* WLAN_FEATURE_11W */ pdev = vos_get_context(VOS_MODULE_ID_TXRX, wma->vos_context); @@ -7470,6 +7473,22 @@ static void wma_add_bss_sta_mode(tp_wma_handle wma, tpAddBssParams add_bss) wmi_unified_send_peer_assoc(wma, add_bss->nwType, &add_bss->staContext); +#ifdef WLAN_FEATURE_11W + if (add_bss->rmfEnabled) { + /* when 802.11w PMF is enabled for hw encr/decr + use hw MFP Qos bits 0x10 */ + ret = wmi_unified_pdev_set_param(wma->wmi_handle, + WMI_PDEV_PARAM_PMF_QOS, TRUE); + if(ret) { + WMA_LOGE("%s: Failed to set QOS MFP/PMF (%d)", + __func__, ret); + } else { + WMA_LOGI("%s: QOS MFP/PMF set to %d", + __func__, TRUE); + } + } +#endif /* WLAN_FEATURE_11W */ + if (add_bss->staContext.encryptType == eSIR_ED_NONE) { WMA_LOGD("%s: send peer authorize wmi cmd for %pM\n", __func__, add_bss->bssId); @@ -8027,6 +8046,9 @@ static void wma_add_sta_req_sta_mode(tp_wma_handle wma, tpAddStaParams params) ol_txrx_peer_handle peer; struct wma_txrx_node *iface; tPowerdBm maxTxPower; +#ifdef WLAN_FEATURE_11W + int ret = 0; +#endif #ifdef FEATURE_WLAN_TDLS if (STA_ENTRY_TDLS_PEER == params->staType) @@ -8080,6 +8102,21 @@ static void wma_add_sta_req_sta_mode(tp_wma_handle wma, tpAddStaParams params) wmi_unified_send_txbf(wma, params); wmi_unified_send_peer_assoc(wma, params->nwType, (tAddStaParams *)iface->addBssStaContext); +#ifdef WLAN_FEATURE_11W + if (params->rmfEnabled) { + /* when 802.11w PMF is enabled for hw encr/decr + use hw MFP Qos bits 0x10 */ + ret = wmi_unified_pdev_set_param(wma->wmi_handle, + WMI_PDEV_PARAM_PMF_QOS, TRUE); + if(ret) { + WMA_LOGE("%s: Failed to set QOS MFP/PMF (%d)", + __func__, ret); + } else { + WMA_LOGI("%s: QOS MFP/PMF set to %d", + __func__, TRUE); + } + } +#endif /* WLAN_FEATURE_11W */ } #if defined WLAN_FEATURE_VOWIFI maxTxPower = params->maxTxPower; |
