diff options
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_main.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index bd5c69dd5311..8370e3c1535b 100644 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -9874,12 +9874,20 @@ static void __hdd_set_multicast_list(struct net_device *dev) "%s: mc_count : %u, max_mc_addr_list : %d", __func__, mc_count, pHddCtx->max_mc_addr_list); + if (mc_count > pHddCtx->max_mc_addr_list) { + hddLog(VOS_TRACE_LEVEL_INFO, + "%s: No free filter available; allow all multicast frames", + __func__); + pAdapter->mc_addr_list.mc_cnt = 0; + return; + } + netdev_for_each_mc_addr(ha, dev) { hddLog(VOS_TRACE_LEVEL_INFO, FL("ha_addr[%d] "MAC_ADDRESS_STR), i, MAC_ADDR_ARRAY(ha->addr)); - if (i == mc_count || i == pHddCtx->max_mc_addr_list) + if (i == mc_count) break; /* * Skip following addresses: |
