diff options
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_main.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index 0ca392d59cf2..c7ec91de01c0 100644 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -4525,7 +4525,7 @@ static int hdd_set_rx_filter(hdd_adapter_t *adapter, bool action, uint8_t pattern) { int ret; - uint8_t i; + uint8_t i, j; tHalHandle handle; tSirRcvFltMcAddrList *filter; hdd_context_t* hdd_ctx = WLAN_HDD_GET_CTX(adapter); @@ -4564,19 +4564,20 @@ static int hdd_set_rx_filter(hdd_adapter_t *adapter, bool action, } vos_mem_zero(filter, sizeof(*filter)); filter->action = action; - for (i = 0; i < adapter->mc_addr_list.mc_cnt; i++) { + for (i = 0, j = 0; i < adapter->mc_addr_list.mc_cnt; i++) { if (!memcmp(adapter->mc_addr_list.addr[i], &pattern, 1)) { - memcpy(filter->multicastAddr[i], + memcpy(filter->multicastAddr[j], adapter->mc_addr_list.addr[i], sizeof(adapter->mc_addr_list.addr[i])); - filter->ulMulticastAddrCnt++; hddLog(LOG1, "%s RX filter : addr =" MAC_ADDRESS_STR, action ? "setting" : "clearing", - MAC_ADDR_ARRAY(filter->multicastAddr[i])); + MAC_ADDR_ARRAY(filter->multicastAddr[j])); + j++; } } + filter->ulMulticastAddrCnt = j; /* Set rx filter */ sme_8023MulticastList(handle, adapter->sessionId, filter); vos_mem_free(filter); |
