Virtual memory protocol segmentation offloading
US-8964785-B2 · Feb 24, 2015 · US
US9319490B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9319490-B2 |
| Application number | US-201414568499-A |
| Country | US |
| Kind code | B2 |
| Filing date | Dec 12, 2014 |
| Priority date | Jun 9, 2008 |
| Publication date | Apr 19, 2016 |
| Grant date | Apr 19, 2016 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Methods and systems for a more efficient transmission of network traffic are provided. According to one embodiment, payload data originated by a user process running on a host processor of the computer system is fetched by an interface of the computer system by performing direct virtual memory addressing of a user memory space of a system memory of the computer system on behalf of a network processor of the computer system. The direct virtual memory addressing maps a physical address of the payload data to a virtual address. The payload data is segmented by the network processor across one or more packets.
Opening claim text (preview).
What is claimed is: 1. A method of performing segmentation offloading, the method comprising: fetching, by an interface of a computer system, payload data originated by a user process running on a host processor of the computer system by performing direct virtual memory addressing of a user memory space of a system memory of the computer system on behalf of a network processor of the computer system, wherein said direct virtual memory addressing maps a physical address of the payload data to a virtual address; segmenting, by the network processor, the payload data across one or more packets, wherein said segmenting comprises creating one or more Transmission Control Protocol (TCP) packets by performing TCP segmentation; and storing a buffer descriptor in the system memory, the buffer descriptor containing (i) information indicative of a starting address of a payload buffer in the system memory containing at least a portion of the payload data and (ii) information indicative of whether the starting address is virtual or physical. 2. The method of claim 1 , wherein the buffer descriptor further contains information indicative of a virtual memory base address of a page directory and wherein said performing direct virtual memory addressing of a user memory space further comprises using a directory entry of the page directory identified by the starting address to translate the starting address to a physical address within the user memory space associated with the payload buffer. 3. The method of claim 1 , wherein the payload buffer is distributed among a plurality of payload buffers stored in noncontiguous physical locations of the system memory. 4. The method of claim 3 , wherein said performing direct virtual memory addressing of the user memory space further includes a scatter-gather process in which the payload data is retrieved from the plurality of payload buffers. 5. The method of claim 1 , wherein the buffer descriptor further contains information indicative of whether the starting address is a virtual address or a physical address within the user address space. 6. A non-transitory program storage device readable by one or more processors of a computer system, embodying a program of instructions executable by the one or more processors to perform a method of segmentation offloading, the method comprising: fetching, by an interface of the computer system, payload data originated by a user process running on a host processor of the computer system by performing direct virtual memory addressing of a user memory space of a system memory of the computer system on behalf of a network processor of the computer system, wherein said direct virtual memory addressing maps a physical address of the payload data to a virtual address; segmenting, by the network processor, the payload data across one or more packets, wherein said segmenting comprises creating one or more Transmission Control Protocol (TCP) packets by performing TCP segmentation; and storing a buffer descriptor in system memory, the buffer descriptor containing (i) information indicative of a starting address of a payload buffer in the system memory containing at least a portion of the payload data and (ii) information indicative of whether the starting address is virtual or physical. 7. The non-transitory program storage device of claim 6 , wherein the buffer descriptor further contains information indicative of a virtual memory base address of a page directory and wherein said performing direct virtual memory addressing of a user memory space further comprises using a directory entry of the page directory identified by the starting address to translate the starting address to a physical address within the user memory space associated with the payload buffer. 8. The non-transitory program storage device of claim 6 , wherein the payload buffer is distributed among a plurality of payload buffers stored in noncontiguous physical locations of the system memory. 9. The non-transitory program storage device of claim 8 , wherein said performing direct virtual memory addressing of the user memory space further includes a scatter-gather process in which the payload data is retrieved from the plurality of payload buffers. 10. The non-transitory program storage device of claim 6 , wherein the buffer descriptor further contains information indicative of whether the starting address is a virtual address or a physical address within the user address space. 11. A method comprising: fetching, by an interface of a computer system, payload data originated by a user process running on a host processor of the computer system by performing direct virtual memory addressing of a user memory space of a system memory of the computer system on behalf of a network processor of the computer system, wherein said direct virtual memory addressing maps a physical address of the payload data to a virtual address; segmenting, by the network processor, the payload data across one or more packets, wherein said segmenting comprises creating one or more Transmission Control Protocol (TCP) packets by performing TCP segmentation; and storing a plurality of buffer descriptors in the system memory, wherein the plurality of buffer descriptors include: a first buffer descriptor of the plurality of buffer descriptors containing (i) information indicative of a first starting address of a first payload buffer in the system memory containing a first portion of the payload data and (ii) information indicative of whether the first starting address is virtual or physical; and a second buffer descriptor of the plurality of buffer descriptors containing (i) information indicative of a second starting address of a second payload buffer in the system memory containing a second portion of the payload data and (ii) information indicative of whether the second starting address is virtual or physical. 12. The method of claim 11 , wherein the plurality of buffer descriptors further contain information indicative of a virtual memory base address of a page directory and wherein said performing direct virtual memory addressing of a user memory space further comprises using directory entries of the page directory identified by the first starting address and the second starting address, respectively, to translate the starting address to a first physical address within the user memory space associated with the first payload buffer and a second physical address within the user memory space associated with the second payload buffer. 13. The method of claim 11 , wherein the first payload buffer and the second payload buffer are stored in noncontiguous physical locations of the system memory. 14. The method of claim 13 , wherein said performing direct virtual memory addressing of the user memory space further includes a scatter-gather process in which the payload data is retrieved from the plurality of payload buffers. 15. A non-transitory program storage device readable by one or more processors of a computer system, embodying a program of instructions executable by the one or more processors to perform a method of segmentation offloading, the method comprising: fetching, by an interface of the computer system, payload data originated by a user process running on a host processor of the computer system by performing direct virtual memory addressing of a user memory space of a system memory of the computer system on behalf of a network processor of the computer system, wherein said direct virtual memory addressing maps a physical address of the payload data to a virtual address; segmenting, by the network processor, the payload data a
for peripheral access to main memory, e.g. direct memory access [DMA] · CPC title
characterised by scheduling criteria · CPC title
IP fragmentation; TCP segmentation · CPC title
Virtual queuing · CPC title
Multi-level translation tables · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.