IP Library Granted Patent US 8,855,137
Granted Patent B2
US 8,855,137 · App. 11/514,764 · Granted Oct 7, 2014

Dual-driver interface

Inventors: Steve Leslie Pope (Cambridge, GB); David James Riddoch (Cambridge, GB)
Assignee: Solarflare Communications, Inc.
G06F13/385
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,855,137
App. No.
11/514,764
Granted
Oct 7, 2014
Kind
B2
Abstract

A network interface device capable of communication with a data processing system supporting an operating system and at least one application, the network interface device supporting communication with the operating system by means of: two or more data channels, each data channel being individually addressable by the network interface device and being capable of carrying application-level data between the network interface device and the data processing device; and a control channel individually addressable by the network interface device and capable of carrying control data between the network interface device, the control data defining commands and the network interface being responsive to at least one command sent over the control channel to establish at least one additional data channel.

Claims (51)

1. A network interface device capable of communication with a data processing device supporting an operating system and at least one application, the network interface device supporting communication with the operating system by means of:

a first driver configured to transfer data between the network interface device and the data processing device via a bus of the data processing device;

a second driver configured to transfer data between the network interface device and the data processing device via the bus of the data processing device, wherein the first driver and the second driver are independently addressable by the network interface device;

two or more data channels, each data channel being individually addressable by the network interface device and being capable of carrying application-level data between the network interface device and the data processing device, such that one channel of the two or more data channels is dedicated exclusively for use by only the first driver to transfer data between the network interface device and the data processing device thereby establishing the one channel as an entire path between the network interface device and the data processing device; and

a control channel individually addressable by the network interface device and used by the second driver to transfer control data between the data processing system and the network interface device, the control data defining commands and the network interface device being responsive to at least one command sent over the control channel to establish at least one additional individually addressable data channel.

2. The network interface device as claimed in claim 1 , wherein the network interface device is capable of transmitting to the data processing system independent interrupt messages for the control channel and at least one of the data channels.

3. The network interface device as claimed in claim 1 , wherein the network interface device has a set of resources that can be allocated to tasks to be performed by the network interface device and is responsive to at least one command sent over the control channel to alter the allocation of the resources to tasks to be performed by the network interface device.

4. The network interface device as claimed in claim 3 , wherein the resources comprise hardware resources.

5. The network interface device as claimed in claim 3 , wherein the network interface device is capable of supporting a communication link with another network device and the resources comprise the state of the link.

6. The network interface device as claimed in claim 3 , wherein the network interface device is capable of filtering data passing over one or more of the data channels in accordance with predefined filter conditions and the resources comprise the filter conditions.

7. The network interface device as claimed in claim 1 , wherein at least one of the data channels is capable of carrying control data defining commands and the network interface device is responsive to those commands to configure the state of the network interface device.

8. The network interface device as claimed in claim 7 , wherein the network interface device is capable of supporting a communication link with another network interface device without a control channel being established.

9. The network interface device as claimed in claim 1 , wherein at least one of the data channels is operable according to the network device identification specification (NDIS) interface.

10. The network interface device as claimed in claim 1 , wherein the control channel is operable according to the windows device model (WDM).

11. The network interface device as claimed in claim 1 , wherein the network interface device is capable of supporting a communication link with another network interface device and of transmitting over the link application-level data received over one of the data channels.

12. The network interface device as claimed in claim 1 , wherein the network interface device is capable of supporting a communication link with another network interface device and of transmitting over a data channel data received over the link.

13. The network interface device as claimed in claim 12 , wherein the network interface device is capable of transmitting and/or receiving data over the data channel in the form of data packets.

14. The network interface device as claimed in claim 13 , wherein the network interface device is capable of transmitting and/or receiving data over the data channel in the form of internet protocol packets.

15. The network interface device as claimed in claim 1 , the network device being capable of generating status report messages of a plurality of types and of receiving from each channel an indication of which of the status report messages are to be sent to that channel, and being arranged to send to each channel only those status report messages that match the types indicated in the indication received from that channel.

16. The network interface device as claimed in claim 15 , wherein the said indication is a mask wherein one bit corresponds to each type of status report message, and a first value of a bit indicates that status report messages of the corresponding type should be sent to the respective channel, and a second value of a bit indicates that status report messages of the corresponding type should not be sent to the respective channel.

17. The network interface device as claimed in claim 1 , wherein each data channel supports an event queue and the network interface device is arranged to, in order to pass data to a channel, apply an event message to the event queue of that channel.

18. The network interface device as claimed in claim 17 , wherein each data channel is capable of being triggered to read data from the event queue that it supports by means of an interrupt received from the network interface device by the data processing system, and the network interface device is capable of applying such an interrupt to the data processing system.

19. The network interface device as claimed in claim 18 , wherein each channel is capable of being so triggered by means of a single interrupt.

20. The network interface device as claimed in claim 19 , wherein the network interface device is arranged to apply the interrupt if the event queue includes event messages.

21. The network interface device as claimed in claim 19 , wherein the network interface device is arranged to apply the interrupt if the event queue includes more than a predetermined number of event messages.

22. The network interface device as claimed in claim 19 , wherein the network interface device is arranged to apply the interrupt if an event message has been included in the event queue for longer than a predetermined period of time.

23. The network interface device as claimed in claim 19 , wherein the network interface device is arranged to apply the interrupt if longer than a predetermined period of time has elapsed since the event queue was empty of messages.

