IP Library Granted Patent US 7,676,814
Granted Patent B2
US 7,676,814 · App. 10/809,229 · Granted Mar 9, 2010

Four layer architecture for network device drivers

Assignee: GlobalFoundries Inc.
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 7,676,814
App. No.
10/809,229
Granted
Mar 9, 2010
Kind
B2
Abstract

The present invention is a four layer architecture that includes reusable components that can be used in varied operating environments and with varied network devices. The architecture includes an operating system dependent layer, an operating system independent layer, a media independent layer, and a media dependent layer. The operating system dependent layer can vary for differing operating system. In contrast, the operating system independent layer is identical or substantially similar for differing operating systems. Similarly, the media independent layer is identical or substantially similar for different network devices (e.g., a family or group of network devices). The media dependent layer can vary according to differing and varied network devices.

Claims (34)

1. A computer readable storage medium comprising executable instructions that make up a layered network device driver system configured to interface with a host computer system having an operating system, memory, and a processor, the layered network device driver system comprising:

an operating system dependent module in the network device driver system configured to communicate in an operating system dependent format to initiate sending of transmit data and to provide received data from or to the memory associated with the host computer system, respectively;

an operating system independent module in the network device driver system configured to communicate with the operating system dependent module and perform processing on the transmit data and the received data;

a network device independent module in the network device driver system and comprising encoding that is compatible across multiple network devices, the network device independent module configured to place the transmit data in one or more transmit descriptor rings and obtain the received data from one or more receive descriptor rings that reside in the host computer system; and

a network device dependent module in the network device driver system and configured to communicate with the network device independent module and with one or more network devices and control the one or more network devices to send the transmit data from the one or more transmit descriptor rings and to receive the received data into the one or more receive descriptor rings,

wherein the network device independent module is operable to selectively append the transmit or receive data with optional parameters; and

wherein the network device dependent module is operable to verify that the optional parameters comply with capabilities of the network device.

2. The computer readable storage medium of claim 1 , wherein the network device dependent module is operable to configure and initialize one or more registers of the network device.

3. The computer readable storage medium of claim 1 , wherein the operating system dependent module is operable to receive a packet to be transmitted from the operating system in an operating system specific format.

4. The system of claim 3 , wherein the operating system dependent module is further operable to convert the packet into an array based data structure, wherein the data structure comprises virtual pointers to one or more data buffers.

5. The system of claim 4 , wherein the operating system independent module is operable to convert the virtual pointers of the array based data structure into physical pointers, and operable to communicate with a plurality of operating system dependent modules associated with a respective operating system.

6. The system of claim 5 , wherein the network device independent module is operable to attach the one or more data buffers to a transmit descriptor, wherein the transmit descriptor is of the one or more transmit descriptor rings.

7. The computer readable storage medium of claim 1 , wherein the network device independent module is operable to access one or more data buffers of a packet associated with a received frame along with optional information, and

operable to communicate with a plurality of network device dependent modules associated with a respective network device.

8. The computer readable storage medium of claim 7 , wherein the network device dependent module is operable to analyze the packet and optional information for status, and

determine if the packet is less than a predetermined size limit with respect to a coalescing size, and if so, coalesce the packet and buffers with one or more other packets and buffers.

9. The computer readable storage medium of claim 8 , wherein the operating system dependent module analyzes the packet for errors.

10. The computer readable storage medium of claim 9 , wherein the operating system dependent module is further operable to provide the packet to the operating system.

11. The computer readable storage medium of claim 1 , further comprising a message block format for transferring packets between the operating system and the operating system dependent module for receive operations, the message block comprising:

a mandatory parameter that includes one or more virtual pointers to one or more data buffers that contain data for a received frame; and

an optional parameter pointer that points to one or more optional parameters.

12. The system of claim 11 , wherein the one or more optional parameters respectively include a type, a size, and one or more parameters.

13. A method of transmitting a frame using a host computer system, the method comprising:

obtaining a packet to be transmitted from an operating system in the host computer system;

converting the packet into an array based data structure that is independent of the operating system;

converting one or more virtual memory addresses of the array based data structure that reference one or more data buffers in a host memory that store the packet into one or more physical memory addresses;

identifying any logically contiguous data buffers associated with the virtual memory addresses of the array based data structure that store the packet, and replacing virtual pointers associated with the identified logically contiguous data buffers with a single physical pointer;

attaching the one or more data buffers to a transmit descriptor by storing one or more physical pointers associated with the one or more buffers and control information associated with the packet in a transmit descriptor ring associated with the transmit descriptor;

attaching optional information to the transmit descriptor by an operating system independent module by storing the optional information in the transmit descriptor ring;

transmitting the packet by a network device by retrieving data from the one or more buffers using the one or more physical pointers within the transmit descriptor ring; and

freeing the one or more data buffers for other use after transmitting the packet.

14. The method of claim 13 , wherein the packet is obtained from the operating system by an operating system dependent module in an operating system specific format.

15. The method of claim 13 , further comprising coalescing the one or more data buffers into contiguous memory space dependent on a predetermined buffer size.

16. The method of claim 13 , further comprising attaching the freed data buffers to a send queue for packets awaiting transmission.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded May 12, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 056987/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 20, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES INC.
Reel/Frame 054636/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2020
From: GLOBALFOUNDRIES INC.
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 054633/0001 →
SECURITY AGREEMENT Recorded Nov 29, 2018
From: GLOBALFOUNDRIES INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 049490/0001 →
AFFIRMATION OF PATENT ASSIGNMENT Recorded Aug 18, 2009
From: ADVANCED MICRO DEVICES, INC.
To: GLOBALFOUNDRIES INC.
Reel/Frame 023120/0426 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 25, 2004
From: KARIGHATTAN, KISHORE; PADIYAR, PRASAD P.; VASUDEVA, HARISH
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 015152/0929 →
Continuity (1)
Related Publication 20050213603A1 · Sep 29, 2005