Method and apparatus for buffering data within stations of a communication network
First Claim
1. A method of buffering data packets using a data communication controller which is interfaced with a processor and includes a control means for accessing a communication medium, said method comprising the steps:
- (a) providing a data packet storage means managed by said data communication controller independent of said processor, said data packet storage means including a plurality of data page storage locations for storage of one or more data packets;
(b) said data communication controller assigning a packet number to a data packet to be stored in one or more of said data page storage locations;
(c) said data communication controller storing said data packet in one or more of said data page storage locations, by(1) said processor generating a first set of linear addresses ranging from a first minimum address value to a first maximum address value, and(2) said data communication controller using said packet number assigned to said data packet in step (b) and said first set of linear addresses to generate a corresponding set of physical addresses which define the physical location of said one or more data page storage locations in said data packet storage means;
(d) said data communication controller maintaining a packet number queue in said data communication controller, for storing one or more of said packet numbers, each said packet number corresponding to one said stored data packet;
(e) said data communication controller storing in said packet number queue, said packet number assigned to said stored data packet in step (b);
(f) sad data communication controller retrieving said stored packet number from said packet number queue; and
(g) said data communication controller retrieving said data packet stored in said one or more data page storage locations during step (c), by(1) said control means generating a second set of linear addresses ranging from a second minimum address value to a second maximum address value, and(2) said data communication controller using said packet number assigned to said data packet in step (b) and said set of linear addresses to generate a corresponding set of physical addresses which define the physical location of said one or more data page storage locations in said data packet storage means.
4 Assignments
0 Petitions
Accused Products
Abstract
Method and apparatus are disclosed for buffering data packets in a data communication controller. The communication controller is interfaced with a host processor and includes a control unit for accessing a communication medium. Each data packet to be transmitted or received is assigned a packet number. Packet number assignment is carried out by a memory management unit within the communication controller which dynamically allocates to each assigned packet number one or more pages in a data packet buffer memory for the storage of the corresponding data packet. Upon issuing the assigned packet number, the physical addresses of the allocated pages of data packet buffer memory storage space are generated in a manner transparent to both the host processor and the control unit. Upon completion of each data packet loading operation, the corresponding packet number is stored in a packet number queue maintained for subsequent retrieval in order to generate the physical addresses at which the corresponding data packet has been stored. Also disclosed is a mechanism for automatically generating transmit interrupts to the host processor upon the completion of any preselected number of data packet transmissions determined by the host processor.
-
Citations
45 Claims
-
1. A method of buffering data packets using a data communication controller which is interfaced with a processor and includes a control means for accessing a communication medium, said method comprising the steps:
-
(a) providing a data packet storage means managed by said data communication controller independent of said processor, said data packet storage means including a plurality of data page storage locations for storage of one or more data packets; (b) said data communication controller assigning a packet number to a data packet to be stored in one or more of said data page storage locations; (c) said data communication controller storing said data packet in one or more of said data page storage locations, by (1) said processor generating a first set of linear addresses ranging from a first minimum address value to a first maximum address value, and (2) said data communication controller using said packet number assigned to said data packet in step (b) and said first set of linear addresses to generate a corresponding set of physical addresses which define the physical location of said one or more data page storage locations in said data packet storage means; (d) said data communication controller maintaining a packet number queue in said data communication controller, for storing one or more of said packet numbers, each said packet number corresponding to one said stored data packet; (e) said data communication controller storing in said packet number queue, said packet number assigned to said stored data packet in step (b); (f) sad data communication controller retrieving said stored packet number from said packet number queue; and (g) said data communication controller retrieving said data packet stored in said one or more data page storage locations during step (c), by (1) said control means generating a second set of linear addresses ranging from a second minimum address value to a second maximum address value, and (2) said data communication controller using said packet number assigned to said data packet in step (b) and said set of linear addresses to generate a corresponding set of physical addresses which define the physical location of said one or more data page storage locations in said data packet storage means. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method of buffering data packets using a data communication controller which is interfaced with a processor and which includes a control means for accessing a communication medium, said method comprising the steps:
-
(a) providing a data packet storage means managed by said data communication controller independent of said processor, said data packet storage means including a plurality of data page storage locations for storing one or more transmit data packets and one or more receive data packets; (b) said data communication controller maintaining a transmit packet number queue, for storing one or more packet numbers, each said packet number stored in said transmit packet number queue corresponding to one said transmit data packet; (c) said data communication controller maintaining a receive packet number queue for storing one or more packet numbers, each said packet number stored in said receive packet number queue corresponding to one said receive data packet; (d) said data communication controller assigning a first packet number to a transmit data packet to be stored in one or more of said data page storage locations; (e) said data communication controller storing said transmit data packet in one or more of said data page storage locations by (1) said processor generating a first set of linear addresses ranging from a minimum address value to a maximum address value, and (2) said data communication controller using said first packet number assigned to said transmit data packet in step (d) and said first set of linear addresses so as to generate a first set of physical addresses which defines the physical location of said one or more data page storage locations in which said transmit data packet is stored in said data packet storage means; (f) said data communication controller storing in said transmit packet number queue, said first packet number assigned to said stored transmit data packet during step (d); (g) said data communication controller assigning a second packet number to a receive data packet to be stored in one or more said data storage locations; (h) said data communication controller storing said receive data packet in one or more of said data page storage locations, by (1said processor generating a second set of linear addresses ranging from a minimum address value to a maximum address value, and (2) said data communication controller using said second packet number assigned to said receive data packet in step (g) and said second set of linear addresses so as to generate a second set of physical addresses which defines the physical location of said one or more data page storage locations in which said receive data packet is stored in said data packet storage means; (i) said data communication controller storing in said receive data packet number queue, said second packet number assigned to said received data packet during step (g); (j) said data communication controller retrieving said first packet number from said transmit packet number queue; (k) said data communication controller retrieving said transmit data packet from said data packet storage means, by (1) said control means generating said first set of linear addresses, and (2) said data communication controller using said first packet number assigned to said transmit data packet in step (d) and said first set of linear addresses so as to generate said first set of physical addresses which defines the physical location of said one or more data page storage locations in which said transmit data packet is stored in said data packet storage means, and after retrieving said transmit data packet, said data communication controller providing said retrieved transmit data packet to said control means; (l) said data communication controller retrieving said second packet number from said receive packet number queue; and (m) said data communication controller retrieving said receive data packet from said data packet storage means, by (1) said processor generating said second set of linear addresses, and (2) said data communication controller using said second packet number assigned to said receive transmit data packet in step (g) and said second set of linear addresses so as to generate said second set of physical addresses which defines the physical location of said one or more data page storage location in which said receive data packet is stored in said data packet storage means; and
providing said retrieved receive data packet to said processor. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A data communication controller for interfacing with a processor and for operably associating with a data packet storage means having a plurality of data page storage locations for storing one or more data packets, said data communication controller comprising:
-
a control means for accessing a communication medium; memory management means for managing said data packet storage means independent of said processor by assigning a packet number to each data packet to be stored in said data packet storage means and allocating one or more of said data page storage locations for storing each said data packet to be stored; linear address bit receiving means for receiving one or more sets of linear address bits from said processor or said control means, each said set of linear address bits corresponding to one said data packet to be stored and ranging from a minimum address value to a maximum address value; physical address generating means for generating a set of physical addresses for each data packet to be stored in said data packet storage means, by using the data packet number assigned to said data packet to be stored and said set of linear address bits corresponding to said data packet to be stored, each set of physical addresses corresponding to one or more data page storage locations in said data packet storage means and providing access to said one or more data page storage locations; data packet transfer means for transferring data packets between said processor and said data packet storage means, and for transferring data packets between said data packet storage means and said control means; a packet number queue for storing a plurality packet numbers, each said packet number stored in said packet number queue being accessible by said processor and said control means; and packet number transfer means for transferring said packet numbers from said packet number queue and at least one of said control means and said processor, and for transferring packet numbers from said memory management means to at least one of said control unit and said processor. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 38, 44, 45)
-
-
35. A data communication controller for interfacing with a processor and operably associating with a data packet storage means having a plurality of data page storage locations for storing one or more transmit data packets and one or more receive data packets, said data communication controller comprising;
-
control unit for accessing a communication medium; memory management means for managing said data packet storage means independent of said processor by assigning a packet number to each said transmit data packet and each receive data packet to be stored in said data packet storage means and allocating one or more data page storage locations for each said transmit data packet and said receive data packet to be stored; linear address bit receiving means for receiving one or more sets of linear address bits from said processor or said control means, each said set of linear address bits received from said processor corresponding to one said transmit data packet and ranging from a minimum address value to a maximum address value, and each said set of linear address bits received rom said control unit corresponding to one said receiving data packet and ranging from a minimum address value to a maximum address value; physical address generating means for generating a set of physical addresses for each data packet to be stored in said data packet storage means, by using the data packet number assigned to said corresponding data packet to be stored and said set of linear address bits corresponding to said data packet to be stored, each said set of physical addresses corresponding to one or more data page storage locations and providing access to said one or more data page storage locations; data packet transfer means for transferring one or more said transmit data packets between said processor and said data packet storage means and between said data packet storage means and said control means, and for transferring one or more said receive data packets between said control means and said data packet storage means and from between said data packet storage means and said processor; transmit packet number queue for storing one or more packet numbers, each said packet number stored in said transmit packet number queue corresponding to one said transmit data packet stored in said data packet storage means; receive packet number queue for storing one or more packet numbers, each said packet number stored in said receive packet number queue corresponding to one said receive data packet stored in said data packet storage means; and packet number transfer means for transferring packet numbers from said memory management unit to said processor, for transferring packet numbers from said transmit packet number queue to said control means, for transferring packet numbers from said memory management to said control means, and for transferring packet numbers from said receive packet number queue to said processor. - View Dependent Claims (36, 37, 39, 40, 41, 42, 43)
-
Specification