diff options
| author | qiliu <qiliu@qti.qualcomm.com> | 2016-03-21 14:40:21 +0800 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-03-29 11:59:19 +0530 |
| commit | c3fa000672304dbfcca784a7aa19263af0b4a30f (patch) | |
| tree | 0b85713be2c47ba153fe1920c0f98989003450e8 | |
| parent | f23cbc6b09b8ba0f5c574c9ffb9161424e4c9086 (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.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); |
