Browse Source

qcacld-3.0: Fix the channel BW capability in HE caps

Fix channel bandwidth capability advertisement in HE caps

Change-Id: I3dc9a390e806725c45a7919e7a62fefaa073399b
CRs-Fixed: 2160791
Kiran Kumar Lokere 7 năm trước cách đây
mục cha
commit
ee2bbf2946
1 tập tin đã thay đổi với 176 bổ sung183 xóa
  1. 176 183
      core/wma/src/wma_he.c

+ 176 - 183
core/wma/src/wma_he.c

@@ -346,193 +346,186 @@ static void wma_derive_ext_he_cap(t_wma_handle *wma_handle,
 		/* First time update, copy the capability as is */
 		qdf_mem_copy(he_cap, new_cap, sizeof(*he_cap));
 		he_cap->present = true;
-	} else {
-		/* Take union(max) or intersection(min) of the capabilities */
-		he_cap->htc_he = QDF_MIN(he_cap->htc_he, new_cap->htc_he);
-		he_cap->twt_request = QDF_MIN(he_cap->twt_request,
-					new_cap->twt_request);
-		he_cap->twt_responder = QDF_MIN(he_cap->twt_responder,
-						new_cap->twt_responder);
-		he_cap->fragmentation = QDF_MIN(he_cap->fragmentation,
-						new_cap->fragmentation);
-		he_cap->max_num_frag_msdu = QDF_MIN(he_cap->max_num_frag_msdu,
-						new_cap->max_num_frag_msdu);
-		he_cap->min_frag_size = QDF_MIN(he_cap->min_frag_size,
-						new_cap->min_frag_size);
-		he_cap->trigger_frm_mac_pad =
-			QDF_MIN(he_cap->trigger_frm_mac_pad,
+		return;
+	}
+	/* Take union(max) or intersection(min) of the capabilities */
+	he_cap->htc_he = QDF_MIN(he_cap->htc_he, new_cap->htc_he);
+	he_cap->twt_request = QDF_MIN(he_cap->twt_request,
+			new_cap->twt_request);
+	he_cap->twt_responder = QDF_MIN(he_cap->twt_responder,
+			new_cap->twt_responder);
+	he_cap->fragmentation = QDF_MIN(he_cap->fragmentation,
+			new_cap->fragmentation);
+	he_cap->max_num_frag_msdu = QDF_MIN(he_cap->max_num_frag_msdu,
+			new_cap->max_num_frag_msdu);
+	he_cap->min_frag_size = QDF_MIN(he_cap->min_frag_size,
+			new_cap->min_frag_size);
+	he_cap->trigger_frm_mac_pad =
+		QDF_MIN(he_cap->trigger_frm_mac_pad,
 				new_cap->trigger_frm_mac_pad);
-		he_cap->multi_tid_aggr = QDF_MIN(he_cap->multi_tid_aggr,
-						new_cap->multi_tid_aggr);
-		he_cap->he_link_adaptation = QDF_MIN(he_cap->he_link_adaptation,
-						new_cap->he_link_adaptation);
-		he_cap->all_ack = QDF_MIN(he_cap->all_ack,
-						new_cap->all_ack);
-		he_cap->ul_mu_rsp_sched = QDF_MIN(he_cap->ul_mu_rsp_sched,
-						new_cap->ul_mu_rsp_sched);
-		he_cap->a_bsr = QDF_MIN(he_cap->a_bsr,
-						new_cap->a_bsr);
-		he_cap->broadcast_twt = QDF_MIN(he_cap->broadcast_twt,
-						new_cap->broadcast_twt);
-		he_cap->ba_32bit_bitmap = QDF_MIN(he_cap->ba_32bit_bitmap,
-						new_cap->ba_32bit_bitmap);
-		he_cap->mu_cascade = QDF_MIN(he_cap->mu_cascade,
-						new_cap->mu_cascade);
-		he_cap->ack_enabled_multitid =
-			QDF_MIN(he_cap->ack_enabled_multitid,
+	he_cap->multi_tid_aggr = QDF_MIN(he_cap->multi_tid_aggr,
+			new_cap->multi_tid_aggr);
+	he_cap->he_link_adaptation = QDF_MIN(he_cap->he_link_adaptation,
+			new_cap->he_link_adaptation);
+	he_cap->all_ack = QDF_MIN(he_cap->all_ack,
+			new_cap->all_ack);
+	he_cap->ul_mu_rsp_sched = QDF_MIN(he_cap->ul_mu_rsp_sched,
+			new_cap->ul_mu_rsp_sched);
+	he_cap->a_bsr = QDF_MIN(he_cap->a_bsr,
+			new_cap->a_bsr);
+	he_cap->broadcast_twt = QDF_MIN(he_cap->broadcast_twt,
+			new_cap->broadcast_twt);
+	he_cap->ba_32bit_bitmap = QDF_MIN(he_cap->ba_32bit_bitmap,
+			new_cap->ba_32bit_bitmap);
+	he_cap->mu_cascade = QDF_MIN(he_cap->mu_cascade,
+			new_cap->mu_cascade);
+	he_cap->ack_enabled_multitid =
+		QDF_MIN(he_cap->ack_enabled_multitid,
 				new_cap->ack_enabled_multitid);
-		he_cap->dl_mu_ba = QDF_MIN(he_cap->dl_mu_ba,
-						new_cap->dl_mu_ba);
-		he_cap->omi_a_ctrl = QDF_MIN(he_cap->omi_a_ctrl,
-						new_cap->omi_a_ctrl);
-		he_cap->ofdma_ra = QDF_MIN(he_cap->ofdma_ra,
-						new_cap->ofdma_ra);
-		he_cap->max_ampdu_len = QDF_MIN(he_cap->max_ampdu_len,
-						new_cap->max_ampdu_len);
-		he_cap->amsdu_frag = QDF_MIN(he_cap->amsdu_frag,
-						new_cap->amsdu_frag);
-		he_cap->flex_twt_sched = QDF_MIN(he_cap->flex_twt_sched,
-						new_cap->flex_twt_sched);
-		he_cap->rx_ctrl_frame = QDF_MIN(he_cap->rx_ctrl_frame,
-						new_cap->rx_ctrl_frame);
-		he_cap->bsrp_ampdu_aggr = QDF_MIN(he_cap->bsrp_ampdu_aggr,
-						new_cap->bsrp_ampdu_aggr);
-		he_cap->qtp = QDF_MIN(he_cap->qtp, new_cap->qtp);
-		he_cap->a_bqr = QDF_MIN(he_cap->a_bqr, new_cap->a_bqr);
-		he_cap->sr_responder = QDF_MIN(he_cap->sr_responder,
-					       new_cap->sr_responder);
-		he_cap->ndp_feedback_supp = QDF_MIN(he_cap->ndp_feedback_supp,
-						    new_cap->ndp_feedback_supp);
-		he_cap->ops_supp = QDF_MIN(he_cap->ops_supp, new_cap->ops_supp);
-		he_cap->amsdu_in_ampdu = QDF_MIN(he_cap->amsdu_in_ampdu,
-						 new_cap->amsdu_in_ampdu);
-		he_cap->reserved1 = QDF_MIN(he_cap->reserved1,
-					    new_cap->reserved1);
-
-		he_cap->dual_band = QDF_MIN(he_cap->dual_band,
-					    new_cap->dual_band);
-
-		he_cap->chan_width_0 = he_cap->chan_width_0 &
-						new_cap->chan_width_0;
-		he_cap->chan_width_1 = he_cap->chan_width_1 &
-						new_cap->chan_width_1;
-		he_cap->chan_width_2 = he_cap->chan_width_2 &
-						new_cap->chan_width_2;
-		he_cap->chan_width_3 = he_cap->chan_width_3 &
-						new_cap->chan_width_3;
-		he_cap->chan_width_4 = he_cap->chan_width_4 &
-						new_cap->chan_width_4;
-		he_cap->chan_width_5 = he_cap->chan_width_5 &
-						new_cap->chan_width_5;
-		he_cap->chan_width_6 = he_cap->chan_width_6 &
-						new_cap->chan_width_6;
-
-		he_cap->rx_pream_puncturing =
-			QDF_MIN(he_cap->rx_pream_puncturing,
+	he_cap->dl_mu_ba = QDF_MIN(he_cap->dl_mu_ba,
+			new_cap->dl_mu_ba);
+	he_cap->omi_a_ctrl = QDF_MIN(he_cap->omi_a_ctrl,
+			new_cap->omi_a_ctrl);
+	he_cap->ofdma_ra = QDF_MIN(he_cap->ofdma_ra,
+			new_cap->ofdma_ra);
+	he_cap->max_ampdu_len = QDF_MIN(he_cap->max_ampdu_len,
+			new_cap->max_ampdu_len);
+	he_cap->amsdu_frag = QDF_MIN(he_cap->amsdu_frag,
+			new_cap->amsdu_frag);
+	he_cap->flex_twt_sched = QDF_MIN(he_cap->flex_twt_sched,
+			new_cap->flex_twt_sched);
+	he_cap->rx_ctrl_frame = QDF_MIN(he_cap->rx_ctrl_frame,
+			new_cap->rx_ctrl_frame);
+	he_cap->bsrp_ampdu_aggr = QDF_MIN(he_cap->bsrp_ampdu_aggr,
+			new_cap->bsrp_ampdu_aggr);
+	he_cap->qtp = QDF_MIN(he_cap->qtp, new_cap->qtp);
+	he_cap->a_bqr = QDF_MIN(he_cap->a_bqr, new_cap->a_bqr);
+	he_cap->sr_responder = QDF_MIN(he_cap->sr_responder,
+			new_cap->sr_responder);
+	he_cap->ndp_feedback_supp = QDF_MIN(he_cap->ndp_feedback_supp,
+			new_cap->ndp_feedback_supp);
+	he_cap->ops_supp = QDF_MIN(he_cap->ops_supp, new_cap->ops_supp);
+	he_cap->amsdu_in_ampdu = QDF_MIN(he_cap->amsdu_in_ampdu,
+			new_cap->amsdu_in_ampdu);
+	he_cap->reserved1 = QDF_MIN(he_cap->reserved1,
+			new_cap->reserved1);
+
+	he_cap->dual_band = QDF_MIN(he_cap->dual_band,
+			new_cap->dual_band);
+
+	he_cap->chan_width_0 = he_cap->chan_width_0 | new_cap->chan_width_0;
+	he_cap->chan_width_1 = he_cap->chan_width_1 | new_cap->chan_width_1;
+	he_cap->chan_width_2 = he_cap->chan_width_2 | new_cap->chan_width_2;
+	he_cap->chan_width_3 = he_cap->chan_width_3 | new_cap->chan_width_3;
+	he_cap->chan_width_4 = he_cap->chan_width_4 | new_cap->chan_width_4;
+	he_cap->chan_width_5 = he_cap->chan_width_5 | new_cap->chan_width_5;
+	he_cap->chan_width_6 = he_cap->chan_width_6 | new_cap->chan_width_6;
+
+	he_cap->rx_pream_puncturing =
+		QDF_MIN(he_cap->rx_pream_puncturing,
 				new_cap->rx_pream_puncturing);
-		he_cap->device_class = QDF_MIN(he_cap->device_class,
-					       new_cap->device_class);
-		he_cap->ldpc_coding = QDF_MIN(he_cap->ldpc_coding,
-					      new_cap->ldpc_coding);
-		he_cap->he_1x_ltf_800_gi_ppdu =
-				QDF_MIN(he_cap->he_1x_ltf_800_gi_ppdu,
-					 new_cap->he_1x_ltf_800_gi_ppdu);
-		he_cap->midamble_rx_max_nsts =
-				QDF_MIN(he_cap->midamble_rx_max_nsts,
-					new_cap->midamble_rx_max_nsts);
-		he_cap->he_4x_ltf_3200_gi_ndp =
-				QDF_MIN(he_cap->he_4x_ltf_3200_gi_ndp,
-					new_cap->he_4x_ltf_3200_gi_ndp);
-		he_cap->stbc_lt_80mhz = QDF_MIN(he_cap->stbc_lt_80mhz,
-						new_cap->stbc_lt_80mhz);
-		he_cap->doppler = QDF_MIN(he_cap->doppler,
-					  new_cap->doppler);
-		he_cap->ul_mu = QDF_MIN(he_cap->ul_mu, new_cap->ul_mu);
-		he_cap->dcm_enc_tx = QDF_MIN(he_cap->dcm_enc_tx,
-					     new_cap->dcm_enc_tx);
-		he_cap->dcm_enc_rx = QDF_MIN(he_cap->dcm_enc_rx,
-					     new_cap->dcm_enc_rx);
-		he_cap->ul_he_mu = QDF_MIN(he_cap->ul_he_mu, new_cap->ul_he_mu);
-		he_cap->su_beamformer = QDF_MIN(he_cap->su_beamformer,
-						new_cap->su_beamformer);
-		he_cap->su_beamformee = QDF_MIN(he_cap->su_beamformee,
-						new_cap->su_beamformee);
-		he_cap->mu_beamformer = QDF_MIN(he_cap->mu_beamformer,
-						new_cap->mu_beamformer);
-		he_cap->bfee_sts_lt_80 = QDF_MIN(he_cap->bfee_sts_lt_80,
-						 new_cap->bfee_sts_lt_80);
-		he_cap->bfee_sts_gt_80 = QDF_MIN(he_cap->bfee_sts_gt_80,
-						 new_cap->bfee_sts_gt_80);
-		he_cap->num_sounding_lt_80 = QDF_MIN(he_cap->num_sounding_lt_80,
-						new_cap->num_sounding_lt_80);
-		he_cap->num_sounding_gt_80 = QDF_MIN(he_cap->num_sounding_gt_80,
-						new_cap->num_sounding_gt_80);
-		he_cap->su_feedback_tone16 = QDF_MIN(he_cap->su_feedback_tone16,
-						new_cap->su_feedback_tone16);
-		he_cap->mu_feedback_tone16 = QDF_MIN(he_cap->mu_feedback_tone16,
-						new_cap->mu_feedback_tone16);
-		he_cap->codebook_su = QDF_MIN(he_cap->codebook_su,
-					      new_cap->codebook_su);
-		he_cap->codebook_mu = QDF_MIN(he_cap->codebook_mu,
-					      new_cap->codebook_mu);
-		he_cap->beamforming_feedback =
-			QDF_MIN(he_cap->beamforming_feedback,
+	he_cap->device_class = QDF_MIN(he_cap->device_class,
+			new_cap->device_class);
+	he_cap->ldpc_coding = QDF_MIN(he_cap->ldpc_coding,
+			new_cap->ldpc_coding);
+	he_cap->he_1x_ltf_800_gi_ppdu =
+		QDF_MIN(he_cap->he_1x_ltf_800_gi_ppdu,
+				new_cap->he_1x_ltf_800_gi_ppdu);
+	he_cap->midamble_rx_max_nsts =
+		QDF_MIN(he_cap->midamble_rx_max_nsts,
+				new_cap->midamble_rx_max_nsts);
+	he_cap->he_4x_ltf_3200_gi_ndp =
+		QDF_MIN(he_cap->he_4x_ltf_3200_gi_ndp,
+				new_cap->he_4x_ltf_3200_gi_ndp);
+	he_cap->stbc_lt_80mhz = QDF_MIN(he_cap->stbc_lt_80mhz,
+			new_cap->stbc_lt_80mhz);
+	he_cap->doppler = QDF_MIN(he_cap->doppler,
+			new_cap->doppler);
+	he_cap->ul_mu = QDF_MIN(he_cap->ul_mu, new_cap->ul_mu);
+	he_cap->dcm_enc_tx = QDF_MIN(he_cap->dcm_enc_tx,
+			new_cap->dcm_enc_tx);
+	he_cap->dcm_enc_rx = QDF_MIN(he_cap->dcm_enc_rx,
+			new_cap->dcm_enc_rx);
+	he_cap->ul_he_mu = QDF_MIN(he_cap->ul_he_mu, new_cap->ul_he_mu);
+	he_cap->su_beamformer = QDF_MIN(he_cap->su_beamformer,
+			new_cap->su_beamformer);
+	he_cap->su_beamformee = QDF_MIN(he_cap->su_beamformee,
+			new_cap->su_beamformee);
+	he_cap->mu_beamformer = QDF_MIN(he_cap->mu_beamformer,
+			new_cap->mu_beamformer);
+	he_cap->bfee_sts_lt_80 = QDF_MIN(he_cap->bfee_sts_lt_80,
+			new_cap->bfee_sts_lt_80);
+	he_cap->bfee_sts_gt_80 = QDF_MIN(he_cap->bfee_sts_gt_80,
+			new_cap->bfee_sts_gt_80);
+	he_cap->num_sounding_lt_80 = QDF_MIN(he_cap->num_sounding_lt_80,
+			new_cap->num_sounding_lt_80);
+	he_cap->num_sounding_gt_80 = QDF_MIN(he_cap->num_sounding_gt_80,
+			new_cap->num_sounding_gt_80);
+	he_cap->su_feedback_tone16 = QDF_MIN(he_cap->su_feedback_tone16,
+			new_cap->su_feedback_tone16);
+	he_cap->mu_feedback_tone16 = QDF_MIN(he_cap->mu_feedback_tone16,
+			new_cap->mu_feedback_tone16);
+	he_cap->codebook_su = QDF_MIN(he_cap->codebook_su,
+			new_cap->codebook_su);
+	he_cap->codebook_mu = QDF_MIN(he_cap->codebook_mu,
+			new_cap->codebook_mu);
+	he_cap->beamforming_feedback =
+		QDF_MIN(he_cap->beamforming_feedback,
 				new_cap->beamforming_feedback);
-		he_cap->he_er_su_ppdu = QDF_MIN(he_cap->he_er_su_ppdu,
-						new_cap->he_er_su_ppdu);
-		he_cap->dl_mu_mimo_part_bw = QDF_MIN(he_cap->dl_mu_mimo_part_bw,
-				     new_cap->dl_mu_mimo_part_bw);
-		he_cap->ppet_present = QDF_MIN(he_cap->ppet_present,
-					       new_cap->ppet_present);
-		he_cap->srp = QDF_MIN(he_cap->srp, new_cap->srp);
-		he_cap->power_boost = QDF_MIN(he_cap->power_boost,
-					      new_cap->power_boost);
-		he_cap->he_ltf_800_gi_4x = QDF_MIN(he_cap->he_ltf_800_gi_4x,
-					       new_cap->he_ltf_800_gi_4x);
-		he_cap->er_he_ltf_800_gi_4x =
-				QDF_MIN(he_cap->er_he_ltf_800_gi_4x,
-					new_cap->er_he_ltf_800_gi_4x);
-		he_cap->he_ppdu_20_in_40Mhz_2G =
-				QDF_MIN(he_cap->he_ppdu_20_in_40Mhz_2G,
-					new_cap->he_ppdu_20_in_40Mhz_2G);
-		he_cap->he_ppdu_20_in_160_80p80Mhz =
-				QDF_MIN(he_cap->he_ppdu_20_in_160_80p80Mhz,
-					new_cap->he_ppdu_20_in_160_80p80Mhz);
-		he_cap->he_ppdu_80_in_160_80p80Mhz =
-				QDF_MIN(he_cap->he_ppdu_80_in_160_80p80Mhz,
-					new_cap->he_ppdu_80_in_160_80p80Mhz);
-		he_cap->er_1x_he_ltf_gi = QDF_MIN(he_cap->er_1x_he_ltf_gi,
-						  new_cap->er_1x_he_ltf_gi);
-		he_cap->midamble_rx_1x_he_ltf =
-				QDF_MIN(he_cap->midamble_rx_1x_he_ltf,
-					new_cap->midamble_rx_1x_he_ltf);
-		he_cap->reserved2 = QDF_MIN(he_cap->reserved2,
-					    new_cap->reserved2);
-
-		/* take intersection for MCS map */
-		mcs_1 = he_cap->rx_he_mcs_map_lt_80;
-		mcs_2 = new_cap->rx_he_mcs_map_lt_80;
-		he_cap->rx_he_mcs_map_lt_80 = HE_INTERSECT_MCS(mcs_1, mcs_2);
-		mcs_1 = he_cap->tx_he_mcs_map_lt_80;
-		mcs_2 = new_cap->tx_he_mcs_map_lt_80;
-		he_cap->tx_he_mcs_map_lt_80 = HE_INTERSECT_MCS(mcs_1, mcs_2);
-		mcs_1 = *((uint16_t *)he_cap->rx_he_mcs_map_160);
-		mcs_2 = *((uint16_t *)new_cap->rx_he_mcs_map_160);
-		*((uint16_t *)he_cap->rx_he_mcs_map_160) =
-						HE_INTERSECT_MCS(mcs_1, mcs_2);
-		mcs_1 = *((uint16_t *)he_cap->tx_he_mcs_map_160);
-		mcs_2 = *((uint16_t *)new_cap->tx_he_mcs_map_160);
-		*((uint16_t *)he_cap->tx_he_mcs_map_160) =
-						HE_INTERSECT_MCS(mcs_1, mcs_2);
-		mcs_1 = *((uint16_t *)he_cap->rx_he_mcs_map_80_80);
-		mcs_2 = *((uint16_t *)new_cap->rx_he_mcs_map_80_80);
-		*((uint16_t *)he_cap->rx_he_mcs_map_80_80) =
-						HE_INTERSECT_MCS(mcs_1, mcs_2);
-		mcs_1 = *((uint16_t *)he_cap->tx_he_mcs_map_80_80);
-		mcs_2 = *((uint16_t *)new_cap->tx_he_mcs_map_80_80);
-		*((uint16_t *)he_cap->tx_he_mcs_map_80_80) =
-						HE_INTERSECT_MCS(mcs_1, mcs_2);
-	}
+	he_cap->he_er_su_ppdu = QDF_MIN(he_cap->he_er_su_ppdu,
+			new_cap->he_er_su_ppdu);
+	he_cap->dl_mu_mimo_part_bw = QDF_MIN(he_cap->dl_mu_mimo_part_bw,
+			new_cap->dl_mu_mimo_part_bw);
+	he_cap->ppet_present = QDF_MIN(he_cap->ppet_present,
+			new_cap->ppet_present);
+	he_cap->srp = QDF_MIN(he_cap->srp, new_cap->srp);
+	he_cap->power_boost = QDF_MIN(he_cap->power_boost,
+			new_cap->power_boost);
+	he_cap->he_ltf_800_gi_4x = QDF_MIN(he_cap->he_ltf_800_gi_4x,
+			new_cap->he_ltf_800_gi_4x);
+	he_cap->er_he_ltf_800_gi_4x =
+		QDF_MIN(he_cap->er_he_ltf_800_gi_4x,
+				new_cap->er_he_ltf_800_gi_4x);
+	he_cap->he_ppdu_20_in_40Mhz_2G =
+		QDF_MIN(he_cap->he_ppdu_20_in_40Mhz_2G,
+				new_cap->he_ppdu_20_in_40Mhz_2G);
+	he_cap->he_ppdu_20_in_160_80p80Mhz =
+		QDF_MIN(he_cap->he_ppdu_20_in_160_80p80Mhz,
+				new_cap->he_ppdu_20_in_160_80p80Mhz);
+	he_cap->he_ppdu_80_in_160_80p80Mhz =
+		QDF_MIN(he_cap->he_ppdu_80_in_160_80p80Mhz,
+				new_cap->he_ppdu_80_in_160_80p80Mhz);
+	he_cap->er_1x_he_ltf_gi = QDF_MIN(he_cap->er_1x_he_ltf_gi,
+			new_cap->er_1x_he_ltf_gi);
+	he_cap->midamble_rx_1x_he_ltf =
+		QDF_MIN(he_cap->midamble_rx_1x_he_ltf,
+				new_cap->midamble_rx_1x_he_ltf);
+	he_cap->reserved2 = QDF_MIN(he_cap->reserved2,
+			new_cap->reserved2);
+
+	/* take intersection for MCS map */
+	mcs_1 = he_cap->rx_he_mcs_map_lt_80;
+	mcs_2 = new_cap->rx_he_mcs_map_lt_80;
+	he_cap->rx_he_mcs_map_lt_80 = HE_INTERSECT_MCS(mcs_1, mcs_2);
+	mcs_1 = he_cap->tx_he_mcs_map_lt_80;
+	mcs_2 = new_cap->tx_he_mcs_map_lt_80;
+	he_cap->tx_he_mcs_map_lt_80 = HE_INTERSECT_MCS(mcs_1, mcs_2);
+	mcs_1 = *((uint16_t *)he_cap->rx_he_mcs_map_160);
+	mcs_2 = *((uint16_t *)new_cap->rx_he_mcs_map_160);
+	*((uint16_t *)he_cap->rx_he_mcs_map_160) =
+		HE_INTERSECT_MCS(mcs_1, mcs_2);
+	mcs_1 = *((uint16_t *)he_cap->tx_he_mcs_map_160);
+	mcs_2 = *((uint16_t *)new_cap->tx_he_mcs_map_160);
+	*((uint16_t *)he_cap->tx_he_mcs_map_160) =
+		HE_INTERSECT_MCS(mcs_1, mcs_2);
+	mcs_1 = *((uint16_t *)he_cap->rx_he_mcs_map_80_80);
+	mcs_2 = *((uint16_t *)new_cap->rx_he_mcs_map_80_80);
+	*((uint16_t *)he_cap->rx_he_mcs_map_80_80) =
+		HE_INTERSECT_MCS(mcs_1, mcs_2);
+	mcs_1 = *((uint16_t *)he_cap->tx_he_mcs_map_80_80);
+	mcs_2 = *((uint16_t *)new_cap->tx_he_mcs_map_80_80);
+	*((uint16_t *)he_cap->tx_he_mcs_map_80_80) =
+		HE_INTERSECT_MCS(mcs_1, mcs_2);
 }
 
 void wma_print_he_cap(tDot11fIEhe_cap *he_cap)