diff --git a/core/wma/src/wma_data.c b/core/wma/src/wma_data.c index c2067b61269f..937c88ba0313 100644 --- a/core/wma/src/wma_data.c +++ b/core/wma/src/wma_data.c @@ -2608,6 +2608,11 @@ QDF_STATUS wma_tx_packet(void *wma_context, void *tx_frame, uint16_t frmLen, * map, normal tx unmap is enough for this case. */ QDF_NBUF_CB_TX_DMA_BI_MAP((qdf_nbuf_t)tx_frame) = 1; + } else if (iface && !iface->rmfEnabled) { + if (pFc->wep && (frmType == TXRX_FRM_802_11_MGMT)) { + wma_err("PMF is disabled, but WEP is set"); + pFc->wep = 0; + } } #endif /* WLAN_FEATURE_11W */ mHdr = (tpSirMacMgmtHdr)qdf_nbuf_data(tx_frame); diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index ac9ad98d2146..e9befd4d70ce 100644 --- a/core/wma/src/wma_dev_if.c +++ b/core/wma/src/wma_dev_if.c @@ -3940,6 +3940,7 @@ static void wma_add_bss_ap_mode(tp_wma_handle wma, struct bss_params *add_bss) QDF_STATUS status; int8_t maxTxPower; void *soc = cds_get_context(QDF_MODULE_ID_SOC); + struct wma_txrx_node *iface; pdev = cds_get_context(QDF_MODULE_ID_TXRX); @@ -3982,6 +3983,8 @@ static void wma_add_bss_ap_mode(tp_wma_handle wma, struct bss_params *add_bss) goto peer_cleanup; } + iface = &wma->interfaces[vdev_id]; + add_bss->staContext.staIdx = cdp_peer_get_local_peer_id(soc, peer); qdf_mem_zero(&req, sizeof(req)); @@ -4002,7 +4005,7 @@ static void wma_add_bss_ap_mode(tp_wma_handle wma, struct bss_params *add_bss) req.max_txpow = add_bss->maxTxPower; maxTxPower = add_bss->maxTxPower; - + iface->rmfEnabled = add_bss->rmfEnabled; if (add_bss->rmfEnabled) wma_set_mgmt_frame_protection(wma); @@ -4728,11 +4731,6 @@ static void wma_add_sta_req_ap_mode(tp_wma_handle wma, tpAddStaParams add_sta) } } #endif - - iface->rmfEnabled = add_sta->rmfEnabled; - if (add_sta->rmfEnabled) - wma_set_mgmt_frame_protection(wma); - if (add_sta->uAPSD) { status = wma_set_ap_peer_uapsd(wma, add_sta->smesessionId, add_sta->staMac,