summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgnat Korchagin2019-12-13 17:17:58 +0100
committerMichael Brown2019-12-16 11:42:09 +0100
commited4a82e239dbdc3b60840d792fca9ceb269953e4 (patch)
tree5d4876c9ce87223af9e5237ed63c57fa79bbea99
parent[peerdist] Allow for the use of a hosted cache server (diff)
downloadipxe-ed4a82e239dbdc3b60840d792fca9ceb269953e4.tar.gz
ipxe-ed4a82e239dbdc3b60840d792fca9ceb269953e4.tar.xz
ipxe-ed4a82e239dbdc3b60840d792fca9ceb269953e4.zip
[snp] Try promiscuous multicast receive filter if the regular one fails
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>
-rw-r--r--src/drivers/net/efi/snpnet.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/drivers/net/efi/snpnet.c b/src/drivers/net/efi/snpnet.c
index 88474b0b..44bc8328 100644
--- a/src/drivers/net/efi/snpnet.c
+++ b/src/drivers/net/efi/snpnet.c
@@ -300,6 +300,9 @@ static int snpnet_rx_filters ( struct net_device *netdev ) {
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 ),
};