Hi,
I am implementing network driver for my arm based Soc which installs SNP protocol. As per explanation of EFI_SIMPLE_NETWORK.Receive() in UEFI spec 2.6, typedef EFI_STATUS (EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE) ( IN EFI_SIMPLE_NETWORK_PROTOCOL *This OUT UINTN *HeaderSize OPTIONAL, IN OUT UINTN *BufferSize, OUT VOID *Buffer, OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, OUT UINT16 *Protocol OPTIONAL ); If there is a packet on the receive queue, and the size of the packet is smaller than BufferSize, then the contents of the packet will be placed in Buffer, and BufferSize will be updated with the actual size of the packet. If BufferSize is smaller than the received packet, then the size of the receive packet will be placed in BufferSize and EFI_BUFFER_TOO_SMALL will be returned. In my case I am receiving- first packet of size 311 (buffersize is 2048), so I updated buffersize to 311. Second packet of size 316 (buffersize is 311), so I updated buffersize to 316 and returned EFI_BUFFER_TOO_SMALL. Now if I try to assign IP to my interface using dhcp then it doesn't work. If I assign IP statically and try to ping then too it doesn't work. But if I comment out "return EFI_BUFFER_TOO_SMALL" from my SNP receive callback, then everything starts working. Please help me in understanding what am I missing in my network driver. Why it is not working if I follow UEFI spec for SNP receive callback. Thanks & Regards, Meenakshi _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel