Recovering from failures without impact on data traffic in a shared bus architecture

Information

  • Patent Grant
  • 9030943
  • Patent Number
    9,030,943
  • Date Filed
    Thursday, July 12, 2012
    12 years ago
  • Date Issued
    Tuesday, May 12, 2015
    9 years ago
Abstract
Methods of detecting and recovering from communication failures within an operating network switching device that is switching packets in a communication network, and associated structures. The communication failures addressed involve communications between the packet processors and a host CPU over a shared communications bus, e.g., PCI bus. The affected packet processor(s)—which may be all or a subset of the packet processors of the network switch—may be recovered without affecting hardware packet forwarding through the affected packet processors. This maximizes the up time of the network switching device. Other packet processor(s), if any, of the network switching device, which are not affected by the communication failure, may continue their normal packet forwarding, i.e., hardware forwarding that does not involve communications with the host CPU as well as forwarding or other operations that do involve communications with the host CPU.
Description
BACKGROUND OF THE INVENTION

The present invention relates generally to communications error recovery, and in particular to recovery from communication errors in networking equipment having a shared control bus architecture.


Network switching equipment typically comprises a set of physical ports, one or more packet processors that receive data packets from and send packets to a physical port (or to a plurality of physical ports) of the network switching device via PHY and MAC circuitry, and a controller (typically CPU-based). The packet processors may be ASICs or FPGAs. The physical ports and packet processors (each of which has its own input and output ports) may be arrayed over a plurality of linecards, as in a chassis type unit, or on a single circuit board, as in a stackable unit. A received data packet can be processed and forwarded by a packet processor to another physical port coupled to an output port of the same packet processor. Alternatively, the received data packet can be forwarded by a receiving packet processor through a switching fabric to another packet processor to be further processed and forwarded via one of its output ports to a physical port of the switching device


During normal operation, there is occasional data communication between the respective packet processors and the CPU-based controller. The CPU-based controller may be on a separate management circuit board, such as in a typical chassis type network switching device, or on the same circuit board, as in a typical stackable type network switching device. In some network switching devices, there may be a dedicated controller for each packet processor or for a plural subset of the packet processors of the switching device In a cost optimized system, on the other hand, there may be one CPU-based controller for the whole system, e.g., for the entire set of packet processors of the network switching device. This centralized architecture is advantageous from a system-cost point of view, since there is only one CPU-based controller for all of the packet processors, but it poses some challenges, since there is a shared control bus coupling the CPU-based controller to the packet processors. The complex intercoupling of data structures between the controller and the packet processor that form the basis of controller-packet processor communication is susceptible to malfunctions that can render the system unusable.


BRIEF SUMMARY OF THE INVENTION

In a data switching system, error recovery from data communication errors according to the present invention includes detecting occurrence of an error condition arising in a network switching device during data communication between a packet processor(s) and a controller in a shared bus architecture. In one embodiment, the controller, which is running a software program, detects the error. In response to detecting the error, data communication on the shared bus between the affected packet processor(s) and the controller is ceased pending a recovery step. Recovery of the data structures of the packet processor using data structures stored in the controller is performed, and communication between the affected packet processor(s) and the controller is resumed. Meanwhile, packet processing and forwarding by packet processor(s) (if any) are unaffected by the error continues, even to the extent such packet processing and forwarding requires communication with the controller. Further, packet processing and forwarding of packets by the packet processor(s) affected by the communication error also continues during the period of error detection and recovery, to the extent such processing and forwarding does not require communication between the affected packet processor(s) and the CPU controller, as would be the case, for instance, where the CPU controller had already programmed the memory(ies) accessed by the affected packet processor(s) with forwarding information necessary to process and forward particular received packets. This exemplary aspect allows for greater reliability of the network switch, because in prior shared bus systems, no packet forwarding was performed by the affected packet processor(s), or perhaps by the entire network switch, during the period of error detection and recovery, i.e., received packets were not forwarded, regardless of whether the memory(ies) had previously be programmed with forwarding information.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a generalized schematic diagram of an illustrative example of a shared bus architecture for packet processors and host CPU embodied according to the present invention.



FIG. 1A is a generalized schematic diagram of a line card including packet processors.



FIG. 2 is an illustration of the data structures used between the host CPU and each of the packet processors.



FIG. 2A is a illustration of a packet descriptor.



FIG. 3 shows the bits in a PCI-defined status register relevant to a communication error.



FIG. 4 illustrates the detection sequence for a communication error on the PCI bus.



FIG. 5 illustrates the flow for error recovery according to the present invention.



FIG. 6 illustrates the flow for error recovery while pre-programmed, a.k.a., hardware, forwarding continues.





DETAILED DESCRIPTION OF THE ILLUSTRATIVE EMBODIMENTS


FIG. 1 shows at high level a network switching device 100 (e.g., L2/L3 switch, wireless network switch, L4-7 switch, and the like) embodied according to the present invention. The switching device 100 can comprise one or more system management controllers, although the embodiment shown in FIG. 1 shows only one system management controller (CPU 102 or host CPU 102). CPU 102 controls switching device 100, including the one or more packet processors of switching device 100. Typically, the CPU 102 comprises a general data processor, which executes software stored in a memory of switching device 100.


Switching device 100 of FIG. 1 includes a plurality of packet processors 106, which may be arrayed on a single circuit board, or amongst a plurality of circuit boards. Sometimes such circuit boards are called linecards. For example, referring to FIG. 1A, three such packet processors 106a-106c are shown on a single line card 107 in an uppermost portion of FIG. 1A, but the number of packet processors may be more or less than three. The logic that constitutes a packet processor 106 is typically embodied in an ASIC (application-specific integrated circuit) or an FPGA (field-programmable gate array). An example packet processor may be one of the Prestera family of packet processors from Marvell Semiconductor, Inc. Such custom circuits are built for high speed performance and may have various functionality and speeds, such as 10/100, 1G, or 10G Ethernet capability. Each packet processor 106a-106c has one or more input ports (represented by a heavy arrow) and one or more output ports (represented by a heavy arrow). The host CPU 102 and the packet processors 106 are generally connected via a connector module 104 that includes a shared bus architecture to facilitate communication between the host CPU 102 and the packet processors 106a-106c.


One of the functions provided by the host CPU 102 is to program a memory 109 (e.g., a CAM and/or RAM, internal to the packet processor or external) with learned or user-inputted forwarding data so that, upon access of the memory by the packet processor 106 in response to a packet received via an in port of the switching device 100, the packet processor 106 will be able process the packet using the forwarding data to forward the received packet, typically at line rate, without the need for assistance from or communications with, the CPU 102. This type of pre-programmed forwarding by the packet processor 106 is sometimes called hardware forwarding. After processing in the packet processor 106, a received packet may be transmitted through the out port of the packet processor 106 to an out put port of the switching device 100, or to the in port of another of the packet processors 106, for further processing before the packet ultimately is sent to an output port of the switching device 100 (or dropped) Absent such pre-programmed forwarding data, a packet processor 106 may communicate with the host CPU 102 over the shared control bus, for assistance in forwarding the received packet. The CPU 102 may process the packet, and forward the packet to the same or another packet processor 106 for further processing and forwarding, e.g., VLAN flooding, or drop the packet, in accordance with the CPU's instruction set. Such communications (and other communications between the packet processors 106 and the host CPU 102) occur via the connection module 104 of FIG. 1. In this case, connection module 104 has a shared bus architecture and provides a communication channel coupling all of the packet processors 106a-c to CPU 102. In this example, the shared bus architecture is a PCI architecture, and includes a plurality of buses 114 and two bridges 124 that are each coupled to a pair of the packet processors 106. Typically, the PCI architecture is composed of a set of interconnected integrated circuits. It should be apparent that other shared bus architectures besides a PCI architecture can be adapted in accordance with the present invention. Further, practitioners will appreciate that there could be a variety of circuits, e.g., traffic manager circuits, and a switching fabric in switching device 100 to facilitate packet forwarding by and among the packet processors 106 and the CPU 102.


