]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[snp] Try promiscuous multicast receive filter if the regular one fails
authorIgnat Korchagin <ignat@cloudflare.com>
Fri, 13 Dec 2019 16:17:58 +0000 (16:17 +0000)
committerMichael Brown <mcb30@ipxe.org>
Mon, 16 Dec 2019 10:42:09 +0000 (10:42 +0000)
Currently, if the SNP driver for whatever reason fails to enable
receive filters for multicast frames, it falls back to enabling just
unicast and broadcast filters.  This breaks some IPv6 functionality as
the network card does not respond to neighbour solicitation requests.

Some cards refuse to enable EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST, but
do support enabling EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST,
so try it before falling back to just unicast+broadcast.

Signed-off-by: Ignat Korchagin <ignat@cloudflare.com>
Split-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/net/efi/snpnet.c

index 88474b0be984c6c0fbfa6894e6f5858bfa8b9564..44bc8328288c94407fdb131a54e99faebee22c8e 100644 (file)
@@ -299,6 +299,9 @@ static int snpnet_rx_filters ( struct net_device *netdev ) {
                ( EFI_SIMPLE_NETWORK_RECEIVE_UNICAST |
                  EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST |
                  EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST ),
+               ( EFI_SIMPLE_NETWORK_RECEIVE_UNICAST |
+                 EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST |
+                 EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST ),
                ( EFI_SIMPLE_NETWORK_RECEIVE_UNICAST |
                  EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST ),
                ( EFI_SIMPLE_NETWORK_RECEIVE_UNICAST ),