This disclosure relates to indication of an error in receive offload packets.
A variety of devices such as personal computers (PCs), printers, servers, handheld computing devices, and other devices may exchange data and/or commands with each other over an associated network utilizing a variety of communication protocols. Such devices may each have a network controller to provide a network connection between the device and the associated network.
A host processor of the device and the network controller may together facilitate bidirectional communication between the devices via the network. However, especially as network speeds have increased over the years, the host processor may prove to be a communication bottleneck given a conventional distribution of labor between the host processor and the network controller. To remove this bottleneck and free the host processor up to perform other tasks, network controllers have been developed to offload some of the functionality normally provided by the host processor during both transmit and receive functions.
During receipt of a packet from a sending device, a conventional receive segmentation offload method performed by a network controller may analyze the received data portion of the packet to determine if there are any errors in the received packet. If there is an error, the entire packet (header and data portion) and/or flow of entire packets may be discarded. Therefore, no response signal indicating either a successful or unsuccessful receipt of the packet(s) may be sent back to the sending device. In this instance, the sending device may wait a certain time interval. When the time interval expires without the receipt of a signal indicating a successful receipt of the packet(s), the sending device may assume there was an error and re-transmit the affected packet(s). Since the sending device necessarily waits for this time interval to expire (sometimes referred to as a timeout condition) before re-sending the affected packet(s), a drawback of this conventional receive segmentation offload method is that it may result in excessive time delays when there are errors in the received data.
Features and advantages of embodiments of the claimed subject matter will become apparent as the following Detailed Description proceeds, and upon reference to the Drawings, where like numerals depict like parts, and in which:
Although the following Detailed Description will proceed with reference being made to illustrative embodiments, many alternatives, modifications, and variations thereof will be apparent to those skilled in the art. Accordingly, it is intended that the claimed subject matter be viewed broadly.
Each networked device 102, 104, 106, 108 may have an associated network controller 112, 114, 116, 118 to facilitate bidirectional communication between networked devices 102, 104, 106, 108 via the network 115. Communication over the network 115 may comply or be compatible with a variety of communication protocols. One such communication protocol may comply or be compatible with an Ethernet protocol. The Ethernet protocol may comply or be compatible with the Ethernet standard published by the Institute of Electrical and Electronics Engineers (IEEE) titled the IEEE 802.3 standard, published in March 2002 and/or later versions of this standard. Another communication protocol may be Transmission Control Protocol/Internet Protocol (TCP/IP) that may comply or be compatible with the Transmission Control Protocol Specification published by the Information Sciences Institute, dated 1981, and the Internet Protocol Specification also published by the Information Sciences Institute, dated 1981 and/or later versions of these Specifications.
Data and/or commands exchanged between networked devices 102, 104, 106, 108 may be parsed into packets for efficient routing. As used herein, a “packet” may comprise one or more symbols and/or values. The size, type, and attributes of such packets may be defined, at least in part, by the particular communication protocol being utilized. The network 115 may be any variety or combination of networks such as local area networks (LANs) and wide area networks (WANS) such that any plurality of networked devices may communicate with each other.
The user interface system 216 may include one or more devices for a human user to input commands and/or data and/or to monitor the system, such as, for example, a keyboard, pointing device, and/or video display. The chipset 214 may include a host bridge/hub system (not shown) that couples the processor 212, system memory 221, and user interface system 216 to each other and to the bus 222. The chipset 214 may include one or more integrated circuit chips, such as those selected from integrated circuit chipsets commercially available from the Assignee of the subject application (e.g., graphics memory and I/O controller hub chipsets), although other integrated circuit chips may also, or alternatively be used.
The network controller 112 may enable bidirectional communication between the networked device 102a and other networked devices coupled to the network 115. In one embodiment, the network controller 112 of
The sending device 304 may be any variety of devices such as one of the networked devices 102, 104, 106, 108 of
The hardware 306 of the network controller 112 may perform a variety of checks on the inbound packets to detect an error in any of the inbound packets. The error may be any type of error anywhere in the inbound packet. An incomplete flow may also be indicative of an error. In one embodiment, the hardware 306 may check for an error in the data portion of an inbound packet by computing an error detection code associated with the data portion of the inbound packet and comparing it with a pre-computed value included in the inbound packet by the sending device. If the results do not match, the hardware 306 may determine there is an error in the data portion of the inbound packet. Alternatively, if the results do match, the hardware 306 may determine there is no error in the data portion of the inbound packet.
In the illustrated embodiment of
In response to notification of an error in an inbound packet, the protocol stack 310 may transmit a response signal back to the sending device 304. The response signal may indicate to the sending device 304 that there was an error in inbound packet B. The response signal may also indicate to the sending device to re-send packet B. The response signal may also acknowledge successful receipt of packet A 312 without any errors.
The functionality of the network controller 112 described above as being provided by hardware 306, may alternatively be performed by software and/or firmware. To assist in this regard, machine-readable program instructions for the network controller 112 may be stored in any variety of machine-readable media so that when the instructions are executed by a machine it may result in the machine performing operations described herein. The machine readable media may be comprised in the network controller 112 or in other locals accessible by the machine. The machine may be a processor comprised in the network controller 112 or alternatively an integrated circuit capable of executing the stored instructions. As used herein, an “integrated circuit” or IC means a semiconductor device and/or microelectronic device, such as, for example, a semiconductor integrated circuit chip.
It will be appreciated that the functionality described for all the embodiments described herein, may be implemented using hardware, firmware, software, or a combination thereof.
Thus, in summary, one embodiment may comprise an apparatus. The apparatus may comprise a network controller that is capable of being coupled to a host computer running a protocol stack. The network controller may further be capable of receiving an inbound packet. The network controller may further be capable of detecting an error in the inbound packet. The network controller may further be capable of notifying the protocol stack of the error.
Another embodiment may comprise an article. The article may comprise a machine readable medium having stored thereon instructions that when executed by a machine results in the following: detecting an error in an inbound packet received at a network controller coupled to a host networked device running a protocol stack; and notifying the protocol stack of the error.
Yet another embodiment may include a system. The system may comprise a networked device comprising a network interface card capable of being coupled to a bus. The networked device may run a protocol stack. The network interface card may further be capable of receiving an inbound packet. The network interface card may further be capable of detecting an error in the inbound packet. Finally, the network interface card may further be capable of notifying the protocol stack of the error.
Advantageously, in these embodiments an error in an inbound packet may be detected by the network controller and the protocol stack running on a host networked device may be quickly notified of the error. Therefore, the protocol stack can respond to the sending device with a response signal to inform the sending device of the error. The response signal may also request the sending device to re-send the affected packet or packets. Therefore, the sending device advantageously does not have to wait for a timeout condition to re-send the packet or packets. Accordingly, the time delays associated with the conventional receive segmentation offload method having errors in received data are shortened.
The terms and expressions, which have been employed herein, are used as terms of description and not of limitation, and there is no intention, in the use of such terms and expressions, of excluding any equivalents of the features shown and described (or portions thereof), and it is recognized that various modifications are possible within the scope of the claims. Other modifications, variations, and alternatives are also possible. Accordingly, the claims are intended to cover all such equivalents.