Sfoglia il codice sorgente

qcacld-3.0: Update tx params if 2.4G APs min supported rate is 6Mbps

In STA mode, tx params for auth and assoc req frame
are not updated if minrate is 1 or 6Mbps as these
are the default rates for 2.4G and 5G respectively.
If 2.4G APs min supported rate is 6Mbps, the tx params
are not updated which results in auth and assoc req
frame transmitted at 1Mbps.

Fix is to update tx params if minrate is 6Mbps and
AP is operating in 2.4G.

Change-Id: Ia12c7b13cfb93e2d3b5a4ae124003248fa109e3f
CRs-Fixed: 2205282
Yeshwanth Sriram Guntuka 7 anni fa
parent
commit
a3f8d57005
3 ha cambiato i file con 8 aggiunte e 1 eliminazioni
  1. 2 0
      core/wma/inc/wma.h
  2. 5 1
      core/wma/src/wma_data.c
  3. 1 0
      core/wma/src/wma_dev_if.c

+ 2 - 0
core/wma/inc/wma.h

@@ -1058,6 +1058,7 @@ struct roam_synch_frame_ind {
  * @vdev_start_wakelock: wakelock to protect vdev start op with firmware
  * @vdev_stop_wakelock: wakelock to protect vdev stop op with firmware
  * @vdev_set_key_wakelock: wakelock to protect vdev set key op with firmware
+ * @channel: channel
  */
 struct wma_txrx_node {
 	uint8_t addr[IEEE80211_ADDR_LEN];
@@ -1148,6 +1149,7 @@ struct wma_txrx_node {
 	qdf_wake_lock_t vdev_set_key_wakelock;
 	struct roam_synch_frame_ind roam_synch_frame_ind;
 	bool is_waiting_for_key;
+	uint8_t channel;
 };
 
 /**

+ 5 - 1
core/wma/src/wma_data.c

@@ -2376,6 +2376,7 @@ QDF_STATUS wma_tx_packet(void *wma_context, void *tx_frame, uint16_t frmLen,
 	struct wlan_objmgr_peer *peer = NULL;
 	struct wlan_objmgr_psoc *psoc;
 	void *mac_addr;
+	bool is_5g = false;
 
 	if (NULL == wma_handle) {
 		WMA_LOGE("wma_handle is NULL");
@@ -2712,6 +2713,9 @@ QDF_STATUS wma_tx_packet(void *wma_context, void *tx_frame, uint16_t frmLen,
 		}
 	}
 
+	if (wma_handle->interfaces[vdev_id].channel >= SIR_11A_CHANNEL_BEGIN)
+		is_5g = true;
+
 	mgmt_param.tx_frame = tx_frame;
 	mgmt_param.frm_len = frmLen;
 	mgmt_param.vdev_id = vdev_id;
@@ -2726,7 +2730,7 @@ QDF_STATUS wma_tx_packet(void *wma_context, void *tx_frame, uint16_t frmLen,
 	 * other than 1Mbps and 6 Mbps
 	 */
 	if (rid < RATEID_DEFAULT &&
-	    (rid != RATEID_1MBPS && rid != RATEID_6MBPS)) {
+	    (rid != RATEID_1MBPS && !(rid == RATEID_6MBPS && is_5g))) {
 		WMA_LOGD(FL("using rate id: %d for Tx"), rid);
 		mgmt_param.tx_params_valid = true;
 		wma_update_tx_send_params(&mgmt_param.tx_param, rid);

+ 1 - 0
core/wma/src/wma_dev_if.c

@@ -2646,6 +2646,7 @@ QDF_STATUS wma_vdev_start(tp_wma_handle wma,
 		CFG_TGT_DEFAULT_GTX_BW_MASK;
 	intr[params.vdev_id].mhz = params.chan_freq;
 	intr[params.vdev_id].chan_width = ch_width;
+	intr[params.vdev_id].channel = req->chan;
 	wma_copy_txrxnode_he_ops(&intr[params.vdev_id], req);
 
 	temp_chan_info &= 0xffffffc0;