The present invention involves, among other things, detecting and resolving an error arising in the shared communication channel between the host CPU 102 and packet processor(s) 106. The error may affect the communications between the CPU 102 and all, or less than all (one or more), of the packet processors 106a-c. Such an error may be due to an unintended mechanical or electrical disturbance, e.g., a power spike, or the like, or may be due to an intended action, such as a hotswap action. In a hotswap, a circuit board (e.g., a line card including some packet processors 106, or a management card including CPU 102 (and perhaps some packet processors 106 as well), is hot removed from the switching device 100, and hot replaced with a like circuit board without a powering down of the switching device 100. Hotswap capability can improve the up time of the switching device 100.


I. Communication over the Control Plane


In an architecture such as depicted in FIG. 1, data communications between the host CPU 102 and packet processors 106a-106c comprise transferring data over the PCI bus. A data structure is used to manage the communication between the host CPU 102 and the packet processors 106. The reference to “control plane” refers to the data communication channel between the host CPU 102 and a respective packet processor 106a-106c.



FIGS. 2 and 2A show an example of such a data structure. The example data structure, a packet descriptor ring 122, comprises packet descriptors 132 organized into a structure commonly referred to as a circular linked list. Each packet descriptor 132 comprises descriptive information portion 132a (FIG. 2A) and a link portion 132b. The link portion 132b contains an address of the next packet descriptor 132 in the packet descriptor ring 122. The link portion of the last packet descriptor 132 (identified in FIG. 2 by “#n”) contains an address of the first packet descriptor 132 (identified in FIG. 2 by “#1”). One such packet descriptor ring 122 is associated with each packet processor 106x. In the particular implementation described herein, the packet descriptor ring 122 is provided in local memory 112 of the host CPU 102 (the figure also shows a processing unit 114 of the host CPU, for example, a conventional data processing unit or a microcontroller). It will be understood that a suitable program code 136 can be provided in local memory 112 to operate the CPU 114.


The descriptive information portion 132a of a packet descriptor 132 comprises data defined by the PCI standard and vendor-specific data. For example in one implementation, the packet descriptor 132 is a sixteen-byte data structure which includes a buffer address 232 (FIG. 2A) portion that stores an address (pointer) to a location in an area of the memory 112 called the packet buffer 134. There is an area in packet buffer 134 that is pointed to by each packet descriptor 132 to store data associated with that packet descriptor 132. The buffer address 232 stores the beginning address of the portion of the packet buffer 134 associated with the packet descriptor. The descriptive information portion 132a may include an additional data field 234. The data contained in the descriptive information portion 132a can vary from one kind of shared bus architecture (e.g. PCI bus) to another. In fact, the data contained in the descriptive information portion 132a may vary even among different implementations of the shared bus or vendors of the shared bus (e.g., PCI bus). For example, a vendor of the chip set that implements a PCI bus architecture may include vendor-specific information in addition to the information required by the PCI standard. The descriptive information portion 132a of each packet descriptor is intended to contain that additional data.



FIG. 2 shows that each packet processor 106x (e.g., the packet processors 106a-c of FIG. 1) includes, among other circuits, a pair of registers: a next descriptor register 116a and a next buffer register 116b, collectively referred to as the packet processor registers 116. As indicated in FIG. 2, each packet processor 106x can access at least a portion of the local memory 112 of the host CPU 102. For example, in the disclosed illustrative embodiment, each packet processor 106x uses a direct memory access (DMA) technique to access its respective packet descriptor ring 122 in the local memory 112, and to access the packet buffers 134 pointed by the constituent packet descriptors 132 of the data structure.


Upon start up of switching device 100, the processing unit 114 of the host CPU 102 configures its memory 112 with packet descriptors 132 and a packet buffer 134. The packet buffer 134 can be initialized with zeroes or some other suitable initial value. Likewise, the additional data portion 234 of each packet descriptor 132 can be filled with a suitable initial value (e.g., zero). This initialization process can be accomplished in software (e.g., in program code 136), or by simply loading a portion of the memory 112 with an image of a predefined configuration of packet descriptors and a packet buffer.


Initializing the packet descriptors 132 includes, for each packet descriptor, at least storing in the buffer address 232 an address of the beginning of a portion of storage in the packet buffer 134. The packet descriptors 132 are linked to create a packet descriptor ring 122 for each packet processor 106x. This includes linking a group of the packet descriptors 132 to each other in a linked list. For example, the first N packet descriptors 132 can be linked in a ring structure to define a packet descriptor ring 122 for a first packet processor 106x. The next N packet descriptors 132 can be linked in another ring structure to define the next packet descriptor ring 122 for the second packet processor 106x, and so on. In this way, an initialized packet descriptor ring 122 for each packet processor 106x is created and initialized.


At system startup, the processing unit 114 also initializes the packet processor registers 116 of each packet processor 106x. This includes loading the next descriptor address register 116a with the address of the first packet descriptor 132 in the packet descriptor ring 122 corresponding to the packet processor 106x. The next buffer address register 116b is loaded with the buffer address contained in the first packet descriptor. As will be explained below, the packet processor 106x uses this address information to transfer data into its corresponding packet descriptor through a DMA operation.


Upon successful completion of the transfer of the control data, status fields in the packet descriptors 132 that were used for that transfer (note that more than one packet descriptor 132 may be consumed) are updated to indicate this fact. A protocol, described below, between the host CPU 102 and the packet processors 106 synchronizes the usage of the packet descriptors 132 (and packet buffers) between them.


An example of a synchronization mechanism between the host CPU 102 and the packet processors 106x will now be described. Each packet descriptor 132 contains an ownership bit field that is used for this purpose. The initiator—which could be either the host CPU 102 or packet processor 106x—only uses the packet descriptor 132 which is owned by that packet processor.


Consider a data transfer from a packet processor 106x to the host CPU 102. The packet processor 106x uses the packet descriptor 132 that is currently owned by it, identified by the address contained in the next descriptor address register 116a. The packet processor 106x transfers control data to the packet buffer 134 in the CPU memory 112 through a DMA operation, identified by the address contained in the next buffer address register 116b. After the packet processor 106x completes the data transfer into CPU memory, the ownership bit field in the packet descriptor 132 is changed to indicate that the packet processor relinquishes the ownership of that descriptor and now it is owned by the host CPU 102. The host CPU 102, when it sees that it now owns the packet descriptor 132, becomes aware of the availability of control data in the packet buffer and processes the received control data. When the processing is finished, the host CPU 102 changes the ownership bit of the packet descriptor 132 back to that of the packet processor 106x. This indicates that the descriptor is now available for the packet processor 106x for further data transfer. The same is applicable when host CPU 102 initiates a data transfer to the packet processor 106x.


I. Control Plane Failure


A communication error in a shared bus architecture communication channel between a packet processor 106 and the host CPU 102 may occur, for example, during a read or write operation to the packet descriptor ring 122 that is shared between the host CPU 102 and the affected packet processor(s) 106. Such an error could have effects such as: (a) the packet processor receives an invalid packet descriptor address or an invalid buffer address; or (b) the packet descriptor ring 122 in CPU memory 112 becomes corrupted. In both of the above scenarios, the communication between the host CPU 102 and the affected packet processor 106—which may be any subset or all of packet processors 106 of FIG. 1—over the control plane 104 will be broken down, leading (in prior art systems) to an inoperative system. Such may require the prior art switching device to be reset, resulting in no packet forwarding during the reset period of time, an undesirable situation.


The sections which follow disclose exemplary structures and methods to detect exemplary errors, and an exemplary recovery procedure to re-establish control plane communication between the host CPU 102 and the affected ones of packet processors 106. Such structures and methods allow the switching device 100 to continue switching packets through the network during the detection and recovery processes. For instance, packet processor(s) 106 unaffected by the communications error may continue processing forwarding all packet traffic and communicating with the host CPU 102 as necessary over the shared communication channel, while affected packet processor(s) 106 may continue forwarding any packet traffic that does not require communications with CPU 102 (e.g., where forwarding data for the particular received packets already is programmed in the memory 109 accessed by the packet processor 106 during packet processing and forwarding.) This technique maximizes the up time and throughput of the network switching device 100 in the case of such an error.


For the sake of example, we will discuss two error situations that could occur in a shared-bus network switching device 100 operating in a network to which it is coupled when a communication failure occurs in the control plane (e.g., due to hot-swapping or some electrical glitch), namely (1) loss of address/data integrity over the PCI bus, resulting in a parity error; and (2) PCI timeout or failure, yielding incorrect data to the master. Following is an explanation on how the above two exemplary scenarios are detected by the host CPU 102 in accordance with its program code, in accordance with an illustrative embodiment of the present invention.


(1) Loss of Address/Data Integrity over the PCI Bus, Resulting in Parity Error


An electrical disturbance or other anomalous condition involving the PCI bus can cause the data that is present on the bus at that time to become corrupted, causing the loss of integrity. The PCI standard specifies mechanisms to detect this type of error condition using, e.g., parity information generated during both the address and data phases of a transaction. A detailed description of the parity generation mechanism on the PCI bus can be found in the PCI standard specification. What is relevant for the discussion here is that, when a parity error is detected for the data on the PCI bus, the devices involved in the erroneous transaction (host CPU 102, packet processor(s) 106) set some error bits in the PCI command/status register. This mechanism is defined per the PCI standard as well. Thus, any PCI device will have this mechanism implemented. For clarity of further discussion, some bit-fields of the 32 bit PCI configuration command/status register (offset 0x4) relevant to error detection are shown in FIG. 3.


(2) PCI Timeout or Failure


A timeout or other failure during a PCI transaction may occur, for instance, due to hotswapping a linecard while a packet processor(s) 106 of the linecard is communicating with the host CPU 102. For instance, such an electrical disturbance occurring during communication between a packet processor 106 and the host CPU 102 can result in a failure yielding incorrect data to the device (packet processor 106 or the host CPU 102) that originated the operation. In the context of a switching system 100, this could result in the affected packet processor(s) 106 getting an invalid packet descriptor address or an invalid packet buffer address if the affected packet processor(s) was in the middle of a read operation during the hotswap operation. An invalid address obtained like this will cause the packet processor 106 to be unable to properly transfer data to the CPU. For example, an invalid packet descriptor address may cause the packet processor 106 to access an incorrect packet descriptor 132 within its associated packet descriptor ring 122, or worse yet may cause the packet processor 106 to access a packet descriptor 132 belonging to another packet processor. Similarly, an incorrect packet buffer address will cause the wrong area in the packet buffer 134 to be accessed, resulting in writing of data to an area in the packet buffer that belongs to another packet processor 106.


III. Control Plane Failure Detection by the Host CPU



FIG. 5 illustrates a detection and recovery process within the present invention, and for this example is explained in terms of the disclosed illustrative PCI architecture embodiment. The processing is performed in the host CPU 102 by way of program code that is executed by the processing unit 143. Typically, the program code is stored in the CPU memory 112, but can be stored in a ROM (read-only memory) or a flash device, and so on. It will be apparent from the discussion that follows that the present invention can be practiced, for instance, using any shared bus architecture.


Referring to FIG. 5, the process begins with detection of a communication error between the host CPU 102 and a packet processor 106, step 502. In an embodiment of the present invention, the underlying bus architecture for communication between the host CPU 102 and the packet processors 106 is the PCI shared bus.


Referring to FIG. 4, a data phase parity error will be described as an example of a communication error. This type of error can arise during a PCI write (or read) transaction. FIG. 4 shows segments of connector module 104 (FIG. 1) involved in the transaction, which include the CPU-to-PCI bridge segment and PCI bridge-to-packet processor segment. If an error occurs during a transaction, which could be in either direction, the PCI error status is propagated to both ends. The host CPU 102, the PCI bridge 124, and the packet processor 106a all receive the PCI error status. Thus, the host CPU 102 detects the PCI error for both communication scenarios: (1) where the host CPU 102 sends data to packet processor 106 and (2) where the packet processor 106 sends data to the host CPU 102.


Upon detection of a data phase parity error, the PCI device (i.e., host CPU 102 or packet processor 106) that checked the parity is responsible for asserting the Detected Parity Error bit (bit31) (FIG. 3) in its PCI configuration status register. It also asserts the PERR# signal if the Parity Error Response bit in its PCI Configuration command register (bit6) is set to one. A parity error on the address phase of a transaction causes the PCI device to set the SERR# signal, if the SERR# enable bit is set to one in the PCI configuration command register. In this example, the packet processors 106a-106c and the host CPU 102 are the PCI devices.


The PERR# signal or the SERR# signal, when asserted, could generate an interrupt to the host CPU 102. In order to get these signals, the host CPU 102 interrupts must be enabled. This is done in the software which configures the host CPU's PIC (Programmable Interrupt Control) registers appropriately during the hardware initialization (startup) phase.


Upon detection of the occurrence of an error, an attempt is initiated to identify the devices that are involved with the error, step 504. In the disclosed example embodiment, packet processors 106a-106c communicate with the host CPU 102 over the PCI shared bus. Thus, the host CPU 102 will always be one of the devices involved in a detected communication error. The following description of step 504, in this particular embodiment, then amounts to a discussion about identifying the packet processor(s) 106a-106c that experienced the communication error.


A communication error can manifest itself in the PCI shared bus by raising an interrupt signal, as described above. When the host CPU 102 is interrupted by the interrupt signal due to a PCI error detection, a corresponding interrupt service routine is executed. The interrupt running in the host CPU polls each of the packet processors 106a-106c (which may be on one or more linecards) residing on the PCI bus on which the interrupt originated. In an embodiment, the host CPU 102 reads the PCI configuration status register (FIG. 3) of each packet processor 106 and inspects the “Detected Parity Error” bit (bit 31). A packet processor 106 that detected the PCI parity error will have its “Detected Parity Error” bit set to one. The host CPU 102 in this way identifies the packet processor 106 that experienced the communication error. As mentioned, there may be a situation where more than one packet processor experiences a communication error with the host CPU. Thus, in an embodiment of the present invention, the host CPU 102 polls each and every one of the plural packet processors 106 to identify all packet processor(s) 106 experiencing a communication error.


The discussion above deals with detecting a communication error between a packet processor 106 and the host CPU where the packet processor 106 is sending data to the host CPU 102. However, the error handling herein is applicable for data transfer in either direction between host CPU 102 and the packet processor. When host CPU 102 detects a PCI error that results when data is transferred over the shared control plane from the packet processor 106 to the host CPU 102 or vice-versa, the recovery procedure is invoked to rectify the error. As will be explained below, the present invention allows for error recovery while at the same time leaving unaffected pre-programmed hardware forwarding of received packets by the affected (and unaffected) packet processor(s) 106 to continue. Further, packet processors 106 not affected by the error may continue control plane communications with CPU 102 as necessary to process and forward received packets.


As another example of steps 502 and 504, a PCI timeout or failure may be detected as follows. The read and write operation from host CPU 102 to the packet processor 106 is implemented using known DMA (direct memory access) techniques. Underneath the DMA, it is a PCI transaction as the host CPU 102 and packet processor 106 are connected through a PCI interface. The actions involved in such an operation from the CPU-side are:


1. CPU configures the DMA registers;


2. CPU initiates a timer;


3. CPU initiates the DMA operation;


4. CPU checks the DMA status for error/success/busy;


5. CPU repeats the above “check” step until the returned status is success, or error, or until the timer expires.


In the case of successful operations, the host CPU 102 detects the DMA completion by the channel being not busy and the DMA status does not indicate an error. In the case of a PCI failure, the host CPU 102 detects the DMA engine returning the error back. In the case of a PCI timeout, the DMA channel never returns and the host CPU 102 initiated timer expires, thus indicating the PCI timeout discussed above.


In a case for example of a failure or timeout during a PCI read transaction (where the packet processor 106 attempts to read data from the host CPU), the operation typically returns with 0xFFFFFFFF to the packet processor. The host CPU 102 can detect this error condition by reading the relevant hardware register in the packet processor. The relevant register can vary, depending on the shared bus architecture used to connect the packet processor and CPU. If they are connected through PCI, this register would be, e.g., the PCI status register. In a more generic context, the packet processor vendor could implement a specific register to reflect the status of a transaction it made to read from CPU memory.


Continuing, the host CPU 102 polls the relevant register of each packet processor 106 present in the switching device 100 in order to identify the one or more packet processors 106 that encountered a communication error over the shared communication bus. If the error condition is detected, then the host CPU 102 invokes the recovery method discussed below for each of the one or more affected packet processors 106 in order to recover. In one embodiment, this process of polling the relevant registers of the packet processors can be selectively performed. For instance, it may be programmed to occur only when a hotswap is detected (e.g., loss of heartbeat signal or loss of power signal or some other signaling method). Alternatively, the polling can be performed periodically.


Again, the figures and discussion herein, while sometimes directed to a read operation, for example, are applicable in the other direction as well, because the PCI status gets propagated to both ends—the CPU 102, the PCI bridge, and the packet processor 106 all get that information. Thus, the CPU 102 detects the PCI error for both communication scenarios, where the CPU 102 sends data to the packet processor 106, and where the packet processor 106 sends data to the CPU 102.


Note that, while the above examples have the CPU 102 detect the control plane communication error by the generation of an interrupt to the CPU 102, or by periodic or event-driven (e.g., hotswap) polling of registers, other methods of detecting the error condition, and identifying the affected packet processor(s) 106 may be utilized. This may vary, for instance, by the type of shared bus architecture used in the network switching device 100. As mentioned, the example of a PCI bus is exemplary only.


Continuing with FIG. 5, the discussion will now be directed to recovery steps performed in response to detecting the error. As discussed above, the consequences of communication errors in the control plane 104 resulting from a PCI failure during a read/write transaction involving by a packet processor 106 may include:

    • 1. the affected packet processor gets an invalid packet descriptor address or invalid packet buffer address
    • 2. a packet descriptor ring (whether the one associated with the packet processor, or one associated with another packet processor) in CPU memory gets corrupted
    • 3. the packet buffer(s) get corrupted


When a communication error is detected and the packet processor(s) 106 that faced the error is identified by the CPU 102 via step 504, the host CPU 102 then performs the following actions according to its program code to recover from it:

    • step 506—Communication between the identified packet processor 106 and the host CPU 102 is disabled. In an embodiment, a specific hardware configuration register in the packet processor is modified for this purpose. The modification could be, for example, to set or reset a certain bit or bits in the packet processor register which would correspond to enabling or disabling the transfer of packets to or from the CPU memory. This would be a register which is dependent on the specific manufacturer of the packet processor. It is noted that data communication between the host CPU 102 and other functional unaffected packet processors 106 will not be ceased, and will continue. It is further noted that packet forwarding taking place among the packet processors 106 likewise continues to the extent it is pre-programmed or involves unaffected portions of the control plane. Thus, although communication between the host CPU and the identified affected packet processor(s) 106 is halted per this step, data communication continues in those parts of the switching device 100 that have not experienced a communication error.
    • step 508—The data structures in the CPU memory 112 allocated to the identified affected packet processor 106 are recovered and reinitialized. Thus, in an embodiment of the present invention, only the packet descriptor ring 122 associated with the identified packet processor 106 is recreated by resetting the link portions 132b of its constituent packet descriptors 132 as described during the startup process. The additional data portions 132a are likewise reset. The portions of the packet buffer 134 associated with the packet descriptors 132 are reset; e.g., zero-filled. The buffer address 232 of each packet descriptor is reset to the starting address of its corresponding portion of the packet buffer 134. The data structures used for packet communication that were allocated for the identified affected packet processor 106 are thus recovered, although any data that was in transit between the host CPU 102 and the affected packet processor 106 will be lost. Consequently, repeated communication failures experienced by a packet processor 106 will not result in the accumulation of lost resources (e.g., memory allocated to data structures). This aspect of the present invention prevents the possibility of running out of resources (e.g., allocated memory) if a packet processor 106 experiences repeated communication failures.
    • step 510—The hardware registers in the identified packet processor 106 are updated by the CPU 102 with the address of the first packet descriptor in a re-initialized packet descriptor ring and its buffer address to be used in a next packet transfer.
    • Step 512—The data transfer between the now-restored packet processor 106 and the host CPU 102 is re-enabled.


Thus, in accordance with the present invention, a communication error in a switching device 100 that occurs between a packet processor (s) 106 and the host CPU 102 can be recovered without having to power down the entire switching device 100. This is advantageous because packet switching can continue during the detection and recovery process. Affected packet processor(s) 106 can process and forward packet traffic to the extent necessary forwarding data already is programmed in the memory accessed by the packet processor (or other information or programming of the packet processor allows it to process the packet without data communication with the CPU 102). This maximizes the up time of the switching device 100 during such an error condition.


In the case where more than one packet processor 106 experiences a communication failure with the host CPU 102, the host CPU 102 can identify (more? of FIG. 5) in step 514 each additional failed packet processor 106 and repeat the foregoing recovery steps 506-512. It is noted that the host CPU 102 can detect communication error in packet processors 106 residing among different linecards 107 in a chassis type system. Thus, for example, in step 504 the host CPU 102 might identify an affected packet processor 106 on a first linecard 107 and, in step 514 might identify an affected packet processor 106 on a second linecard. The recovery step 506-512 can be performed for the failed packet processor 106 on the first linecard, and then repeated for the failed packet processor 106 on the second linecard.


In an alternative embodiment, step 514 may be performed after step 506, and then after all affected packet processors 106 are identified, then steps 508-512 may be performed for each of the affected packet processors 106.


The switching device of the present invention recovers from certain communication errors by reestablishing the communication between the host CPU and the affected packet processor in manner that maintains normal packet switching functionality to the greatest possible extent. Since the procedure disrupts only the data transfer between the host CPU 102 and the affected packet processor 106, the data transfer that occurs between host CPU 102 and the other unaffected packet processor(s) 106 and the data transfer that is switched by the packet processors 106 themselves without CPU intervention is not impacted.



FIG. 6. illustrates a process 600 performed in a network switch 100 in accordance with the present invention. Thus, in a step 602, a packet processor 106 receives data at one of its ports from a physical port of a network switch (via a PHY and MAC interface, for example). In the course of processing the packet, a determination is made (step 603) by the receiving packet processor 106 as to whether the packet processor 106 can hardware forward the received packet based on, e.g., pre-programmed forwarding data in the memory 109 accessed by the packet processor. If yes, then the packet processor 106 will forward the received data packet accordingly, in a step 610; i.e., the host CPU 102 is not involved. The flow of steps 602 and 610, since there is no interaction over the shared communication bus with the host CPU 102, can occur at wire speed because the received data packet is hardware forwarded. By contrast, if the destination is not known, then the packet processor 106 will communicate in step 604 with the host CPU 102 over the control plane in order that, e.g., the host CPU 102 might learn from, drop, or assist in the forwarding of, the received packet. In step 608, in the no error condition, the packet is processed by the CPU 102, and further processed and forwarded by the same or a different packet processor 106 accordance with the processing by the CPU. If, during or after this control plane communication, an error is detected by the host CPU 102 in a step 605, then the flow proceeds via step 606 to the processing shown in FIG. 5. During the detection and recovery process, steps 602 and 610 may continue to be performed by the packet processor(s) that are undergoing error recovery via step 606. Other packet processors 106 unaffected by the control plane communications error may continue with steps 601 and 610 using pre-programmed forwarding data, or with steps 604 and 608 where data communication with the host CPU 102 over the shared control plane is necessary to process and forward a particular packet.


The above embodiments are exemplary only, and may be modified without departing from the invention in is broader aspects.

Claims
  • 1. A method in a network device, the method comprising: storing, in a memory associated with a host processor of the network device, a set of data structures used for transferring data, on a shared bus, between the host processor and a plurality of packet processors of the network device, each packet processor in the plurality of packet processors configured to forward, from the network device, one or more packets received by the network device;detecting, by the host processor, an error condition indicative of a communication error between the host processor and a first packet processor from the plurality of packet processors;in response to detection of the error condition: identifying, by the host processor, from the plurality of packet processors, the first packet processor affected by the error condition; andperforming, by the host processor, a set of recovery actions for recovering from the error condition, the set of recovery actions including disabling communication between the host processor and the first packet processor; andwhile the set of recovery actions is being performed, communicating data on the shared bus, between the host processor and at least one packet processor from the plurality of packet processors other than the first packet processor and forwarding, by the first packet processor at least one packet received by the network device using forwarding information programmed prior to the host processor detecting the error condition.
  • 2. The method of claim 1 wherein the shared bus is a shared PCI (peripheral component interconnect) bus.
  • 3. The method of claim 1 wherein the detecting comprises detecting setting of one or more error bits due to a parity error detected on the shared bus.
  • 4. The method of claim 1 wherein the detecting comprises generating an interrupt to the host processor.
  • 5. The method of claim 1 wherein the detecting comprises polling a register.
  • 6. The method of claim 5 wherein the polling is programmed to occur periodically.
  • 7. The method of claim 5 wherein the polling is programmed to occur depending on occurrence of a hotswap.
  • 8. The method of claim 1 wherein the error condition is a timeout.
  • 9. The method of claim 1 wherein the forwarding, by the first packet processor, of the at least one packet includes forwarding the at least one packet to a second packet processor in the plurality of packet processors or forwarding the at least one packet to an output port of the network device.
  • 10. The method of claim 1 wherein the set of recovery actions further comprises restoring, by the host processor, to an initial state a data structure from the set of data structures used for communication, on the shared bus, between the host processor and the first packet processor.
  • 11. The method of claim 10 wherein restoring the data structure includes resetting data values of the data structure with initial data values.
  • 12. The method of claim 1 wherein the set of recovery actions further comprises re-enabling communication between the host processor and the first packet processor.
  • 13. A network device comprising: a control processor with an associated memory; anda plurality of packet processors, each packet processor in the plurality of packet processors configured to forward, from the network device, one or more packets received by the network device;the control processor configured to: store, in the associated memory, a set of data structures used for transferring data, on a shared bus, between the control processor and the plurality of packet processors;in response to detection of an error condition relating to communication between the control processor and a first packet processor from the plurality of packet processors, identify from the plurality of packet processors, the first packet processor affected by the error condition and perform a set of recovery actions for recovering from the error condition, the set of recovery actions including disabling communication with the first packet processor;the first packet processor from the plurality of packet processors configured to: while the set of recovery actions is being performed by the control processor, forward at least one packet received by the network device using forwarding information programmed prior to the host processor detecting the error condition; anda second packet processor from the plurality of packet processors configured to: while the set of recovery actions is being performed by the control processor, continue to communicate on the shared bus with the control processor.
  • 14. The device of claim 13 wherein the shared bus is a shared PCI (peripheral component interconnect) bus.
  • 15. The device of claim 13 wherein the control processor is further configured to detect the error condition by detecting setting of one or more error bits due to a parity error detected on the shared bus.
  • 16. The device of claim 13 wherein the control processor is further configured to detect the error condition by polling a register.
  • 17. The device of claim 16 wherein the polling is programmed to occur periodically.
  • 18. The device of claim 16 wherein the polling is programmed to occur depending on occurrence of a hotswap.
  • 19. The device of claim 13 wherein the error condition is a timeout.
  • 20. The device of claim 13 wherein the first packet processor is configured to forward the at least one data packet by forwarding the at least one data packet to another packet processor in the plurality of packet processors or forwarding the at least one data packet to an output port of the network device.
  • 21. The device of claim 13 wherein: the first packet processor includes at least one data register; andthe control processor is further configured to store initialization data to the at least one data register in performing the set of recovery actions.
  • 22. The device of claim 13 wherein the control processor is further configured to re-enable communication with the first packet processor in performing the set of recovery actions.
CROSS-REFERENCES TO RELATED APPLICATIONS

This application is a continuation application of, and claims priority to, U.S. patent application Ser. No. 11/831,950, filed Jul. 31, 2007, entitled “Recovering From Failures Without Impact On Data Traffic In A Shared Bus Architecture,” which claims priority to U.S. Provisional Application No. 60/860,882, filed Nov. 22, 2006, and U.S. Provisional Application No. 60/937,270, filed Jun. 25, 2007, the entire contents of each of which are herein incorporated by reference for all purposes.

US Referenced Citations (548)
Number Name Date Kind
3866175 Seifert, Jr. et al. Feb 1975 A
4325119 Grandmaison et al. Apr 1982 A
4348725 Farrell et al. Sep 1982 A
4628480 Floyd Dec 1986 A
4667323 Engdahl et al. May 1987 A
4679190 Dias et al. Jul 1987 A
4683564 Young et al. Jul 1987 A
4698748 Juzswik et al. Oct 1987 A
4723243 Joshi et al. Feb 1988 A
4754482 Weiss Jun 1988 A
4791629 Burns et al. Dec 1988 A
4794629 Pastyr et al. Dec 1988 A
4807280 Posner et al. Feb 1989 A
4876681 Hagiwara et al. Oct 1989 A
4896277 Vercellotti et al. Jan 1990 A
4985889 Frankish et al. Jan 1991 A
5101404 Kunimoto et al. Mar 1992 A
5136584 Hedlund Aug 1992 A
5195181 Bryant et al. Mar 1993 A
5208856 Leduc et al. May 1993 A
5224108 McDysan et al. Jun 1993 A
5231633 Hluchyj et al. Jul 1993 A
5280582 Yang et al. Jan 1994 A
5282196 Clebowicz Jan 1994 A
5287477 Johnson et al. Feb 1994 A
5299190 LaMaire et al. Mar 1994 A
5299195 Shah Mar 1994 A
5301192 Henrion Apr 1994 A
5307345 Lozowick et al. Apr 1994 A
5323386 Wiher et al. Jun 1994 A
5365512 Combs et al. Nov 1994 A
5377189 Clark Dec 1994 A
5390173 Spinney et al. Feb 1995 A
5392279 Taniguchi Feb 1995 A
5406643 Burke et al. Apr 1995 A
5408469 Opher et al. Apr 1995 A
5430442 Kaiser et al. Jul 1995 A
5436893 Barnett Jul 1995 A
5461615 Henrion Oct 1995 A
5490258 Fenner Feb 1996 A
5506840 Pauwels et al. Apr 1996 A
5506841 Sandquist Apr 1996 A
5521923 Willmann et al. May 1996 A
5530302 Hamre et al. Jun 1996 A
5539733 Anderson et al. Jul 1996 A
5546385 Caspi et al. Aug 1996 A
5550816 Hardwick et al. Aug 1996 A
5563948 Diehl et al. Oct 1996 A
5566170 Bakke et al. Oct 1996 A
5598410 Stone Jan 1997 A
5600795 Du Feb 1997 A
5619497 Gallagher et al. Apr 1997 A
5640504 Johnson, Jr. Jun 1997 A
5646878 Samra Jul 1997 A
5649089 Kilner Jul 1997 A
5663952 Gentry, Jr. Sep 1997 A
5663959 Nakagawa Sep 1997 A
5666353 Klausmeier et al. Sep 1997 A
5721819 Galles et al. Feb 1998 A
5732080 Ferguson et al. Mar 1998 A
5734826 Olnowich et al. Mar 1998 A
5740176 Gupta et al. Apr 1998 A
5745708 Weppler et al. Apr 1998 A
5751710 Crowther et al. May 1998 A
5802287 Rostoker et al. Sep 1998 A
5802394 Baird et al. Sep 1998 A
5815146 Youden et al. Sep 1998 A
5818816 Chikazawa et al. Oct 1998 A
5835496 Yeung et al. Nov 1998 A
5838684 Wicki et al. Nov 1998 A
5862350 Coulson Jan 1999 A
5864555 Mathur et al. Jan 1999 A
5867675 Lomelino et al. Feb 1999 A
5870538 Manning et al. Feb 1999 A
5872769 Caldara et al. Feb 1999 A
5872783 Chin Feb 1999 A
5875200 Glover et al. Feb 1999 A
5896380 Brown et al. Apr 1999 A
5907566 Benson et al. May 1999 A
5907660 Inoue et al. May 1999 A
5909686 Muller et al. Jun 1999 A
5915094 Kouloheris et al. Jun 1999 A
5920566 Hendel et al. Jul 1999 A
5920886 Feldmeier Jul 1999 A
5936939 Des Jardins et al. Aug 1999 A
5936966 Ogawa et al. Aug 1999 A
5956347 Slater Sep 1999 A
5999528 Chow et al. Dec 1999 A
6000016 Curtis et al. Dec 1999 A
6011910 Chau et al. Jan 2000 A
6016310 Muller et al. Jan 2000 A
6023471 Haddock et al. Feb 2000 A
6031843 Swanbery et al. Feb 2000 A
6035414 Okazawa et al. Mar 2000 A
6038288 Thomas et al. Mar 2000 A
6067298 Shinohara May 2000 A
6067606 Holscher et al. May 2000 A
6076115 Sambamurthy et al. Jun 2000 A
6081522 Hendel et al. Jun 2000 A
6088356 Hendel et al. Jul 2000 A
6094434 Kotzur et al. Jul 2000 A
6101552 Chiang et al. Aug 2000 A
6104696 Kadambi et al. Aug 2000 A
6104700 Haddock et al. Aug 2000 A
6104969 Beeks Aug 2000 A
6108306 Kalkunte et al. Aug 2000 A
6118787 Kalkunte et al. Sep 2000 A
6125417 Bailis et al. Sep 2000 A
6128666 Muller et al. Oct 2000 A
6144668 Bass et al. Nov 2000 A
6147996 Laor et al. Nov 2000 A
6151301 Holden Nov 2000 A
6151497 Yee et al. Nov 2000 A
6154446 Kadambi et al. Nov 2000 A
6157643 Ma Dec 2000 A
6160809 Adiletta et al. Dec 2000 A
6160812 Bauman et al. Dec 2000 A
6172990 Deb et al. Jan 2001 B1
6178520 DeKoning et al. Jan 2001 B1
6181699 Crinion et al. Jan 2001 B1
6185208 Liao Feb 2001 B1
6185222 Hughes Feb 2001 B1
6194666 Hayashida et al. Feb 2001 B1
6195335 Calvignac et al. Feb 2001 B1
6201492 Amar et al. Mar 2001 B1
6212586 Mros et al. Apr 2001 B1
6222845 Shue et al. Apr 2001 B1
6229788 Graves et al. May 2001 B1
6243388 Mussman et al. Jun 2001 B1
6243667 Kerr et al. Jun 2001 B1
6249528 Kothary Jun 2001 B1
6263374 Olnowich et al. Jul 2001 B1
6272144 Berenbaum et al. Aug 2001 B1
6304903 Ward Oct 2001 B1
6307839 Gerszberg et al. Oct 2001 B1
6320859 Momirov Nov 2001 B1
6333929 Drottar et al. Dec 2001 B1
6335932 Kadambi et al. Jan 2002 B2
6335935 Kadambi et al. Jan 2002 B2
6343072 Bechtolsheim et al. Jan 2002 B1
6351143 Guccione et al. Feb 2002 B1
6356550 Williams Mar 2002 B1
6356942 Bengtsson et al. Mar 2002 B1
6359879 Carvey et al. Mar 2002 B1
6363077 Wong et al. Mar 2002 B1
6366557 Hunter Apr 2002 B1
6369855 Chauvel et al. Apr 2002 B1
6370579 Partridge Apr 2002 B1
6421352 Manaka et al. Jul 2002 B1
6424658 Mathur Jul 2002 B1
6424659 Viswanadham et al. Jul 2002 B2
6427185 Ryals et al. Jul 2002 B1
6430190 Essbaum et al. Aug 2002 B1
6442067 Chawla et al. Aug 2002 B1
6457175 Lerche Sep 2002 B1
6459705 Cheng Oct 2002 B1
6460088 Merchant Oct 2002 B1
6463063 Bianchini, Jr. et al. Oct 2002 B1
6466608 Hong et al. Oct 2002 B1
6470436 Croft et al. Oct 2002 B1
6473428 Nichols et al. Oct 2002 B1
6473433 Bianchini, Jr. et al. Oct 2002 B1
6477174 Dooley et al. Nov 2002 B1
6480477 Treadaway et al. Nov 2002 B1
6490280 Leung Dec 2002 B1
6493347 Sindhu et al. Dec 2002 B2
6496502 Fite, Jr. et al. Dec 2002 B1
6505281 Sherry Jan 2003 B1
6510138 Pannell Jan 2003 B1
6522656 Gridley Feb 2003 B1
6532229 Johnson et al. Mar 2003 B1
6532234 Yoshikawa et al. Mar 2003 B1
6535504 Johnson et al. Mar 2003 B1
6549519 Michels et al. Apr 2003 B1
6553370 Andreev et al. Apr 2003 B1
6556208 Congdon et al. Apr 2003 B1
6567404 Wilford May 2003 B1
6570884 Connery et al. May 2003 B1
6577631 Keenan et al. Jun 2003 B1
6587432 Putzolu et al. Jul 2003 B1
6591302 Boucher et al. Jul 2003 B2
6601186 Fox et al. Jul 2003 B1
6606300 Blanc et al. Aug 2003 B1
6628650 Saite et al. Sep 2003 B1
6633580 Torudbakken et al. Oct 2003 B1
6636483 Pannell Oct 2003 B1
6643269 Fan et al. Nov 2003 B1
6654342 Dittia et al. Nov 2003 B1
6654346 Mahalingaiah et al. Nov 2003 B1
6654370 Quirke et al. Nov 2003 B1
6654373 Maher, III et al. Nov 2003 B1
6658002 Ross et al. Dec 2003 B1
6661791 Brown Dec 2003 B1
6671275 Wong et al. Dec 2003 B1
6675258 Bramhall et al. Jan 2004 B1
6677952 Baldwin Jan 2004 B1
6678248 Haddock et al. Jan 2004 B1
6681332 Byrne et al. Jan 2004 B1
6683872 Saito Jan 2004 B1
6687217 Chow et al. Feb 2004 B1
6687247 Wilford et al. Feb 2004 B1
6690757 Bunton et al. Feb 2004 B1
6691202 Vasquez et al. Feb 2004 B2
6696917 Heitner et al. Feb 2004 B1
6697359 George Feb 2004 B1
6697368 Chang et al. Feb 2004 B2
6700894 Shung Mar 2004 B1
6708000 Nishi et al. Mar 2004 B1
6721229 Cole Apr 2004 B1
6721268 Ohira et al. Apr 2004 B1
6721313 Van Duyne Apr 2004 B1
6721338 Sato Apr 2004 B1
6731875 Kartalopoulos May 2004 B1
6735218 Chang et al. May 2004 B2
6745277 Lee et al. Jun 2004 B1
6747971 Hughes et al. Jun 2004 B1
6751224 Parruck et al. Jun 2004 B1
6754881 Kuhlmann et al. Jun 2004 B2
6760305 Pasternak et al. Jul 2004 B1
6765866 Wyatt Jul 2004 B1
6775706 Fukumoto et al. Aug 2004 B1
6778546 Epps et al. Aug 2004 B1
6781990 Puri et al. Aug 2004 B1
6785290 Fujisawa et al. Aug 2004 B1
6788697 Aweya et al. Sep 2004 B1
6792484 Hook Sep 2004 B1
6792502 Pandya et al. Sep 2004 B1
6798740 Senevirathne et al. Sep 2004 B1
6804220 Odenwalder et al. Oct 2004 B2
6804731 Chang et al. Oct 2004 B1
6804815 Kerr et al. Oct 2004 B1
6807179 Kanuri et al. Oct 2004 B1
6807363 Abiko et al. Oct 2004 B1
6810038 Isoyama et al. Oct 2004 B1
6810046 Abbas et al. Oct 2004 B2
6813243 Epps et al. Nov 2004 B1
6813266 Chiang et al. Nov 2004 B1
6816467 Muller et al. Nov 2004 B1
6831923 Laor et al. Dec 2004 B1
6831932 Boyle et al. Dec 2004 B1
6836808 Bunce et al. Dec 2004 B2
6839346 Kametani Jan 2005 B1
6842422 Bianchini Jan 2005 B1
6842903 Weschler Jan 2005 B1
6854117 Roberts Feb 2005 B1
6856600 Russell et al. Feb 2005 B1
6859438 Haddock et al. Feb 2005 B2
6865153 Hill et al. Mar 2005 B1
6873630 Muller et al. Mar 2005 B1
6895528 Cantwell et al. May 2005 B2
6901072 Wong May 2005 B1
6906936 James et al. Jun 2005 B1
6912637 Herbst Jun 2005 B1
6920154 Achler Jul 2005 B1
6925516 Struhsaker et al. Aug 2005 B2
6934305 Duschatko et al. Aug 2005 B1
6937606 Basso et al. Aug 2005 B2
6946948 McCormack et al. Sep 2005 B2
6952419 Cassiday et al. Oct 2005 B1
6957258 Maher, III et al. Oct 2005 B2
6959007 Vogel et al. Oct 2005 B1
6961347 Bunton et al. Nov 2005 B1
6965615 Kerr et al. Nov 2005 B1
6973092 Zhou et al. Dec 2005 B1
6975599 Johnson et al. Dec 2005 B1
6978309 Dorbolo Dec 2005 B1
6980552 Belz et al. Dec 2005 B1
6982974 Saleh et al. Jan 2006 B1
6990102 Kaniz et al. Jan 2006 B1
6993032 Dammann et al. Jan 2006 B1
6996663 Marsteiner Feb 2006 B1
7005812 Mitchell Feb 2006 B2
7009968 Ambe et al. Mar 2006 B2
7009976 Michelson et al. Mar 2006 B1
7010607 Bunton Mar 2006 B1
7012919 So et al. Mar 2006 B1
7050430 Kalkunte et al. May 2006 B2
7050505 Kaku May 2006 B2
7065673 Subramaniam et al. Jun 2006 B2
7080238 Van Hoof et al. Jul 2006 B2
7082133 Lor et al. Jul 2006 B1
7095753 Milliken et al. Aug 2006 B1
7103041 Speiser et al. Sep 2006 B1
7106692 Schulz Sep 2006 B1
7120744 Klein Oct 2006 B2
7126948 Gooch et al. Oct 2006 B2
7126956 Scholten Oct 2006 B2
7151797 Limberg Dec 2006 B2
7161948 Sampath et al. Jan 2007 B2
7167471 Calvignac et al. Jan 2007 B2
7176911 Kidono et al. Feb 2007 B1
7185141 James et al. Feb 2007 B1
7185266 Blightman et al. Feb 2007 B2
7187687 Davis et al. Mar 2007 B1
7188237 Zhou et al. Mar 2007 B2
7190696 Manur et al. Mar 2007 B1
7191277 Broyles Mar 2007 B2
7191468 Hanner Mar 2007 B2
7194652 Zhou et al. Mar 2007 B2
7203194 Chang et al. Apr 2007 B2
7206283 Chang et al. Apr 2007 B2
7212536 Mackiewich et al. May 2007 B2
7218637 Best et al. May 2007 B1
7219293 Tsai et al. May 2007 B2
7228509 Dada et al. Jun 2007 B1
7236490 Chang et al. Jun 2007 B2
7237058 Srinivasan Jun 2007 B2
7249306 Chen Jul 2007 B2
7266117 Davis Sep 2007 B1
7272611 Cuppett et al. Sep 2007 B1
7272613 Sim et al. Sep 2007 B2
7277425 Sikdar Oct 2007 B1
7283547 Hook et al. Oct 2007 B1
7284236 Zhou et al. Oct 2007 B2
7286534 Kloth Oct 2007 B2
7298752 Moriwaki et al. Nov 2007 B2
7324509 Ni Jan 2008 B2
7324553 Varier et al. Jan 2008 B1
7355970 Lor Apr 2008 B2
7356030 Chang et al. Apr 2008 B2
7366100 Anderson et al. Apr 2008 B2
7391769 Rajkumar et al. Jun 2008 B2
7414979 Jarvis Aug 2008 B1
7428693 Obuchi et al. Sep 2008 B2
7468975 Davis Dec 2008 B1
7512127 Chang et al. Mar 2009 B2
7543077 Milliken et al. Jun 2009 B1
7558193 Bradbury et al. Jul 2009 B2
7561590 Walsh Jul 2009 B1
7590760 Banks Sep 2009 B1
7596139 Patel et al. Sep 2009 B2
7606968 Branscome et al. Oct 2009 B2
7609617 Appanna et al. Oct 2009 B2
7613991 Bain Nov 2009 B1
7624283 Bade et al. Nov 2009 B2
7636369 Wong Dec 2009 B2
7649885 Davis Jan 2010 B1
7657703 Singh Feb 2010 B1
7721297 Ward May 2010 B2
7738450 Davis Jun 2010 B1
7782805 Belhadj et al. Aug 2010 B1
7813367 Wong Oct 2010 B2
7817659 Wong Oct 2010 B2
7821972 Finn et al. Oct 2010 B1
7830884 Davis Nov 2010 B2
7903654 Bansal Mar 2011 B2
7933947 Fleischer et al. Apr 2011 B2
7948872 Patel et al. May 2011 B2
7953922 Singh May 2011 B2
7953923 Singh May 2011 B2
7978614 Wong et al. Jul 2011 B2
7978702 Chang et al. Jul 2011 B2
7995580 Patel et al. Aug 2011 B2
8014278 Subramanian et al. Sep 2011 B1
8037399 Wong et al. Oct 2011 B2
8090901 Lin et al. Jan 2012 B2
8140044 Villian et al. Mar 2012 B2
8149839 Hsu et al. Apr 2012 B1
8155011 Wong et al. Apr 2012 B2
8170044 Davis et al. May 2012 B2
8201180 Briscoe et al. Jun 2012 B2
8238255 Suresh et al. Aug 2012 B2
8271859 Wong et al. Sep 2012 B2
8395996 Wong et al. Mar 2013 B2
8448162 Ramanathan et al. May 2013 B2
8493988 Wong et al. Jul 2013 B2
8509236 Zhang et al. Aug 2013 B2
8514716 Patel et al. Aug 2013 B2
8599850 Jha et al. Dec 2013 B2
8619781 Patel et al. Dec 2013 B2
8671219 Davis Mar 2014 B2
8718051 Wong May 2014 B2
8730961 Wong May 2014 B1
8811390 Wong Aug 2014 B2
20010001879 Kubik et al. May 2001 A1
20010007560 Masuda et al. Jul 2001 A1
20010026551 Horlin Oct 2001 A1
20010048785 Steinberg Dec 2001 A1
20010053150 Clear et al. Dec 2001 A1
20020001307 Nguyen et al. Jan 2002 A1
20020012585 Kalkunte et al. Jan 2002 A1
20020040417 Winograd et al. Apr 2002 A1
20020048280 Lee et al. Apr 2002 A1
20020054594 Hoof et al. May 2002 A1
20020054595 Ambe et al. May 2002 A1
20020069294 Herkersdorf et al. Jun 2002 A1
20020073073 Cheng Jun 2002 A1
20020083111 Row et al. Jun 2002 A1
20020085499 Toyoyama et al. Jul 2002 A1
20020087788 Morris Jul 2002 A1
20020089937 Venkatachary et al. Jul 2002 A1
20020091844 Craft et al. Jul 2002 A1
20020091884 Chang et al. Jul 2002 A1
20020126672 Chow et al. Sep 2002 A1
20020131437 Tagore-Brage Sep 2002 A1
20020141403 Akahane et al. Oct 2002 A1
20020146013 Karlsson et al. Oct 2002 A1
20020161929 Longerbeam et al. Oct 2002 A1
20020161967 Kirihata et al. Oct 2002 A1
20020169786 Richek Nov 2002 A1
20020181476 Badamo et al. Dec 2002 A1
20020191605 Van Lunteren et al. Dec 2002 A1
20030009466 Ta et al. Jan 2003 A1
20030012198 Kaganoi et al. Jan 2003 A1
20030033435 Hanner Feb 2003 A1
20030043800 Sonksen et al. Mar 2003 A1
20030043848 Sonksen Mar 2003 A1
20030048785 Calvignac et al. Mar 2003 A1
20030061459 Aboulenein et al. Mar 2003 A1
20030074657 Bramley, Jr. Apr 2003 A1
20030081608 Barri et al. May 2003 A1
20030095548 Yamano May 2003 A1
20030103499 Davis et al. Jun 2003 A1
20030103500 Menon et al. Jun 2003 A1
20030108052 Inoue et al. Jun 2003 A1
20030110180 Calvignac et al. Jun 2003 A1
20030115403 Bouchard et al. Jun 2003 A1
20030120861 Calle et al. Jun 2003 A1
20030128668 Yavatkar et al. Jul 2003 A1
20030137978 Kanetake Jul 2003 A1
20030152084 Lee et al. Aug 2003 A1
20030152096 Chapman Aug 2003 A1
20030156586 Lee et al. Aug 2003 A1
20030159086 Arndt Aug 2003 A1
20030165160 Minami et al. Sep 2003 A1
20030169470 Alagar et al. Sep 2003 A1
20030174719 Sampath et al. Sep 2003 A1
20030177209 Kwok et al. Sep 2003 A1
20030177221 Ould-Brahim et al. Sep 2003 A1
20030198182 Pegrum et al. Oct 2003 A1
20030200343 Greenblat et al. Oct 2003 A1
20030214956 Navada et al. Nov 2003 A1
20030215029 Limberg Nov 2003 A1
20030223424 Anderson et al. Dec 2003 A1
20030223466 Noronha, Jr. et al. Dec 2003 A1
20030227943 Hallman et al. Dec 2003 A1
20040022263 Zhao et al. Feb 2004 A1
20040028060 Kang Feb 2004 A1
20040037302 Varma et al. Feb 2004 A1
20040054867 Stravers et al. Mar 2004 A1
20040062130 Chiang Apr 2004 A1
20040062245 Sharp et al. Apr 2004 A1
20040062246 Boucher et al. Apr 2004 A1
20040083404 Subramaniam et al. Apr 2004 A1
20040083475 Todd et al. Apr 2004 A1
20040088469 Levy May 2004 A1
20040120322 Wu Jun 2004 A1
20040128434 Khanna et al. Jul 2004 A1
20040141504 Blanc Jul 2004 A1
20040190547 Gordy et al. Sep 2004 A1
20040196859 Benner Oct 2004 A1
20040205393 Kitamorn et al. Oct 2004 A1
20040208177 Ogawa Oct 2004 A1
20040208181 Clayton et al. Oct 2004 A1
20040223502 Wybenga et al. Nov 2004 A1
20040235480 Rezaaifar et al. Nov 2004 A1
20040264380 Kalkunte et al. Dec 2004 A1
20050010630 Doering et al. Jan 2005 A1
20050010849 Ryle et al. Jan 2005 A1
20050041684 Reynolds et al. Feb 2005 A1
20050097432 Obuchi et al. May 2005 A1
20050120122 Farnham Jun 2005 A1
20050132132 Rosenbluth et al. Jun 2005 A1
20050132179 Glaum et al. Jun 2005 A1
20050138276 Navada et al. Jun 2005 A1
20050144369 Jaspers Jun 2005 A1
20050152324 Benveniste Jul 2005 A1
20050152335 Lodha et al. Jul 2005 A1
20050169317 Pruecklmayer Aug 2005 A1
20050185577 Sakamoto et al. Aug 2005 A1
20050185652 Iwamoto Aug 2005 A1
20050193316 Chen Sep 2005 A1
20050201387 Willis Sep 2005 A1
20050226236 Klink Oct 2005 A1
20050246508 Shaw Nov 2005 A1
20050249124 Elie-Dit-Cosaque et al. Nov 2005 A1
20060031610 Liav et al. Feb 2006 A1
20060034452 Tonomura Feb 2006 A1
20060050690 Epps et al. Mar 2006 A1
20060077891 Smith et al. Apr 2006 A1
20060092829 Brolin et al. May 2006 A1
20060092929 Chun May 2006 A1
20060114876 Kalkunte Jun 2006 A1
20060146374 Ng et al. Jul 2006 A1
20060165089 Klink Jul 2006 A1
20060209685 Rahman et al. Sep 2006 A1
20060221841 Lee et al. Oct 2006 A1
20060268680 Roberts et al. Nov 2006 A1
20060274749 Beier Dec 2006 A1
20070038798 Bouchard et al. Feb 2007 A1
20070088974 Chandwani et al. Apr 2007 A1
20070127464 Jain et al. Jun 2007 A1
20070179909 Channasagara Aug 2007 A1
20070208876 Davis Sep 2007 A1
20070258475 Chinn et al. Nov 2007 A1
20070288690 Wang et al. Dec 2007 A1
20080002707 Davis Jan 2008 A1
20080025309 Swallow Jan 2008 A1
20080031263 Ervin et al. Feb 2008 A1
20080037544 Yano et al. Feb 2008 A1
20080049742 Bansal et al. Feb 2008 A1
20080069125 Reed et al. Mar 2008 A1
20080092020 Hasenplaugh et al. Apr 2008 A1
20080095169 Chandra et al. Apr 2008 A1
20080117075 Seddigh et al. May 2008 A1
20080126652 Vembu et al. May 2008 A1
20080159309 Sultan et al. Jul 2008 A1
20080181103 Davies Jul 2008 A1
20080205407 Chang et al. Aug 2008 A1
20080307288 Ziesler et al. Dec 2008 A1
20090175178 Yoon et al. Jul 2009 A1
20090207838 Milliken et al. Aug 2009 A1
20090279440 Wong et al. Nov 2009 A1
20090279441 Wong et al. Nov 2009 A1
20090279541 Wong et al. Nov 2009 A1
20090279542 Wong et al. Nov 2009 A1
20090279546 Davis Nov 2009 A1
20090279548 Davis et al. Nov 2009 A1
20090279549 Ramanathan et al. Nov 2009 A1
20090279558 Davis et al. Nov 2009 A1
20090279561 Chang et al. Nov 2009 A1
20090282148 Wong et al. Nov 2009 A1
20090282322 Wong et al. Nov 2009 A1
20090287952 Patel et al. Nov 2009 A1
20090290499 Patel et al. Nov 2009 A1
20100034215 Patel et al. Feb 2010 A1
20100046521 Wong Feb 2010 A1
20100061393 Wong Mar 2010 A1
20100100671 Singh Apr 2010 A1
20100135313 Davis Jun 2010 A1
20100161894 Singh Jun 2010 A1
20100246588 Davis Sep 2010 A1
20110044340 Bansal et al. Feb 2011 A1
20110069711 Jha et al. Mar 2011 A1
20110110237 Wong et al. May 2011 A1
20110173386 Milliken et al. Jul 2011 A1
20120023309 Abraham et al. Jan 2012 A1
20120026868 Chang et al. Feb 2012 A1
20120163389 Zhang et al. Jun 2012 A1
20120236722 Patel et al. Sep 2012 A1
20120294312 Edward et al. Nov 2012 A1
20130034098 Davis Feb 2013 A1
20130305236 Ramanathan et al. Nov 2013 A1
20130343199 Wong et al. Dec 2013 A1
20140023086 Patel et al. Jan 2014 A1
20140133488 Patel et al. May 2014 A1
20140153389 Wong et al. Jun 2014 A1
20140233423 Jha et al. Aug 2014 A1
Foreign Referenced Citations (5)
Number Date Country
1380127 Jan 2004 EP
2003289359 Oct 2003 JP
2004-537871 Dec 2004 JP
WO 0184728 Nov 2001 WO
WO 02041544 May 2002 WO
Non-Patent Literature Citations (293)
Entry
U.S. Appl. No. 13/862,160, filed Apr. 12, 2013 by Ramanathan et al. (Unpublished).
U.S. Appl. No. 13/925,564, filed Jun. 24, 2013 by Wong et al. (Unpublished).
Non-Final Office Action for U.S. Appl. No. 13/458,650 mailed on Oct. 2, 2013, 5 pages.
Notice of Allowance for U.S. Appl. No. 11/745,008 mailed on Oct. 7, 2013, 9 pages.
U.S. Appl. No. 13/766,330, filed Feb. 13, 2013 by Yuen Wong et al. (Unpublished).
International Search Report for Application No. PCT/US03/08719, Mailed Jun. 17, 2003, 1 page.
Belhadj et al., “Feasibility of a 100GE MAC”, PowerPoint Presentation, IEEE Meeting Nov. 2006, Nov. 13-15, 2006, 18 pages.
Braun et al., “Fast incremental CRC updates for IP over ATM networks,” IEEE Workshop on High Performance Switching and Routing, 2001, 6 pages.
10 Gigabit Ethernet—Technology Overview White Paper, Sep. 2001, 16 pages.
10 Gigabit Ethernet Alliance, Interconnection with Wide Area Networks, Version 1.0, Mar. 2002, 6 pages.
Degermark, M., et al., “Small Forwarding Tables for Fast Routing Lookups,” ACM Computer Communications Review 27(4):3-14, Oct. 1997.
Foundry Networks, “BigIron Architecture Technical Brief,” Oct. 1998—Version 1.0, 15 pages.
Foundry Networks, “BigIron Architecture Technical Brief,” Oct. 1998—Version 1.02, 15 pages.
Foundry Networks, “BigIron Architecture Technical Brief,” Dec. 1998—Version 1.03, 14 pages.
Foundry Networks, “BigIron Architecture Technical Brief,” May 1999—Version 2.01, 15 pages.
Foundry Networks, “BigIron Architecture Technical Brief,” Jul. 2001—Version 2.02, 16 pages.
Foundry Networks, “Foundry Networks, Next Generation Terabit System Architecture—The High Performance Revolution for 10 Gigabit Networks,” Nov. 17, 2003, 27 pages.
Gigabit Ethernet Alliance—“Accelerating the Standard for Speed,” Copyright 1998, 19 pages.
Kichorowsky, R., et al., “Mindspeed.TM. Switch Fabric Offers the Most Comprehensive Solution for Multi-Protocol Networking Equipment,” Apr. 30, 2001, 3 pages.
Matsumoto, C., et al., “Switch Fabrics Touted At Interconnects Conference,” Aug. 21, 2000, URL= http://www.eetimes.com/story/OEG2000821S0011, accessed Aug. 12, 2002, 2 pages.
Mcauley, A., et al., “Fast Routing Table Lookup Using CAMs,” Proceedings of INFOCOM, Mar.-Apr. 1993, 10 pages.
Foundry Networks, “JetCore™ Based Chassis Systems—An Architecture Brief on NetIron, BigIron, and FastIron Systems,” Jan. 17, 2003, 27 pages.
Mier Communications, Inc., “Lab Testing Summary Report—Product Category: Layer-3 Switches, Vendor Tested:, Product Tested: Foundry Networks, BigIron 4000,” Report No. 231198, Oct. 1998, 6 pages.
Mier Communications, Inc.,“Lab Testing Summary Report—Product Category: Gigabit Backbone Switches, Vendor Tested: Foundry Networks, Product Tested: BigIron 4000,” Report No. 210998, Sep. 1998, 6 pages.
Mindspeed—A Conexant Business, “Switch Fabric Chipset—CX27300 iScale.TM.,” Apr. 30, 2001, 2 pages.
Mindspeed—A Conexant Business, “17×17 3.2 Gbps Crosspoint Switch with Input Equalization—M21110,” Feb. 1, 2001, 2 pages.
The Tolly Group, “Foundry Networks, Inc.—BigIron 4000, Layer 2 & Layer 3 Interoperability Evaluation,” No. 199133, Oct. 1999, 4 pages.
The Tolly Group, “Foundry Networks, Inc.—BigIron 8000 Gigabit Ethernet Switching Router, Layer 2 & Layer 3 Performance Evaluation,” No. 199111, May 1999, 4 pages.
Satran et al., “Out of Order Incremental CRC Computation,” IEEE Transactions on Computers, vol. 54, Issue 9 Sep. 2005), pp. 1178-1181.
Spurgeon, C., “Éthernet, The Definitive Guide,” O'Reilly & Associates, Inc., Sebastopol, CA, Feb. 2000. (Not being submitted as applicants' believe the Examiner can obtain ad this reference from the file history or issued US Patent Nos. 7,813,367 and 7,812,912).
ANSI/IEEE Standard 802.1D, 1998 Edition, 373 pages.
Newton, Newton's Telecom Dictionary, CMP Books, Mar. 2004, 20th Ed., 3 pages.
International Preliminary Examination Report for Application No. PCT/US2001/043113, mailed Nov. 6, 2003, 6 pages.
Written Opinion of the International Searching Authority for Application No. PCT/US2001/043113, mailed May 1, 2003, 6 pages.
International Search Report for Application No. PCT/US2001/043113, mailed Dec. 13, 2002, 2 pages.
GUPTA et al., “Packet Classification on Multiple Fields,” SIGCOMM '99, Aug. 1999, 14 pages., ACM, Cambridge, MA.
Final Office Action for U.S. Appl. No. 11/745,008, mailed on Jun. 28, 2012, 13 pages.
Final Office Action for U.S. Appl. No. 11/646,845, mailed on Jul. 5, 2012, 17 pages.
Non-Final Office Action for U.S. Appl. No. 12/900,279, mailed Aug. 30, 2012, 9 pages.
Non-Final Office Action for U.S. Appl. No. 12/198,710, mailed Sep. 13, 2012, 18 pages.
Non-Final Office Action for U.S. Appl. No. 13/083,481, mailed Oct. 4, 2012, 9 pages.
Non-Final Office Action for U.S. Appl. No. 12/880,518, mailed Oct. 30, 2012, 7 pages.
Non-Final Office Action for U.S. Appl. No. 13/152,715, mailed on Nov. 13, 2012, 6 pages.
Notice of Allowance for U.S. Appl. No. 11/953,742, mailed on Nov. 13, 2012, 7 pages.
Non-Final Office Action for U.S. Appl. No. 13/398,725, mailed on Nov. 28, 2012, 10 pages.
Non-Final Office Action for U.S. Appl. No. 09/855,024, mailed Jun. 4, 2002, 9 pages.
Final Office Action for U.S. Appl. No. 09/855,024, mailed Jan. 15, 2003, 14 pages.
Advisory Action for U.S. Appl. No. 09/855,024, mailed May 2, 2003, 7 pages.
Notice of Allowance for U.S. Appl. No. 09/855,024, mailed Nov. 3, 2003, 5 pages.
Notice of Allowance for U.S. Appl. No. 09/855,024, mailed Dec. 15, 2003, 3 pages.
Non-Final Office Action for U.S. Appl. No. 10/810,301, mailed Mar. 17, 2005,11 pages.
Non-Final Office Action for U.S. Appl. No. 10/810,301, mailed Feb. 16, 2006, 12 pages.
Non-Final Office Action for U.S. Appl. No. 10/210,041, mailed Sep. 10, 2003, 12 pages.
Final Office Action for U.S. Appl. No. 10/210,041, mailed Jan. 7, 2004, 14 pages.
Non-Final Office Action for U.S. Appl. No. 10/210,041, mailed Mar. 11, 2004, 12 pages.
Final Office Action for U.S. Appl. No. 10/210,041, mailed Jul. 7, 2004, 13 pages.
Non-Final Office Action for U.S. Appl. No. 10/210,041, mailed Feb. 9, 2005, 7 pages.
Final Office Action for U.S. Appl. No. 10/210,041, mailed Aug. 24, 2005, 7 pages.
Advisory Action for U.S. Appl. No. 10/210,041, mailed Dec. 13, 2005, 4 pages.
Notice of Allowance for U.S. Appl. No. 10/810,301, mailed Feb. 6, 2007, 9 pages.
Non-Final Office Action for U.S. Appl. No. 09/855,025, mailed Nov. 23, 2004, 17 pages.
Non-Final Office Action for U.S. Appl. No. 09/855,031, mailed May 22, 2002, 10 pages.
Non-Final Office Action for U.S. Appl. No. 09/855,031, mailed Dec. 10, 2002, 10 pages.
Final Office Action for U.S. Appl. No. 09/855,031, mailed Jul. 30, 2003, 13 pages.
Notice of Allowance for U.S. Appl. No. 09/855,031, mailed Nov. 4, 2003, 5 pages.
Non-Final Office Action for U.S. Appl. No. 10/736,680, mailed Feb. 16, 2006, 18 pages.
Final Office Action for U.S. Appl. No. 10/736,680, mailed Aug. 3, 2006, 10 pages.
Notice of Allowance for U.S. Appl. No. 10/736,680, mailed Feb. 22, 2007, 12 pages.
Non-Final Office Action for U.S. Appl. No. 10/210,108, mailed Jun. 12, 2003, 6 pages.
Notice of Allowance for U.S. Appl. No. 10/210,108, mailed Oct. 7, 2003, 5 pages.
Requirement for Restriction/Election for U.S. Appl. No. 10/438,545, mailed Oct. 31,2003, 3 pages.
Non-Final Office Action for U.S. Appl. No. 10/438,545, mailed Dec. 19, 2003, 5 pages.
Notice of Allowance for U.S. Appl. No. 10/438,545, mailed Jun. 15, 2004, 6 pages.
Non-Final Office Action for U.S. Appl. No. 10/832,086, mailed Sep. 19, 2007, 11 pages.
Final Office Action for U.S. Appl. No. 10/832,086, mailed May 1, 2008, 31 pages.
Advisory Action for U.S. Appl. No. 10/832,086, mailed Jul. 21, 2008, 4 pages.
Non-Final Office Action for U.S. Appl. No. 10/832,086, mailed Sep. 18, 2008, 18 pages.
Non Final Office Action for U.S. Appl. No. 10/832,086, mailed Apr. 1, 2009 ,17 pages.
Final Office Action for U.S. Appl. No. 10/832,086, mailed Sep. 29, 2009, 26 pages.
Non-Final Office Action for U.S. Appl. No. 11/586,991, mailed Oct. 2, 2008, 23 pages.
Non-Final Office Action for U.S. Appl. No. 11/646,845, mailed on Oct. 4, 2010, 47 pages.
Final Office Action for U.S. Appl. No. 11/646,845, mailed on Jun. 9, 2011, 22 pages.
Non-Final Office Action for U.S. Appl. No. 11/646,845, mailed on Oct. 14, 2011, 19 pages.
Final Office Action for U.S. Appl.No. 12/900,279 mailed on Dec. 5, 2012, 8 pages.
Non-Final Office Action for U.S. Appl. No. 11/831,950, mailed Aug. 18, 2009, 49 pages.
Final Office Action for U.S. Appl. No. 11/831,950, mailed on Jan. 6, 2010, 23 pages.
Advisory Action for U.S. Appl. No. 11/831,950, mailed on Mar. 4, 2010, 4 pages.
Non-Final Office Action for U.S. Appl. No. 11/831,950, mailed Aug. 26, 2011, 45 pages.
Final Office Action for U.S. Appl. No. 11/831,950, mailed on Feb. 28, 2012, 20 pages.
Notice of Allowance for U.S. Appl. No. 11/831,950, mailed May 16, 2012, 9 pages.
Non-Final Office Action for U.S. Appl. No. 11/953,742, mailed on Nov. 19, 2009, 51 pages.
Final Office Action for U.S. Appl. No. 11/953,742, mailed on Jun. 14, 2010, 21 pages.
Non-Final Office Action for U.S. Appl. No. 11/953,742, mailed on Mar. 30, 2011, 23 pages.
Final Office Action for U.S. Appl. No. 11/953,742, mailed on Oct. 26, 2011, 19 pages.
Non-Final Office Action for U.S. Appl. No. 11/953,743, mailed on Nov. 23, 2009, 47 pages.
Final Office Action for U.S. Appl. No. 11/953,743, mailed on Jul. 15, 2010, 21 pages.
Notice of Allowance for U.S. Appl. No. 11/953,743, mailed on Apr. 28, 2011, 19 pages.
Non-Final Office Action for U.S. Appl. No. 11/953,745, mailed on Nov. 24, 2009, 48 pages.
Non-Final Office Action for U.S. Appl. No. 11/953,745, mailed on Jun. 14, 2010, 19 pages.
Non-Final Office Action for U.S. Appl. No. 11/953,751, mailed on Nov. 16, 2009, 55 pages.
Final Office Action for U.S. Appl. No. 11/953,751, mailed on Jun. 25, 2010, 24 pages.
Non-Final Office Action for U.S. Appl. No. 11/953,751, mailed on Mar. 29, 2011, 31 pages.
Notice of Allowance for U.S. Appl. No. 11/953,751, mailed Dec. 7, 2011, 12 pages.
Supplemental Notice of Allowance for U.S. Appl. No. 11/953,751, mailed Dec. 27, 2011, 6 pages.
Non-Final Office Action for U.S. Appl. No. 11/779,778, mailed on Feb. 2, 2011, 63 pages.
Notice of Allowance for U.S. Appl. No. 11/779,778, mailed on Jul. 28, 2011, 11 pages.
Non-Final Office Action for U.S. Appl. No. 11/779,714, mailed Sep. 1, 2009, 58 pages.
Non-Final Office Action for U.S. Appl. No. 11/779,714, mailed on Mar. 31, 2010, 29 pages.
Final Office Action for U.S. Appl. No. 11/779,714, mailed on Nov. 9, 2010, 24 pages.
Non-Final Office Action for U.S. Appl. No. 12/624,300, mailed on Dec. 31, 2012, 13 pages.
Non-Final Office Action for U.S. Appl. No. 10/810,208, mailed Jul. 16, 2007, 24 pages.
Non-Final Office Action for U.S. Appl. No. 10/810,208, mailed Dec. 18, 2007, 40 pages.
Final Office Action for U.S. Appl. No. 10/810,208, mailed Jun. 11, 2008, 34 pages.
Advisory Action for U.S. Appl. No. 10/810,208, mailed Aug. 27, 2008, 4 pages.
Non-Final Office Action for U.S. Appl. No. 10/810,208, mailed Feb. 13, 2009, 17 pages.
Non-Final Office Action for U.S. Appl. No. 10/810,208, mailed Aug. 24, 2009, 38 pages.
Non-Final Office Action for U.S. Appl. No. 10/810,208, mailed on Feb. 5, 2010, 15 pages.
Notice of Allowance for U.S. Appl. No. 10/810,208, mailed on Jul. 15, 2010, 15 pages.
Non-Final Office Action for U.S. Appl. No. 11/668,322, mailed on Jun. 22, 2010, 16 pages.
Requirement for Restriction/Election for U.S. Appl. No. 10/140,752, mailed May 18, 2006, 8 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,752, mailed Dec. 14, 2006, 17 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,752, mailed Apr. 23, 2007, 6 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,752, mailed Jan. 24, 2008, 8 pages.
Notice of Allowance of U.S. Appl. No. 10/140,752, mailed Jul. 24, 2008, 14 pages.
Notice of Allowance of U.S. Appl. No. 10/140,752, mailed Sep. 10, 2008, 5 pages.
Non-Final Office Action for U.S. Appl. No. 11/668,322, mailed Mar. 23, 2009, 19 pages.
Requirement for Restriction/Election for U.S. Appl. No. 11/668,322, mailed on Oct. 29, 2009, 6 pages.
Final Office Action for U.S. Appl. No. 11/668,322, mailed on Feb. 24, 2010, 33 pages.
Final Office Action for U.S. Appl. No. 11/668,322, mailed on Feb. 1, 2011, 17 pages.
Non-Final Office Action for U.S. Appl. No. 11/668,322, mailed on Aug. 30, 2011 17 pages.
Notice of Allowance for U.S. Appl. No. 11/668,322, mailed on Feb. 10, 2012, 20 pages.
Non-Final Office Action for U.S. Appl. No. 11/854,486, mailed Jul. 20, 2009, 29 pages.
Non-Final Office Action for U.S. Appl. No. 11/854,486, mailed on Jan. 12, 2010, 23 pages.
Notice of Allowance for U.S. Appl. No. 11/854,486, mailed on Jul. 13, 2010, 12 pages.
Non-Final Office Action for U.S. Appl. No. 10/139,912, mailed Jan. 25, 2006, 14 pages.
Final Office Action for U.S. Appl. No. 10/139,912, mailed Aug. 11, 2006, 26 pages.
Non-Final Office Action for U.S. Appl. No. 10/139,912, mailed Apr. 20, 2007, 20 pages.
Final Office Action for U.S. Appl. No. 10/139,912, mailed Nov. 28, 2007, 20 pages.
Non-Final Office Action for U.S. Appl. No. 10/139,912, mailed Aug. 1, 2008, 21 pages.
Notice of Allowance for U.S. Appl. No. 10/139,912, mailed Feb. 5, 2009, 8 pages.
Notice of Allowance for U.S. Appl. No. 10/139,912, mailed Jun. 8, 2009, 8 pages.
Notice of Allowance for U.S. Appl. No. 10/139,912, mailed on Oct. 19, 2009, 17 pages.
Supplemental Notice of Allowance for U.S. Appl. No. 10/139,912, mailed on Nov. 23, 2009, 4 pages.
Requirement for Restriction/Election for U.S. Appl. No. 10/140,751, mailed Apr. 27, 2006, 5 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,751, mailed Aug. 10, 2006, 15 pages.
Final Office Action for U.S. Appl. No. 10/140,751, mailed Apr. 10, 2007, 16 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,751, mailed Oct. 30, 2007, 14 pages.
Final Office Action for U.S. Appl. No. 10/140,751, mailed May 28, 2008, 19 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,751, mailed Sep. 17, 2008, 16 pages.
Final Office Action for U.S. Appl. No. 10/140,751, mailed Mar. 17, 2009, 17 pages.
Advisory Action for U.S. Appl. No. 10/140,751, mailed Jun. 1, 2009, 3 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,751, mailed on Sep. 28, 2009, 34 pages.
Final Office Action for U.S. Appl. No. 10/140,751, mailed on Mar. 25, 2010, 29 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,751, mailed Dec. 20, 2010, 23 pages.
Final Office Action for U.S. Appl. No. 10/140,751, mailed on Jun. 28, 2011, 23 pages.
Non-Final Office Action for U.S. Appl. No. 11/745,008, mailed May 14, 2009, 27 pages.
Final Office Action for U.S. Appl. No. 11/745,008, mailed on Dec. 30, 2009, 27 pages.
Advisory Action for U.S. Appl. No. 11/745,008, mailed on Apr. 21, 2010, 8 pages.
Non-Final Office Action for U.S. Appl. No. 11/745,008, mailed on Sep. 14, 2011, 26 pages.
Notice of Allowance for U.S. Appl. No. 11/646,845 mailed on Jan. 8, 2013, 8 pages.
Non-Final Office Action for U.S. Appl. No. 10/141,223, mailed Feb. 23, 2006, 25 pages.
Non-Final Office Action for U.S. Appl. No. 10/141,223, mailed Feb. 13, 2007, 29 pages.
Final Office Action for U.S. Appl. No. 10/141,223, mailed Aug. 21, 2007, 25 pages.
Non-Final Office Action for U.S. Appl. No. 10/141,223, mailed Dec. 28, 2007, 13 pages.
Non-Final Office Action for U.S. Appl. No. 10/141,223, mailed Sep. 3, 2008, 22 pages.
Non-Final Office Action for U.S. Appl. No. 10/139,831, mailed Oct. 17, 2005, 7 pages.
Notice of Allowance for U.S. Appl. No. 10/139,831, mailed Feb. 9, 2006, 7 pages.
Non-Final Office Action for U.S. Appl. No. 10/139,831, mailed Jun. 27, 2006, 9 pages.
Final Office Action for U.S. Appl. No. 10/139,831, mailed Nov. 28, 2006, 17 pages.
Notice of Allowance for U.S. Appl. No. 10/139,831, mailed Jun. 14, 2007, 26 pages.
Notice of Allowance for U.S. Appl. No. 10/139,831, mailed Jun. 26, 2007, 10 pages.
Non-Final Office Action for U.S. Appl. No. 11/828,246, mailed Jun. 15, 2009, 26 pages.
Notice of Allowance for U.S. Appl. No. 11/828,246, mailed on Nov. 16, 2009, 4 pages.
Non-Final Office Action for U.S. Appl. No. 12/702,031, mailed on Apr. 29, 2011, 5 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,088, mailed Apr. 27, 2006, 13 pages.
Notice of Allowance for U.S. Appl. No. 10/140,088, mailed Sep. 7, 2006, 13 pages.
Notice of Allowance for U.S. Appl. No. 10/140,088, mailed Oct. 24, 2006, 8 pages.
Notice of Allowance for U.S. Appl. No. 10/140,088, mailed Jan. 11, 2007, 5 pages.
Non-Final Office Action for U.S. Appl. No. 11/621,038, mailed Apr. 23, 2009, 44 pages.
Final Office Action for U.S. Appl. No. 11/621,038, mailed on Dec. 23, 2009, 10 pages.
Notice of Allowance for U.S. Appl. No. 11/621,038, mailed on Apr. 28, 2010, 5 pages.
Non-Final Office Action for U.S. Appl. No. 12/795,492, mailed on Mar. 17, 2011, 15 pages.
Final Office Action for U.S. Appl. No. 12/795,492, mailed on Jul. 20, 2011, 11 pages.
Notice of Allowance for U.S. Appl. No. 12/795,492, mailed on Nov. 14, 2011, 10 pages.
Non-Final Office Action for U.S. Appl. No. 12/198,697, mailed on Feb. 2, 2010, 19 pages.
Final Office Action for U.S. Appl. No. 12/198,697, mailed on Aug. 2, 2010, 22 pages.
Non-Final Office Action for U.S. Appl. No. 12/198,697, mailed on Oct. 25, 2010, 23 pages.
Non-Final Office Action for U.S. Appl. No. 12/198,697, mailed on May 20, 2011, 43 pages.
Notice of Allowance for U.S. Appl. No. 12/198,697, mailed Nov. 28, 2011, 12 pages.
Notice of Allowance for U.S. Appl. No. 12/198,697, mailed Jan. 5, 2012, 4 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,749, mailed Aug. 10, 2006, 22 pages.
Final Office Action for U.S. Appl. No. 10/140,749, mailed Jun. 27, 2007, 23 pages.
Final Office Action for U.S. Appl. No. 10/140,749, mailed Jan. 8, 2008, 23 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,749, mailed Jun. 6, 2008, 28 pages.
Final Office Action for U.S. Appl. No. 10/140,749, mailed Dec. 8, 2008, 30 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,749, mailed May 27, 2009, 38 pages.
Final Office Action for U.S. Appl. No. 10/140,749, mailed Jan. 13, 2010, 28 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,753, mailed Apr. 20, 2006, 11 pages.
Final Office Action for U.S. Appl. No. 10/140,753, mailed Jan. 10, 2007, 27 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,753, mailed Aug. 22, 2007, 14 pages.
Non-Final Office Action for U.S. Appl. No. 10/140,753, mailed Jan. 8, 2008, 14 pages.
Final Office Action for U.S. Appl. No. 10/140,753, mailed Aug. 25, 2008, 22 pages.
Non-Final Office Action for U.S. Appl. No. 12/198,710, mailed on Sep. 28, 2010, 14 pages.
Non-Final Office Action for U.S. Appl. No. 12/198,710, mailed on Mar. 24, 2011, 39 pages.
Final Office Action for U.S. Appl. No. 12/198,710, mailed on Oct. 19, 2011, 58 pages.
Requirement for Restriction/Election for U.S. Appl. No. 11/000,359, mailed Jun. 20, 2008, 7 pages.
Non-Final Office Action for U.S. Appl. No. 11/000,359, mailed Oct. 23, 2008, 10 pages.
Non-Final Office Action for U.S. Appl. No. 11/000,359, mailed May 29, 2009, 14 pages.
Notice of Allowance for U.S. Appl. No. 11/000,359, mailed on Sep. 22, 2009, 4 pages.
Requirement for Restriction/Election for U.S. Appl. No. 12/608,972, mailed May 17, 2012, 5 pages.
Requirement for Restriction/Election for U.S. Appl. No. 11/118,697, mailed Jun. 2, 2009, 8 pages.
Notice of Allowance for U.S. Appl. No. 11/118,697, mailed on Sep. 30, 2009, 7 pages.
Requirement for Restriction/Election for U.S. Appl. No. 12/639,749, mailed on Dec. 7, 2010, 6 pages.
Notice of Allowance for U.S. Appl. No. 12/639,749, mailed on Feb. 11, 2011, 8 pages.
Non-Final Office Action for U.S. Appl. No. 09/855,038, mailed Jun. 2, 2005, 14 pages.
Final Office Action for U.S. Appl. No. 09/855,038, mailed Feb. 7, 2006, 8 pages.
Non-Final Office Action for U.S. Appl. No. 09/855,038, mailed Oct. 4, 2006, 14 pages.
Notice of Allowance for U.S. Appl. No. 09/855,038, mailed Apr. 26, 2007, 8 pages.
Non-Final Office Action for U.S. Appl. No. 12/639,762, mailed on Sep. 1, 2010, 5 pages.
Non-Final Office Action for U.S. Appl. No. 09/988,066, mailed Jul. 14, 2006, 17 pages.
Non-Final Office Action for U.S. Appl. No. 09/988,066, mailed Apr. 6, 2007, 22 pages.
Final Office Action for U.S. Appl. No. 09/988,066, mailed Oct. 31, 2007, 16 pages.
Notice of Allowance for U.S. Appl. No. 12/639,762, mailed on Mar. 4, 2011, 5 pages.
Notice of Allowance for U.S. Appl. No. 09/988,066, mailed Oct. 30, 2008, 8 pages.
Requirement for Restriction/Election for U.S. Appl. No. 09/988,066, mailed Dec. 13, 2005, 7 pages.
Advisory Action for U.S. Appl. No. 09/988,066, mailed May 28, 2008, 4 pages.
Notice of Allowance for U.S. Appl. No. 09/988,066, mailed Jan. 9, 2009, 13 pages.
Non Final Office Action U.S. Appl. No. 11/804,977, mailed Jan. 14, 2008, 13 pages.
Notice of Allowance for U.S. Appl. No. 11/804,977, mailed Nov. 19, 2008, 17 pages.
Non-Final Office Action for U.S. Appl. No. 12/400,594, mailed on May 14, 2010, 19 pages.
Final Office Action for U.S. Appl. No. 12/400,594, mailed on Oct. 28, 2010, 9 pages.
Notice of Allowance for U.S. Appl. No. 12/400,594, mailed on Mar. 23, 2011, 8 pages.
Non-Final Office for U.S. Appl. No. 12/400,645, mailed on Sep. 1, 2010, 8 pages.
Notice of Allowance for U.S. Appl. No. 12/400,645, mailed on Jan. 26, 2011, 12 pages.
Non-Final Office Action for U.S. Appl. No. 12/372,390, mailed on Apr. 22, 2010, 12 pages.
Non-Final Office Action for U.S. Appl. No. 12/372,390, mailed on Sep. 13, 2010, 6 pages.
Notice of Allowance for U.S. Appl. No. 12/372,390, mailed on Mar. 9, 2011, 5 pages.
Non-Final Office Action for U.S. Appl. No. 09/855,015, mailed Oct. 28, 2004, 12 pages.
Non-Final Office Action for U.S. Appl. No. 09/855,015, mailed Jan. 12, 2006, 6 pages.
Notice of Allowance for U.S. Appl. No. 09/855,015, mailed Sep. 8, 2006, 3 pages.
Non-Final Office Action for U.S. Appl. No. 12/505,390, mailed on Oct. 28, 2010, 16 pages.
Notice of Allowance for U.S. Appl. No. 09/855,015, mailed Jan. 7, 2008, 8 pages.
Supplemental Notice of Allowance for U.S. Appl. No. 09/855,015, mailed Feb. 4, 2008, 18 pages.
Non-Final Office Action for U.S. Appl. No. 13/083,481, mailed on Dec. 1, 2011, 7 pages.
Requirement for Restriction/Election for U.S. Appl. No. 09/855,015, mailed Nov. 3, 2006, 6 pages.
Non-Final Office Action for U.S. Appl. No. 12/070,893, mailed on Jun. 10, 2010, 9 pages.
Final Office Action for U.S. Appl. No. 12/070,893, mailed on Nov. 24, 2010, 8 pages.
Non-Final Office Action for U.S. Appl. No. 12/070,893, mailed on Mar. 18, 2011, 6 pages.
Final Office Action for U.S. Appl. No. 12/070,893, mailed on Sep. 21, 2011, 12 pages.
Requirement for Restriction/Election for U.S. Appl. No. 12/466,277, mailed on Aug. 9, 2011, 6 pages.
Notice of Allowance for U.S. Appl. No. 12/466,277, mailed on Nov. 2, 2011, 47 pages.
Non-Final Office Action for U.S. Appl. No. 12/684,022, mailed Jul. 30, 2012, 18 pages.
Non-Final Office Action for U.S. Appl. No. 11/611,067, mailed Feb. 20, 2009, 11 pages.
Final Office Action for U.S. Appl. No. 11/611,067, mailed on Oct. 16, 2009, 8 pages.
Non-Final Office Action for U.S. Appl. No. 11/611,067, mailed on Dec. 8, 2009, 8 pages.
Non-Final Office Action for U.S. Appl. No. 11/615,769, mailed Apr. 15, 2009, 11 pages.
Final Office Action for U.S. Appl. No. 11/615,769, mailed on Jan. 22, 2010, 7 pages.
Advisory Action for U.S. Appl. No. 11/615,769, mailed on May 25, 2010, 3 pages.
Notice of Allowance for U.S. Appl. No. 11/615,769, mailed on Jul. 12, 2010, 8 pages.
Notice of Allowance for U.S. Appl. No. 11/779,714, mailed on Jun. 18, 2012, 7 pages.
Final Office Action for U.S. Appl. No. 12/198,710, mailed on Mar. 21, 2013, 17 pages.
Non-Final Office Action for U.S. Appl. No. 13/083,481, mailed on Mar. 1, 2013, 14 pages.
Notice of Allowance for U.S. Appl. No. 10/810,301, mailed Jul. 28, 2006, 5 pages.
Non-Final Office Action for U.S. Appl. No. 11/745,008, mailed on Mar. 7, 2013, 18 pages.
Non-Final Office Action for U.S. Appl. No. 12/900,279, mailed on Apr. 11, 2013, 7 pages.
Non-Final Office Action for U.S. Appl. No. 12/608,985, mailed on May 31, 2013, 9 pages.
Notice of Allowance for U.S. Appl. No. 12/198,710, mailed on May 28, 2013, 10 pages.
Non-Final Office Action for U.S. Appl. No. 13/398,725, mailed on Aug. 30, 2013, 8 pages.
Notice of Allowance for U.S. Appl. No. 12/684,022, mailed on Aug. 20, 2013, 10 pages.
Notice of Allowance for U.S. Appl. No. 13/083,481, mailed on Sep. 3, 2013, 9 pages.
Non-Final Office Action for U.S. Appl. No. 10/832,086, mailed on Sep. 9, 2013, 13 pages.
Non-Final Office Action for U.S. Appl. No. 12/608,972, mailed on Sep. 16, 2013, 6 pages.
Non-Final Office Action for U.S. Appl. No. 14/075,331 mailed on Aug. 15, 2014, 17 pages.
Non-Final Office Action for U.S. Appl. No. 13/925,564 mailed on Oct. 3, 2014, 9 pages.
Non-Final Office Action for U.S. Appl. No. 13/939,730 mailed on Sep. 25, 2014, 11 pages.
Notice of Allowance for U.S. Appl. No. 14/075,331 mailed on Nov. 12, 2014, 10 pages.
U.S. Appl. No. 14/082,546, filed Nov. 18, 2013 by Jha et al. (Unpublished).
Final Office Action for U.S. Appl. No. 12/900,279 mailed on Sep. 27, 2013, 8 pages.
Non-Final Office Action for U.S. Appl. No. 12/624,300 mailed on Oct. 31, 2013, 16 pages.
Notice of Allowance for U.S. Appl. No. 12/608,985 mailed on Dec. 24, 2013, 7 pages.
Final Office Action for U.S. Appl. No. 12/608,972 mailed on Jan. 17, 2014, 5 pages.
Final Office Action for U.S. Appl. No. 13/398,725 mailed on Mar. 13, 2014, 10 pages.
Notice of Allowance for U.S. Appl. No. 10/832,086 mailed on Mar. 14, 2014 5 pages.
Notice of Allowance for U.S. Appl. No. 12/608,972 mailed on Apr. 9, 2014, 7 pages.
U.S. Appl. No. 14/326,859, filed Jul. 17, 2014 by Wong. (Unpublished).
Non-Final Office Action for U.S. Appl. No. 13/862,160 mailed on Jun. 17, 2014, 11 pages.
Final Office Action for U.S. Appl. No. 12/624,300 mailed on Jun. 27, 2014, 15 pages.
Notice of Allowance for U.S. Appl. No. 13/398,725 mailed on Jun. 24, 2014, 7 pages.
Final Office Action for U.S. Appl. No. 13/485,650 mailed on Jul. 17, 2014, 10 pages.
Non-Final Office Action for U.S. Appl. No. 14/082,546 mailed on Jan. 22, 2015, 9 pages.
Final Office Action for U.S. Appl. No. 13/862,160 mailed on Jan. 23, 2015, 16 pages.
Non-Final Office Action for U.S. Appl. No. 13/766,330 mailed on Jan. 28, 2015, 9 pages.
Notice of Allowance for U.S. Appl. No. 13/939,730 mailed on Feb. 27, 2015, 9 pages.
Related Publications (1)
Number Date Country
20120275294 A1 Nov 2012 US
Provisional Applications (2)
Number Date Country
60937270 Jun 2007 US
60860882 Nov 2006 US
Continuations (1)
Number Date Country
Parent 11831950 Jul 2007 US
Child 13548116 US