summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkrunal soni <ksoni@qca.qualcomm.com>2014-04-02 17:45:28 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-04-12 10:53:19 -0700
commit2aa53e59ae0e8bee044544330d341b16c52caf8d (patch)
treef1ce7608dd07e8d95860ecc5e68cd12e41b1ec1f
parentbabf057ec0a9f57acd29a26617156e28123f7280 (diff)
wlan: qcacld: Enable unicast SOFTAP PMF support.
This will enable PMF support for unicast frames transmission in SAP mode. CRs-Fixed: 644540 Change-Id: Ic4efce829d77b0602abe078be42852514a606915
-rw-r--r--CORE/SERVICES/WMA/wma.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index 37be3b57774c..7919f6b10d08 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -8238,6 +8238,9 @@ static void wma_add_bss_ap_mode(tp_wma_handle wma, tpAddBssParams add_bss)
u_int8_t vdev_id, peer_id;
VOS_STATUS status;
tPowerdBm maxTxPower;
+#ifdef WLAN_FEATURE_11W
+ int ret = 0;
+#endif /* WLAN_FEATURE_11W */
pdev = vos_get_context(VOS_MODULE_ID_TXRX, wma->vos_context);
@@ -8287,6 +8290,24 @@ static void wma_add_bss_ap_mode(tp_wma_handle wma, tpAddBssParams add_bss)
req.max_txpow = 0;
maxTxPower = 0;
#endif
+#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 */
+
req.beacon_intval = add_bss->beaconInterval;
req.dtim_period = add_bss->dtimPeriod;
req.hidden_ssid = add_bss->bHiddenSSIDEn;
@@ -8856,6 +8877,9 @@ static void wma_add_sta_req_ap_mode(tp_wma_handle wma, tpAddStaParams add_sta)
u_int8_t peer_id;
VOS_STATUS status;
int32_t ret;
+#ifdef WLAN_FEATURE_11W
+ struct wma_txrx_node *iface = NULL;
+#endif /* WLAN_FEATURE_11W */
pdev = vos_get_context(VOS_MODULE_ID_TXRX, wma->vos_context);
@@ -8923,6 +8947,31 @@ static void wma_add_sta_req_ap_mode(tp_wma_handle wma, tpAddStaParams add_sta)
}
state = ol_txrx_peer_state_auth;
}
+#ifdef WLAN_FEATURE_11W
+ if (add_sta->rmfEnabled) {
+ /*
+ * We have to store the state of PMF connection
+ * per STA for SAP case
+ * We will isolate the ifaces based on vdevid
+ */
+ iface = &wma->interfaces[vdev->vdev_id];
+ iface->rmfEnabled = add_sta->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_sta->uAPSD) {
ret = wma_set_ap_peer_uapsd(wma, add_sta->smesessionId,