Abstract: Disclosed is a network device having a shared memory, a controller for storing Ethernet frames in frame buffers using data chaining to divide up at least the larger frames over a plurality of same sized buffers in the shared memory, wherein there is a tradeoff between using 1) larger buffers capable of receiving more of or all of the larger frames (more wasted buffer space) or 2) smaller buffers requiring more data chaining (wastes processing time to reassemble the frames) and an Ethernet driver having a buffer size adaptation routine which uses an algorithm to dynamically size the buffers.