qcacmn: Rewrite util_gen_new_bssid functionality
qdf_do_div is not helping for modulo operation and always returns 0 in
32 bit image resulting in same base BSSID is always returned for all
the VAP's.With 64 bit image no issues are seen.
Change-Id: I50e500f57713ce080447b9a5cb1e615018222adb
CRs-Fixed: 2565183
diff --git a/umac/scan/dispatcher/src/wlan_scan_utils_api.c b/umac/scan/dispatcher/src/wlan_scan_utils_api.c
index 034237d..06f45c9 100644
--- a/umac/scan/dispatcher/src/wlan_scan_utils_api.c
+++ b/umac/scan/dispatcher/src/wlan_scan_utils_api.c
@@ -1541,22 +1541,16 @@
uint8_t mbssid_index,
uint8_t *new_bssid_addr)
{
- uint64_t bssid_tmp = 0, new_bssid = 0;
- uint64_t lsb_n;
+ uint8_t lsb_n;
int i;
for (i = 0; i < QDF_MAC_ADDR_SIZE; i++)
- bssid_tmp = bssid_tmp << 8 | bssid[i];
+ new_bssid_addr[i] = bssid[i];
- lsb_n = bssid_tmp & ((1 << max_bssid) - 1);
- new_bssid = bssid_tmp;
- new_bssid &= ~((1 << max_bssid) - 1);
- new_bssid |= qdf_do_div((lsb_n + mbssid_index), (1 << max_bssid));
+ lsb_n = new_bssid_addr[5] & ((1 << max_bssid) - 1);
- for (i = QDF_MAC_ADDR_SIZE - 1; i >= 0; i--) {
- new_bssid_addr[i] = new_bssid & 0xff;
- new_bssid = new_bssid >> 8;
- }
+ new_bssid_addr[5] &= ~((1 << max_bssid) - 1);
+ new_bssid_addr[5] |= (lsb_n + mbssid_index) % (1 << max_bssid);
}
static uint32_t util_gen_new_ie(uint8_t *ie, uint32_t ielen,