Patent ID: 8161205

Claim:
A packet buffer read system comprising: a descriptor status array having n locations, each said location having the value free or used; a packet buffer comprising a descriptor memory having said n storage locations and a data segment memory having said n storage locations; a plurality said n of unique packet memory slots, each said packet memory slot having a unique one of said descriptor status array locations, a unique one of said descriptor memory locations, and a unique one of said packet data segment memory locations, said packet memory slots thereby uniquely addressable by each said descriptor status array location; an Rx_Done signal formed by comparing a host_read_ptr and a MAC_write_ptr, said Rx_Done being asserted when said host_read_ptr and said MAC_write_ptr are equal and not asserted at all other times; a Tx_Done signal formed by comparing a host_write_ptr and a MAC_read_ptr, said Tx_Done being asserted when said host_write_ptr and said MAC_read_ptr are equal and not asserted at all other times; a host Rx controller including said host_read_ptr pointing to one of said packet memory slots and iteratively performing the following steps while said Rx_Done is not asserted: a first step of getting Rx payload data from said data segment memory slot pointed to by said host_read_ptr; a second step of getting a next address from said descriptor memory slot pointed to by said host_read_ptr; a third step of setting the descriptor status array slot pointed to by said host_read_ptr to free; a fourth step of setting the host_read_ptr to the value said next address; a MAC Tx controller including said MAC_read_ptr pointing to one of said packet memory slots and iteratively performing the following steps while said Tx_Done is not asserted: a first step of getting Tx payload data from said data segment memory slot pointed to by said MAC_read_ptr; a second step of getting a next address from said descriptor memory slot pointed to by said MAC_read_ptr; a third step of setting the descriptor status array slot pointed to by said MAC_read_ptr to free; a fourth step of setting the MAC_read_ptr to the value said next address.