Description
Is your feature request related to a problem? Please describe.
Some ethernet drivers have distinct memory pools for rx and tx DMA buffers. Implementing a zero-copy NetworkInterface is complicated by this library's assumption that all memory descriptors are homogenous.
Describe the solution you'd like
Have separate buffer allocators for tx and rx. For example: vNetworkInterfaceAllocateRAMTo[TX|RX]Buffers
and vRelease[TX|RX]NetworkBufferAndDescriptor
in a BufferAllocation_3.c
.
Describe alternatives you've considered
Marking buffers as being tx or rx buffers may increase backwards compatibility for this change but it will also complicate implementations; introducing "if tx else" branching instructions in applications instead of just linking tx and rx buffer handling paths through the code at compile-time.
Additional context
This problem encountered when using newer NXP GMAC IP in the S32K family of MCUs.