Is it possible to allocate the payload buffer for UDP zero-copy receive myself? I’d like to setup memory-mapped I/O to IP within an FPGA and receive data packets directly into the block RAM.
Buffer allocation is kept in the portable layer to enable schemes to be tailored to the environment. If you provide your own implementation of the functions below you should be able to specify where the memory comes from.
You may even be able to use the first implementation on the link and provide your own implementation of vNetworkInterfaceAllocateRAMToBuffers() to define where the RAM comes from. You will find some examples in the drivers provided in the download.
@rtel was quicker than I was
Well, maybe some additional information:
Yes that should be possible. You will have to use BufferAllocation_1.c, because that allows you to define the physical memory used by all network buffers.
That is done in vNetworkInterfaceAllocateRAMToBuffers().
But I agree with Richard that you might end-up writing you own buffer allocation routines.
These are short answers, do not hesitate to ask here how to get further with it.
Thanks guys! That’s a great help