IP Library › Granted Patent US 8,868,517
Granted Patent B2
US 8,868,517 · App. 13/434,346 · Granted Oct 21, 2014

Scatter gather list for data integrity

Inventors: Carl E. Gygi (Colorado Springs, CO); Craig R. Chafin (Colorado Springs, CO); Brian J. Varney (Colorado Springs, CO); Brian K. Einsweiler (Colorado Springs, CO); Luke E. McKay (Rose Hill, KS)
Assignee: LSI 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,868,517
App. No.
13/434,346
Granted
Oct 21, 2014
Kind
B2
Abstract

A system and method for improving message passing between a computer and peripheral devices is disclosed. The system and method for improving message passing between a computer and peripheral devices incorporate data checking on the command/message data and each scatter gather list element. The method in accordance with the present disclosure enables a peripheral device to check the integrity of the message and ownership of the scatter gather list element before the data is processed.

Claims (69)

1. A method for generating a protected message with protected scatter gather list, the method comprising:

generating command data, the command data generated by a computer system for delivery to a peripheral device;

calculating a command protection value for the command data;

generating a scatter gather list element;

calculating a protection value for the scatter gather list element utilizing the command protection value for the command data as a seed value; and

sending the command data, the command protection value, the scatter gather list element and the protection value for the scatter gather list element to the peripheral device, wherein said calculating the command protection value and said calculating the protection value for the scatter gather list element match with at least one protection algorithm utilized by the peripheral device for calculating an expected command protection value and an expected protection value for the scatter gather list element, allowing the peripheral device to validate the command data and the scatter gather list element based on the command protection value and the protection value for the scatter gather list element and to perform a data operation specified in the scatter gather list element only when the command data and the scatter gather list element are validated.

2. The method of claim 1 , further comprising:

determining whether to generate an additional scatter gather list element;

generating the additional scatter gather list element;

calculating a protection value for the additional scatter gather list element utilizing the protection value for the first-mentioned scatter gather list element as the seed value; and

sending the command data, the command protection value, the scatter gather list elements and the protection values for the scatter gather list elements to the peripheral device.

3. The method of claim 1 , wherein the command data, the command protection value, the scatter gather list element and the protection value for the scatter gather list element are sent to the peripheral device via a system bus.

4. The method of claim 1 , wherein an application tag is utilized as an initial seed for calculating the command protection value for the command data.

5. A method for processing a message with scatter gather list, the method comprising:

receiving the message with scatter gather list from a computer system;

obtaining command data from the received message;

calculating an expected command protection value for the command data;

obtaining a command protection value from the received message;

determining whether the expected command protection value matches the command protection value obtained from the received message;

verifying data integrity of the scatter gather list when the expected command protection value matches the command protection value obtained from the received message, further comprising:

obtaining a scatter gather list element from the scatter gather list;

calculating an expected protection value for the scatter gather list element;

obtaining a protection value for the scatter gather list element from the received message;

determining whether the expected protection value for the scatter gather list element matches the protection value for the scatter gather list element obtained from the received message; and

performing a data operation specified in the scatter gather list element when the expected protection value for the scatter gather list element matches the protection value for the scatter gather list element obtained from the received message.

6. The method of claim 5 , wherein an application tag is utilized as an initial seed for calculating the expected command protection value for the command data.

7. The method of claim 5 , wherein the command protection value for the command data is utilized as a seed for calculating the expected protection value for the scatter gather list element.

8. The method of claim 5 , further comprising:

executing the command when the scatter gather list is verified successfully.

9. The method of claim 5 , further comprising:

halting the execution when the expected command protection value differs from the command protection value obtained from the received message.

10. The method of claim 5 , further comprising:

halting the execution and data operation when the expected protection value for the scatter gather list element differs from the protection value for the scatter gather list element obtained from the received message.

11. The method of claim 5 , further comprising:

obtaining an additional scatter gather list element from the scatter gather list;

calculating an expected protection value for the additional scatter gather list element;

obtaining a protection value for the additional scatter gather list element from the received message; and

determining whether the expected protection value for the additional scatter gather list element matches the protection value for the additional scatter gather list element obtained from the received message; and

performing an additional data operation specified in the additional scatter gather list element when the expected protection value for the additional scatter gather list element matches the protection value for the additional scatter gather list element obtained from the received message.

12. The method of claim 11 , further comprising:

halting the execution and data operation when the expected protection value for the additional scatter gather list element differs from the protection value for the additional scatter gather list element obtained from the received message.

13. The method of claim 11 , wherein the protection value for the first-mentioned scatter gather list element is utilized as the seed for calculating the expected protection value for the additional scatter gather list element.

14. A system, comprising:

a computer;

a peripheral device in communication with the computer via a system bus;

wherein the computer is configured for generating a message for delivery to the peripheral device, the message being generated according to the steps of:

generating command data;

calculating a command protection value for the command data;

generating at least one scatter gather list element;

calculating a protection value for the at least one scatter gather list element; and

sending the command data, the command protection value, the at least one scatter gather list element and the protection value for the at least one scatter gather list element to the peripheral device; and

wherein the peripheral device is configured for processing the message received from the computer, the message being processed according to the steps of:

obtaining the command data from the received message;

verifying data integrity of the command data;

obtaining the at least one scatter gather list element;

verifying data integrity of the at least one scatter gather list element; and

performing a data operation specified in the at least one scatter gather list element when the integrity of the at least one scatter gather list element is verified.

15. The system of claim 14 , wherein an application tag is utilized as an initial seed for calculating the command protection value for the command data.

16. The system of claim 14 , wherein the protection value for one of the at least one scatter gather list element is utilized as a seed for calculating the protection value for a subsequent one of the at least one scatter gather list element.

17. The system of claim 14 , wherein verifying data integrity of the command data comprises:

calculating an expected command protection value for the command data;

obtaining a command protection value from the received message; and

determining whether the expected command protection value matches the command protection value obtained from the received message.

18. The system of claim 17 , wherein the peripheral device is further configured for halting the execution when the expected command protection value differs from the command protection value obtained from the received message.

19. The system of claim 14 , wherein verifying data integrity of the at least one scatter gather list element comprises:

calculating an expected protection value for the at least one scatter gather list element;

obtaining a protection value for the at least one scatter gather list element from the received message;

determining whether the expected protection value for the at least one scatter gather list element matches the protection value for the scatter gather list element obtained from the received message.

20. The system of claim 19 , wherein the peripheral device is further configured for halting the execution and data operation when the expected protection value for the at least one scatter gather list element differs from the protection value for the at least one scatter gather list element obtained from the received message.

Assignments (9)
CORRECTIVE ASSIGNMENT TO CORRECT THE PATENT NUMBER 9,385,856 TO 9,385,756 PREVIOUSLY RECORDED AT REEL: 47349 FRAME: 001. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 22, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 051144/0648 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE PREVIOUSLY RECORDED ON REEL 047229 FRAME 0408. ASSIGNOR(S) HEREBY CONFIRMS THE THE EFFECTIVE DATE IS 09/05/2018. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047349/0001 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047229/0408 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035390/0388 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2012
From: GYGI, CARL E.; CHAFIN, CRAIG R.; VARNEY, BRIAN J.; EINSWEILER, BRIAN K.; MCKAY, LUKE E.
To: LSI CORPORATION
Reel/Frame 027957/0466 →
Continuity (1)
Related Publication 20130262398A1 · Oct 3, 2013