Skip to content

Commit ae8bd30

Browse files
committed
Merge branch 'net-stmmac-Fix-multicast-filter-on-IPQ806x'
Jonathan McDowell says: ==================== net: stmmac: Fix multicast filter on IPQ806x This pair of patches are the result of discovering a failure to correctly receive IPv6 multicast packets on such a device (in particular DHCPv6 requests and RA solicitations). Putting the device into promiscuous mode, or allmulti, both resulted in such packets correctly being received. Examination of the vendor driver (nss-gmac from the qsdk) shows that it does not enable the multicast filter and instead falls back to allmulti. Extend the base dwmac1000 driver to fall back when there's no suitable hardware filter, and update the ipq806x platform to request this. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 06a7a37 + df43dd5 commit ae8bd30

File tree

2 files changed

+4
-0
lines changed

2 files changed

+4
-0
lines changed

drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,7 @@ static int ipq806x_gmac_probe(struct platform_device *pdev)
351351
plat_dat->has_gmac = true;
352352
plat_dat->bsp_priv = gmac;
353353
plat_dat->fix_mac_speed = ipq806x_gmac_fix_mac_speed;
354+
plat_dat->multicast_filter_bins = 0;
354355

355356
err = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);
356357
if (err)

drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,9 @@ static void dwmac1000_set_filter(struct mac_device_info *hw,
164164
value = GMAC_FRAME_FILTER_PR | GMAC_FRAME_FILTER_PCF;
165165
} else if (dev->flags & IFF_ALLMULTI) {
166166
value = GMAC_FRAME_FILTER_PM; /* pass all multi */
167+
} else if (!netdev_mc_empty(dev) && (mcbitslog2 == 0)) {
168+
/* Fall back to all multicast if we've no filter */
169+
value = GMAC_FRAME_FILTER_PM;
167170
} else if (!netdev_mc_empty(dev)) {
168171
struct netdev_hw_addr *ha;
169172

0 commit comments

Comments
 (0)