Ver código fonte

qcacld-3.0: Fill MCS rates for TDLS off-channel 160 MHz

fill the MCS rates for TDLS off channel, update wma pouplate
to fill peer assoc mcs values in peer assoc command.

Change-Id: I16073a51a8949093872f7a421e0ad01648b63e92
CRs-Fixed: 3275175
sandhu 2 anos atrás
pai
commit
7d757e6431
2 arquivos alterados com 17 adições e 4 exclusões
  1. 15 3
      core/mac/src/pe/lim/lim_process_tdls.c
  2. 2 1
      core/wma/src/wma_he.c

+ 15 - 3
core/mac/src/pe/lim/lim_process_tdls.c

@@ -1109,6 +1109,8 @@ static void lim_tdls_fill_he_wideband_offchannel_mcs(struct mac_context *mac_ctx
 	qdf_list_t *head;
 	qdf_list_node_t *p_node;
 	int i = 0;
+	uint16_t rx_he_mcs_map_160 = 0xfffa;
+	uint16_t tx_he_mcs_map_160 = 0xfffa;
 	QDF_STATUS status;
 
 	tdls_obj = wlan_vdev_get_tdls_vdev_obj(session->vdev);
@@ -1138,9 +1140,7 @@ static void lim_tdls_fill_he_wideband_offchannel_mcs(struct mac_context *mac_ctx
 		return;
 	}
 
-	if (stads->ch_width == CH_WIDTH_160MHZ ||
-	    (tdls_peer_candidate->pref_off_chan_width &
-	     (1 << BW_160_OFFSET_BIT))) {
+	if (stads->ch_width == CH_WIDTH_160MHZ) {
 		lim_populate_he_mcs_per_bw(
 			mac_ctx, &rates->rx_he_mcs_map_160,
 			&rates->tx_he_mcs_map_160,
@@ -1151,6 +1151,18 @@ static void lim_tdls_fill_he_wideband_offchannel_mcs(struct mac_context *mac_ctx
 				rx_he_mcs_map_160),
 			*((uint16_t *)mac_ctx->mlme_cfg->he_caps.dot11_he_cap.
 					tx_he_mcs_map_160));
+	} else if (tdls_peer_candidate->pref_off_chan_width &
+	     (1 << BW_160_OFFSET_BIT)) {
+		lim_populate_he_mcs_per_bw(
+			mac_ctx, &rates->rx_he_mcs_map_160,
+			&rates->tx_he_mcs_map_160,
+			rx_he_mcs_map_160,
+			tx_he_mcs_map_160,
+			nss,
+			*((uint16_t *)mac_ctx->mlme_cfg->he_caps.dot11_he_cap.
+				rx_he_mcs_map_160),
+			*((uint16_t *)mac_ctx->mlme_cfg->he_caps.dot11_he_cap.
+					tx_he_mcs_map_160));
 	} else {
 		rates->tx_he_mcs_map_160 = HE_MCS_ALL_DISABLED;
 		rates->rx_he_mcs_map_160 = HE_MCS_ALL_DISABLED;

+ 2 - 1
core/wma/src/wma_he.c

@@ -1272,7 +1272,8 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer,
 			 WMA_MCS_12_13_MAP_L80) & WMA_MCS_12_13_PEER_RATE_MAP;
 	}
 
-	if (params->ch_width > CH_WIDTH_80MHZ) {
+	if (params->ch_width > CH_WIDTH_80MHZ ||
+	    params->staType == STA_ENTRY_TDLS_PEER) {
 		peer->peer_he_mcs_count = WMI_HOST_MAX_HE_RATE_SET;
 		peer->peer_he_rx_mcs_set[1] |=
 			params->supportedRates.rx_he_mcs_map_160;