IP Library › Granted Patent US 8,447,898
Granted Patent B2
US 8,447,898 · App. 11/261,982 · Granted May 21, 2013

Task offload to a peripheral device

Inventors: Avnish Kumar Chhabra (Redmond, WA); Aditya Dube (Redmond, WA); Sanjay Kaniyar (Redmond, WA); James T. Pinkerton (Sammamish, WA)
Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,447,898
App. No.
11/261,982
Granted
May 21, 2013
Kind
B2
Abstract

In one embodiment, to determine what tasks may be offloaded to a peripheral hardware device (e.g., to be performed in hardware on the peripheral device, rather than on the CPU(s) of the host computer), an indication from the at least one peripheral hardware device may be provided, without the peripheral hardware device first being queried to determine the task offload capabilities provided by the peripheral hardware device. In one embodiment, a large packet that includes a plurality of extension headers may be offloaded to the peripheral hardware device for segmentation. An indication of the offset where the extension headers end may be provided in connection with the large packet. In another embodiment, a packet with extension headers that come before an encryption header in the packet are not offloaded to peripheral hardware device for encryption, while packets with no extension headers before the encryption header may be offloaded.

Claims (29)

1. In a computer system comprising at least one software component and at least one peripheral hardware device, a method comprising:

determining, by the at least one software component, whether the at least one peripheral device is capable of segmenting a first Internet Protocol version 6 (“IPv6”) packet;

if it is determined that the at least one peripheral device is capable of segmenting the first IPv6 packet, then sending the first packet from the at least one software component to the at least one peripheral device;

sending, from the at least one software component to the at least one peripheral device and separate from the first IPv6 packet, a list that comprises an instruction to segment the first IPv6 packet into a plurality of smaller IPv6 packets, and that further comprises a location where extension headers end in the first IPv6 packet.

2. The method of claim 1 , wherein the at least one software component includes an operating system.

3. The method of claim 1 , wherein the at least one peripheral hardware device includes at least one network interface card.

4. The method of claim 1 , further comprising acts of:

receiving the first IPv6 packet, the list that comprises the instruction and the location, at the at least one peripheral device;

segmenting the first IPv6 packet into the plurality of the smaller IPv6 packets; and

sending the plurality of the smaller IPv6 packets over a network.

5. The method of claim 4 , wherein the act of segmenting the first IPv6 packet into the plurality of the smaller IPv6 packets further comprises:

determining a portion of the first IPv6 packet to be replicated and included in each of the smaller IPv6 packets;

determining another portion of the first IPv6 packet to be segmented into the plurality of the smaller IPv6 packets;

segmenting the another portion of the first IPv6 packet to generate the plurality of the smaller IPv6 packets;

replicating the portion of the first IPv6 packet to be replicated; and

including the replicated portion of the first IPv6 packet in each of the smaller IPv6 packets.

6. In a computer system comprising at least one software component and at least one peripheral hardware device, a method comprising:

determining, by the at least one software component, whether the at least one peripheral device is capable of segmenting a first Internet Protocol version 6 (“IPv6”) packet;

if it is determined that the at least one peripheral device is capable of segmenting the first IPv6 packet, then sending the first IPv6 packet from the at least one software component to the at least one peripheral device;

sending, from the at least one software component to the at least one peripheral device and separate from the first IPv6 packet, a list that comprises an instruction to segment the first IPv6 packet into a plurality of smaller IPv6 packets, and that further comprises a location where extension headers end in the first IPv6 packet; and

segmenting, by the at least one peripheral device, the first IPv6 packet to generate a sequence of the smaller IPv6 packets;

assigning, by the at least one peripheral device, an identifier to each packet in the sequence of the smaller IPv6 packets.

7. In a computer system comprising at least one software component and at least one peripheral hardware device, a method comprising:

determining, by the at least one software component, whether the at least one peripheral device is capable of segmenting a first Internet Protocol version 6 (“IPv6”) packet;

if it is determined that the at least one peripheral device is capable of segmenting the first IPv6 packet, then sending the first IPv6 packet from the at least one software component to the at least one peripheral device;

sending, from the at least one software component to the at least one peripheral device and separate from the first IPv6 packet, a list that comprises an instruction to segment the first IPv6 packet into a plurality of smaller IPv6 packets, and that further comprises a location where extension headers end in the first IPv6 packet; and

segmenting, by the at least one peripheral device, the first IPv6 packet to generate a sequence of the smaller IPv6 packets.

8. The method of claim 6 , wherein the peripheral hardware device is capable of performing TCP connection offload.

9. The method of claim 7 , wherein the entire available identifier namespace ranges from 0 to 65,536.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034543/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2005
From: CHHABRA, AVNISH KUMAR; DUBE, ADITYA; KANIYAR, SANJAY; PINKERTON, JIM
To: MICROSOFT CORPORATION
Reel/Frame 016780/0837 →
Continuity (1)
Related Publication 20070130352A1 · Jun 7, 2007