24. The network interface device as claimed in claim 1 , wherein the network device is arranged to, on deactivation of the control channel, signal the or each data channel with a message indicative of deactivation of the control channel.

25. The network interface device as claimed in claim 1 , wherein the network interface device is arranged to store for each channel that is capable of receiving control messages a data set indicating for a plurality of types of control message which of those types of control message are to be sent to that channel, and the network interface device is arranged to send control messages to the channels in accordance with the stored data sets.

26. The network interface device as claimed in claim 1 , wherein the network interface device is arranged to, on receiving a message from one of the channels that is indicative of a request to apply data to another of the channels, apply the data to the other of the channels.

27. A data processing device comprising:

an operating system and at least one application; and

a network interface device, the network interface device being capable of communication with the data processing system through a first driver and a second driver, the network interface device supporting communication with the operating system by means of:

two or more data channels, each data channel being individually addressable by the network interface device and being capable of carrying application-level data between the network interface device and the data processing device, at least one but not all of the two or more data channels accessible through the first driver and exclusively for use by the first driver to establish a complete path between the network interface device and the data processing device; and

a control channel individually addressable by the network interface device and capable of carrying control data between the data processing system and the network interface device, the control data defining commands and the network interface being responsive to at least one command sent over the control channel to establish at least one additional individually addressable data channel, the control channel provided by the second driver.

28. The network interface and data processing system as claimed in claim 27 , wherein the data processing device is arranged to store, for each channel, an indication of whether that channel is a data channel or a control channel.

29. A method for communicating with a network interface device at a data processing device supporting an operating system and at least one application, the method comprising:

providing a first driver for communicating with the network interface device;

providing a second driver for communicating with the network interface device, wherein the first driver and second driver are independently addressable by the network interface device;

establishing two or more data channels, each data channel being individually addressable by the network interface device and being capable of carrying application-level data between the network interface device and the data processing device, wherein at least one data channel but not all of the two or more data channels is accessible through the first driver and dedicated to the first driver; and

establishing a control channel individually addressable by the network interface device and capable of carrying control data between the network interface device, the control data defining commands and the network interface device being responsive to at least one command sent over the control channel to establish at least one additional data channel, wherein the control channel is established by the second driver.

30. A method for communicating with a network interface device at a data processing device supporting an operating system and at least one application, the method comprising:

providing at least two drivers for communicating with the network interface device, each of the at least two drivers independently addressable by the network interface device;

establishing one or more channels, at least two of the one or more channels established with a first driver and second driver to establish a channel dedicated to the first driver and a channel to the second driver, at least one dedicated channel configured to carry data between the network interface device and the data processing device; and

communicating from one of the channels to the other data indicative of the status and/or capability of the one channel; and

based on that communicated data determining which of the channels is to act as a control channel for carrying control data between the network interface device, and which of the channels is to act as a data channel for carrying application-level data between the network interface device and the data processing device.

31. A non-transitory computer-readable medium having computer-readable instructions fixed thereon for execution at a data processing device, the instructions being operable to define, when executed, an operating system having a first driver and a second driver capable of communication with a network interface device by means of:

a data channel capable of carrying and forming a complete link for application-level data between the network interface device and the data processing device, the data channel is supported by the first driver and dedicated to the first channel; and

a control channel capable of carrying control data between the network interface device, the control data defining commands and the network interface device being responsive to at least one command sent over the control channel to establish at least one additional individually addressable data channel, the control channel supported by the second driver;

wherein the data channel and the control channel are individually addressable by the network interface device.

32. The non-transitory computer-readable medium as claimed in claim 31 , wherein the first driver and the second driver defined by the instructions fixed on the medium are arranged to act independently on interrupt messages received from the network interface device for the control channel and at least one of the data channels.

Assignments (12)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 25, 2019
From: SOLARFLARE COMMUNICATIONS, INC.
To: XILINX, INC.
Reel/Frame 051108/0209 →
RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jul 31, 2019
From: ALLY BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 049918/0440 →
RELEASE OF SECURITY INTEREST Recorded Jun 15, 2017
From: PACIFIC WESTERN BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 042820/0890 →
SECURITY INTEREST Recorded Mar 7, 2017
From: SOLARFLARE COMMUNICATIONS, INC.
To: ALLY BANK
Reel/Frame 041902/0527 →
SECURITY INTEREST Recorded Apr 6, 2016
From: SOLARFLARE COMMUNICATIONS, INC.
To: PACIFIC WESTERN BANK
Reel/Frame 038363/0589 →
RELEASE OF SECURITY INTEREST Recorded Nov 24, 2014
From: COMERICA BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 034255/0140 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2014
From: COMERICA BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 033716/0073 →
CHANGE OF ADDRESS Recorded Oct 31, 2012
From: SOLARFLARE COMMUNICATIONS, INC.
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 029360/0956 →
SECURITY AGREEMENT Recorded Jan 5, 2012
From: SOLARFLARE COMMUNICATIONS, INC., A DELAWARE CORPORATION
To: COMERICA BANK, AS AGENT, A TEXAS BANKING ASSOCIATION
Reel/Frame 027487/0097 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2009
From: LEVEL 5 NETWORKS, INC.
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 022752/0318 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2009
From: LEVEL 5 NETWORKS, INC.
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 022568/0921 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 20, 2006
From: POPE, STEVE LESLIE; RIDDOCH, DAVID JAMES
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 018419/0114 →
Continuity (1)
Related Publication 20070030859A1 · Feb 8, 2007