summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CORE/HDD/src/wlan_hdd_main.c11
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);