diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c index b525e11aa36d..41305f9ab77a 100644 --- a/core/mac/src/pe/lim/lim_utils.c +++ b/core/mac/src/pe/lim/lim_utils.c @@ -7324,6 +7324,7 @@ void lim_decide_he_op(tpAniSirGlobal mac_ctx, tpAddBssParams add_bss, tpPESession session) { uint32_t val; + uint8_t color; struct he_ops_network_endian *he_ops_from_ie; tDot11fIEhe_op *he_ops = &add_bss->he_op; tSirAddIeParams *add_ie = &session->addIeParams; @@ -7343,7 +7344,13 @@ void lim_decide_he_op(tpAniSirGlobal mac_ctx, tpAddBssParams add_bss, he_ops_from_ie = (struct he_ops_network_endian *) &extracted_buff[HE_OP_OUI_SIZE + 2]; - he_ops->bss_color = he_ops_from_ie->bss_color; + if (he_ops_from_ie->bss_color) { + he_ops->bss_color = he_ops_from_ie->bss_color; + } else { + cds_rand_get_bytes(0, &color, 1); + /* make sure color is within 1-63*/ + he_ops->bss_color = (color % WNI_CFG_HE_OPS_BSS_COLOR_MAX) + 1; + } he_ops->default_pe = he_ops_from_ie->default_pe; he_ops->twt_required = he_ops_from_ie->twt_required; he_ops->rts_threshold = he_ops_from_ie->rts_threshold;