Dynamic memory allocation between inbound and outbound buffers in a protocol handler
First Claim
1. An apparatus for processing data packets comprising:
- a first memory buffer capable of receiving incoming data packets;
circuitry capable of generating outgoing data packets from the received incoming data packets or from a host system interface;
a second memory buffer capable of transmitting the generated outgoing data packets;
circuitry capable of dynamically sharing memory from the first memory buffer with the second memory buffer, or from the second memory buffer with the first memory buffer;
wherein said first memory buffer and said second memory buffer each is divided into blocks and said blocks are sized to be smaller than a maximum frame size of the data packet to be processed, and said blocks are managed as one of a free list or as a linked list of blocks.
3 Assignments
0 Petitions
Accused Products
Abstract
An apparatus and method for dynamically allocating memory between inbound and outbound paths of a networking protocol handler so as to optimize the ratio of a given amount of memory between the inbound and outbound buffers is presented. Dedicated but sharable buffer memory is provided for both the inbound and outbound processors of a computer network. Buffer memory is managed so as to dynamically alter what portion of memory is used to receive and store incoming data packets or to transmit outgoing data packets. Use of the present invention reduces throttling of data rate transmissions and other memory access bottlenecks associated with conventional fixed-memory network systems.
52 Citations
11 Claims
-
1. An apparatus for processing data packets comprising:
-
a first memory buffer capable of receiving incoming data packets;
circuitry capable of generating outgoing data packets from the received incoming data packets or from a host system interface;
a second memory buffer capable of transmitting the generated outgoing data packets;
circuitry capable of dynamically sharing memory from the first memory buffer with the second memory buffer, or from the second memory buffer with the first memory buffer;
wherein said first memory buffer and said second memory buffer each is divided into blocks and said blocks are sized to be smaller than a maximum frame size of the data packet to be processed, and said blocks are managed as one of a free list or as a linked list of blocks. - View Dependent Claims (2)
-
-
3. An apparatus for processing data packets comprising:
-
a first memory buffer capable of receiving incoming data packets;
circuitry capable of generating outgoing data packets from the received incoming data packets or from a host astern interface;
a second memory buffer capable of transmitting the generated outgoing data packets;
circuitry capable of dynamically sharing memory from the first memory buffer with the second memory buffer, or from the second memory buffer with the first memory buffer; and
a processor thread for managing said blocks and for determining an amount of free space available in said first memory buffer and said second memory buffer, wherein said first memory buffer and said second memory buffer each is divided into blocks and said blocks are sized to be smaller than a maximum frame size of the data racket to be processed.
-
-
4. An apparatus for processing data packets comprising:
-
a first memory buffer capable of receiving incoming data packets;
circuitry capable of generating outgoing data packets from the received incoming data packets or from a host system interface;
a second memory buffer capable of transmitting the generated outgoing data packets;
circuitry capable of dynamically sharing memory from the first memory buffer with the second memory buffer, or from the second memory buffer with the first memory buffer;
an inbound processor, with logic, associated with said first memory buffer, wherein said first memory buffer is dedicated to said inbound processor; and
an outbound processor, with logic, associated with said second memory buffer, wherein said second memory buffer is dedicated to said outbound processor. - View Dependent Claims (5)
-
-
6. A method of processing data packets employing dynamic memory allocation between inbound and outbound memory buffers, said method comprising the steps of:
-
receiving incoming data packets via a first memory buffer;
generating outgoing data packets from said received data packets or from a host system interface;
transmitting said outgoing data packets generated via a second memory buffer;
dynamically allocating memory between said first memory buffer and said second memory buffer for optimally receiving said incoming data packets and for storing and transmitting said outgoing data packets;
providing an inbound processor, with logic, wherein said first memory buffer is dedicated to said inbound processor;
providing an outbound processor, with logic, wherein said second memory buffer is dedicated to said outbound processor; and
wherein the memory in said inbound memory buffer and said outbound memory buffer is sharable. - View Dependent Claims (7, 8, 9, 10, 11)
-
Specification