diff --git a/MdeModulePkg/Bus/Usb/UsbNetwork/NetworkCommon/PxeFunction.c b/MdeModulePkg/Bus/Usb/UsbNetwork/NetworkCommon/PxeFunction.c index daa30f0815..62df4e92ea 100644 --- a/MdeModulePkg/Bus/Usb/UsbNetwork/NetworkCommon/PxeFunction.c +++ b/MdeModulePkg/Bus/Usb/UsbNetwork/NetworkCommon/PxeFunction.c @@ -829,7 +829,7 @@ SetFilter ( } Nic->UsbEth->UsbEthFunDescriptor (Nic->UsbEth, &UsbEthFunDescriptor); - if ((UsbEthFunDescriptor.NumberMcFilters << 1) == 0) { + if ((UsbEthFunDescriptor.NumberMcFilters & MAC_FILTERS_MASK) == 0) { Nic->RxFilter |= PXE_OPFLAGS_RECEIVE_FILTER_ALL_MULTICAST; Nic->UsbEth->SetUsbEthPacketFilter (Nic->UsbEth, Nic->RxFilter); } else { diff --git a/MdeModulePkg/Bus/Usb/UsbNetwork/UsbCdcEcm/UsbEcmFunction.c b/MdeModulePkg/Bus/Usb/UsbNetwork/UsbCdcEcm/UsbEcmFunction.c index 63003e07ff..29f4508a38 100644 --- a/MdeModulePkg/Bus/Usb/UsbNetwork/UsbCdcEcm/UsbEcmFunction.c +++ b/MdeModulePkg/Bus/Usb/UsbNetwork/UsbCdcEcm/UsbEcmFunction.c @@ -628,7 +628,7 @@ SetUsbEthMcastFilter ( return Status; } - if ((UsbEthFunDescriptor.NumberMcFilters << 1) == 0) { + if ((UsbEthFunDescriptor.NumberMcFilters & MAC_FILTERS_MASK) == 0) { return EFI_UNSUPPORTED; } diff --git a/MdeModulePkg/Bus/Usb/UsbNetwork/UsbCdcNcm/UsbNcmFunction.c b/MdeModulePkg/Bus/Usb/UsbNetwork/UsbCdcNcm/UsbNcmFunction.c index 2a2454f466..baa2225bf8 100644 --- a/MdeModulePkg/Bus/Usb/UsbNetwork/UsbCdcNcm/UsbNcmFunction.c +++ b/MdeModulePkg/Bus/Usb/UsbNetwork/UsbCdcNcm/UsbNcmFunction.c @@ -714,7 +714,7 @@ SetUsbEthMcastFilter ( return Status; } - if ((UsbEthFunDescriptor.NumberMcFilters << 1) == 0) { + if ((UsbEthFunDescriptor.NumberMcFilters & MAC_FILTERS_MASK) == 0) { return EFI_UNSUPPORTED; } diff --git a/MdeModulePkg/Bus/Usb/UsbNetwork/UsbRndis/UsbRndisFunction.c b/MdeModulePkg/Bus/Usb/UsbNetwork/UsbRndis/UsbRndisFunction.c index b3632233ad..2c0dcae4cf 100644 --- a/MdeModulePkg/Bus/Usb/UsbNetwork/UsbRndis/UsbRndisFunction.c +++ b/MdeModulePkg/Bus/Usb/UsbNetwork/UsbRndis/UsbRndisFunction.c @@ -661,7 +661,7 @@ SetUsbRndisMcastFilter ( return Status; } - if ((UsbEthFunDescriptor.NumberMcFilters << 1) == 0) { + if ((UsbEthFunDescriptor.NumberMcFilters & MAC_FILTERS_MASK) == 0) { return EFI_UNSUPPORTED; } @@ -856,7 +856,7 @@ RndisUndiReceiveFilter ( } Nic->UsbEth->UsbEthFunDescriptor (Nic->UsbEth, &UsbEthFunDescriptor); - if ((UsbEthFunDescriptor.NumberMcFilters << 1) == 0) { + if ((UsbEthFunDescriptor.NumberMcFilters & MAC_FILTERS_MASK) == 0) { Nic->RxFilter |= PXE_OPFLAGS_RECEIVE_FILTER_ALL_MULTICAST; DEBUG ((DEBUG_INFO, "SetUsbEthPacketFilter Nic %lx Nic->UsbEth %lx ", Nic, Nic->UsbEth)); Nic->UsbEth->SetUsbEthPacketFilter (Nic->UsbEth, Nic->RxFilter); diff --git a/MdeModulePkg/Include/Protocol/UsbEthernetProtocol.h b/MdeModulePkg/Include/Protocol/UsbEthernetProtocol.h index 800945d4b3..7b9896ab3c 100644 --- a/MdeModulePkg/Include/Protocol/UsbEthernetProtocol.h +++ b/MdeModulePkg/Include/Protocol/UsbEthernetProtocol.h @@ -42,6 +42,8 @@ typedef struct _EDKII_USB_ETHERNET_PROTOCOL EDKII_USB_ETHERNET_PROTOCOL; #define NETWORK_CONNECTED 0x01 #define NETWORK_DISCONNECT 0x00 +#define MAC_FILTERS_MASK 0x7FFF + // USB Header functional Descriptor typedef struct { UINT8 FunctionLength;