summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorqiliu <qiliu@qti.qualcomm.com>2016-03-21 14:40:21 +0800
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-03-29 11:59:19 +0530
commitc3fa000672304dbfcca784a7aa19263af0b4a30f (patch)
tree0b85713be2c47ba153fe1920c0f98989003450e8
parentf23cbc6b09b8ba0f5c574c9ffb9161424e4c9086 (diff)
qcacld-2.0: Fix set all-zero address mcast filter
There are IPv4/IPv6 filters, we just use IPv4 filter for RXFILTER-ADD/REMOVE now. Correctly update the filters from mc_addr_list. Change-Id: I3457b206fe24e2484ec1f5a6240cbd0bc4a5825a CRs-Fixed: 992500
-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);