Browse Source

[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>
tags/v1.20.1
Ignat Korchagin 5 years ago
parent
commit
ed4a82e239
1 changed files with 3 additions and 0 deletions
  1. 3
    0
      src/drivers/net/efi/snpnet.c

+ 3
- 0
src/drivers/net/efi/snpnet.c View File

299
 		( EFI_SIMPLE_NETWORK_RECEIVE_UNICAST |
299
 		( EFI_SIMPLE_NETWORK_RECEIVE_UNICAST |
300
 		  EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST |
300
 		  EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST |
301
 		  EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST ),
301
 		  EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST ),
302
+		( EFI_SIMPLE_NETWORK_RECEIVE_UNICAST |
303
+		  EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST |
304
+		  EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST ),
302
 		( EFI_SIMPLE_NETWORK_RECEIVE_UNICAST |
305
 		( EFI_SIMPLE_NETWORK_RECEIVE_UNICAST |
303
 		  EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST ),
306
 		  EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST ),
304
 		( EFI_SIMPLE_NETWORK_RECEIVE_UNICAST ),
307
 		( EFI_SIMPLE_NETWORK_RECEIVE_UNICAST ),

Loading…
Cancel
Save