A multiple network protocol encoder/decoder comprising a network protocol layer, data handler, O.S. State machine, and memory manager state machines implemented at a hardware gate level. network packets are received from a physical transport level mechanism by the network protocol layer state machine which decodes network protocols such as TCP, IP, User Datagram protocol (UDP), PPP, and Raw Socket concurrently as each byte is received. Each protocol handler parses and strips header information immediately from the packet, requiring no intermediate memory. The resulting data are passed to the data handler which consists of data state machines that decode data formats such as email, graphics, Hypertext Transfer protocol (HTTP), Java, and Hypertext Markup Language (HTML). Each data state machine reacts accordingly to the pertinent data, and any data that are required by more than one data state machine is provided to each state machine concurrently, and any data required more than once by a specific data state machine, are placed in a specific memory location with a pointer designating such data (thereby ensuring minimal memory usage). Resulting display data are immediately passed to a display controller. Any outgoing network packets are created by the data state machines and passed through the network protocol state machine which adds header information and forwards the resulting network packet via a transport level mechanism.
|
1. An apparatus for decoding and encoding network protocols and data, comprising:
a network protocol layer module for receiving and transmitting network packets and for encoding and decoding network packets bytes which comprise packet data;
a data handler module for exchanging said packet data with said network protocol layer module and for processing a at least one specific data type or protocol;
a memory control module in communication with said data handler module for arbitrating memory accesses and for providing display data ; and
an operating system (o.s.) at least one state machine module that is optimized for a single selected network protocol, said o.s. at least one state machine module in communication with said data handler module and providing resource control and system and user interfaces ;
wherein said network protocol layer module, said data handler module, said memory control module, and said operating system (o.s.) at least one state machine module comprise corresponding dedicated hardware structures that are implemented in hardware gate level circuitry.
23. A process for decoding and encoding network protocols and data, said process comprising the steps of:
providing a network protocol layer module for receiving and transmitting network packets and for encoding and decoding network packets bytes which comprise packet data;
providing a data handler module for exchanging said packet data with said network protocol layer module and for processing a at least one specific data type or protocol;
providing a memory control module in communication with said data handler module for arbitrating memory accesses and for providing display data ; and
providing an operating system (o.s.) at least one state machine module that is implemented in hardware and that is optimized for a single selected network protocol, said o.s. at least one state machine module in communication with said data handler module and providing resource control and system and user interfaces ;
wherein said network protocol layer module, said data handler module, said memory control module, and said operating system (o.s.) at least one state machine module comprise corresponding dedicated hardware structures that are implemented in hardware gate level circuitry.
2. The apparatus of
3. The apparatus of claim 2 1, wherein said network protocol layer module implements one or more of the following network protocols: Point to Point protocol (PPP), Internetwork Packet (IP), Transmission control protocol (TCP), Raw Socket, and/or User Datagram protocol (UDP).
7. The apparatus of
8. The apparatus of
9. The apparatus of
13. The apparatus of
14. The apparatus of
16. The apparatus of
17. The apparatus of
18. The apparatus of
19. The apparatus of
21. The apparatus of
22. The apparatus of
24. The process of
representing different network protocols stacks using a plurality of state machines.
25. The process of
encoding and decoding one or more of the following network protocols: Point to Point protocol (PPP), Internetwork Packet (IP), Transmission control protocol (TCP), Raw Socket, and/or User Datagram protocol (UDP).
26. The process of
processing network packets bytes in real time.
27. The process of
processing network packets bytes concurrently.
28. The process of
processing network packet bytes packets in a byte serial fashion.
29. The process of
processing specific data type(s) using at least one state machine.
30. The process of
use of a CRC algorithm to decode data fields.
31. The process of
processing one or more of the following protocols: Hypertext Transfer protocol (HTTP), Hypertext Markup Language (HTML), Post Office protocol (POP3), Internet Message Access protocol (IMAP4), Simple Mail Transfer protocol (SMTP), Joint Photographic Experts Group (JPEG), Graphics Interchange Format (GIF), and/or Java language.
32. The process of
processing packet data bytes in real time.
33. The process of
processing packet data bytes concurrently.
34. The process of
processing packet data bytes in a byte serial fashion.
35. The process of
placing any data more than once by a specific one of said at least one state machine in a specific memory location with a pointer designating said memory location.
36. The process of
37. The process of
38. The process of
arbitrating between said step of encoding and decoding network packet bytes network protocol layer module, said step of processing packet data bytes data handler module, and said step of controlling memory accesses memory control module for resource control, system and user interface.
39. The process of
interpreting system and user input for the purpose of controlling data handler modules and network protocol layer modules.
41. The process of
controlling one of the following types of displays: VGA, television, Liquid Crystal Display (LCD), or Light Emitting Diode (LED).
42. The process of
0. 43. The apparatus of
0. 44. The process of
|
1. Technical Field
The invention relates to network protocols and data packets. More particularly, the invention relates to the decoding of network protocols and processing of packet data during packet reception without the time-consuming overhead of software or software/hardware implementations. In addition, the invention allows one pass parsing of the data, eliminating the buffering of data packets for different stacks, and thus minimizing the memory usage.
2. Description of the Prior Art
Computer networks necessitate the provision of various communication protocols to transmit and receive data. Typically, a computer network comprises a system of devices such as computers, printers and other computer peripherals, communicatively connected together. Data are transferred between each of these devices through data packets which are communicated through the network using a communication protocol standard. Many different protocol standards are in current use today. Examples of popular protocols are Internet Protocol (IP), Internetwork Packet Exchange (IPX), Sequenced Packet Exchange (SPX), Transmission Control Protocol (TCP), and Point to Point Protocol (PPP). Each network device contains a combination of hardware and software that translates protocols and process data.
An example is a computer attached to a Local Area Network (LAN) system, wherein a network device uses hardware to handle the Link Layer protocol, and software to handle the Network, Transport, and Communication Protocols and information data handling. The network device normally implements the one Link Layer protocol in hardware, limiting the attached computer to only that particular LAN protocol. The higher protocols, e.g. Network, Transport, and Communication protocols, along with the Data handlers, are implemented as software programs which process the data once they are passed through the network device hardware into system memory. The advantage to this implementation is that it allows a general purpose device such as the computer to be used in many different network setups and support any arbitrary network application that may be needed. The result of this implementation, however, is that the system requires a high processor overhead, a large amount of system memory, complicated configuration setup on the part of the computer user to coordinate the different software protocol and data handlers communicating to the computer's Operating System (O.S.) and computer and network hardware.
This high overhead required in processing time is demonstrated in U.S. Pat. No. 5,485,460 issued to Schrier et al on Jan. 16, 1996, which teaches a method of operating multiple software protocol stacks implementing the same protocol on a device. This type of implementation is used in Disk Operating System (DOS) based machines running Microsoft Windows. During normal operation, once the hardware verifies the transport or link layer protocol, the resulting data packet is sent to a software layer which determines the packets frame format and strips any specific frame headers. The packet is then sent to different protocol stacks where it is evaluated for the specific protocol. However, the packet may be sent to several protocols stacks before it is accepted or rejected. The time lag created by software protocol stacks prevent audio and video transmissions to be processed in real-time; the data must be buffered before playback. It is evident that the amount of processing overhead required to process a protocol is very high and extremely cumbersome and lends itself to applications with a powerful Central Processing Unit (CPU) and a large amount of memory.
Consumer products that do not fit in the traditional models of a network device are entering the market. A few examples of these products are pagers, cellular phones, game machines, smart telephones, and televisions. Most of these products have small footprints, 8-bit controllers, limited memory or require a very limited form factor. Consumer products such as these are simplistic and require low cost and low power consumption. The previously mentioned protocol implementations require too much hardware and processor power to meet these requirements. The complexity of such implementations are difficult to incorporate into consumer products in a cost effective way. If network access can be simplified such that it may be easily manufactured on a low-cost, low-power, and small form-factor device, these products can access network services, such as the Internet.
The invention provides a low-cost, low-power, easily manufacturable, small form-factor network access module which has a low memory demand and provides a highly efficient protocol decode. The invention comprises a hardware-integrated system that both decodes multiple network protocols in a byte-streaming manner concurrently and processes packet data in one pass, thereby reducing system memory and form factor requirements, while also eliminating software CPU overhead.
The preferred embodiment of the invention comprises a network protocol layer, data handler, O.S. State Machine, and memory manager state machines implemented at a hardware gate level. Network packets are received from a physical transport level mechanism by the network protocol layer state machine. The protocol state machine decodes network protocols such as TCP, IP, User Datagram Protocol (UDP), PPP, and Raw Socket concurrently as each byte is received. Each protocol handler parses, interprets, and strips header information immediately from the packet, requiring no intermediate memory. The resulting data are passed to the next protocol layer or data handler for which the latter case consists of data state machines that decode data formats such as email, graphics, Hypertext Transfer Protocol (HTTP), Java, and Hypertext Markup Language (HTML). Each data state machine reacts accordingly to the pertinent data, and any data that are required by more than one data state machine are provided to each state machine concurrently. Any data that are required more than once by a specific data state machine, are placed in a specific memory location with a pointer designating such data (thereby ensuring minimal memory usage). Resulting display data are immediately passed preformatted to a display controller. Any outgoing network packets are created by the data state machines and passed through the network protocol state machine which adds formats to the packet, and checksums the information header information, and forwards the resulting network packet via a physical transport level mechanism.
The preferred embodiment does not necessarily require a CPU and software to process the network packets, thereby greatly reducing system cost. The hardware gate level implementation provides a modular, embeddable design whereupon the designer may pick and choose the functionality that the particular application requires and still retain a low cost, low power, small form factor.
Referring to
As an example, a data handler that interprets HTML format could decode the HTML tags using a Cyclic Redundancy Check (CRC) calculation. HTML format contains character strings known as tags, which control the formatting of a subsequent block of text when displayed on a video output device. These tags may be efficiently decoded by generating a CRC number for a given tag and using said number to enable a formatting instruction. Such a decoding algorithm is suited for gate level implementation and provides for an HTML encoded document to be displayed on a video output device much more quickly than is currently possible.
Although the invention is described as being at the hardware gate level, one skilled in the art can readily appreciate that these functions may be implemented in many other ways such as Programmable Array Logic (PALs), General Array Logic (GALs), Read Only Memory (ROMs), and software. Additionally, specific protocols and data types have been indicated and one skilled in the art can readily appreciate that the modularity of the invention does not limit it to those specific protocols or data types.
Turning to
As an example, an incoming JPEG image packet is traced through the system, assuming a MODEM physical transport. The request starts with the user indicating a desire to download a given JPEG image by typing on keyboard 321. This input is interpreted by the keyboard interface 316 and passed to the O.S. State machine 315. O.S. State machine 315 processes the input and passes it as a command to the HTTP client 311. The HTTP client creates a request packet and passes it via the Port Decoder 309 to the TCP Layer 308. The TCP Layer prepends the appropriate TCP header and passes it to the IP Layer 307. The IP layer then prepends the appropriate IP header and passes the packet to the PPP layer 306. The PPP Layer prepends the appropriate header, appends an FCS, and passes the data to the Physical Transport Interface 305. The Physical Transport Interface serializes the data into a bit stream and sends the packet to the MODEM unit 304. When the request is accepted by the host server, it sends the requested JPEG image back to the client system. The data are first received by the MODEM 304 which indicates to the Physical Transport Interface 305 that data are present. The Physical Transport interface then reads the bit serial data from the MODEM, converts it to a parallel byte data, and indicates to the PPP Layer 306 that data are present. The PPP Layer reads in the received bytes. When it detects a valid start byte, it begins to parse the incoming bytes. When the byte stream reaches the PPP protocol field, the PPP Layer decodes it, and in this example decodes the embedded packet as being of type IP. In response to this protocol byte, the PPP Layer enables the IP Layer 307 and indicates to it that IP data are being received. All further data bytes received are now passed directly to the IP Layer. The IP Layer then begins to parse the incoming data bytes. When it comes to the IP header protocol field, it determines which higher protocol to enable. In this example, the IP Layer decodes the protocol field as being of type TCP. At this point, the IP Layer enables the TCP Layer 308 and indicates to it when TCP data are being received. When this indicator goes active, all further data bytes in the received packets are sent to both the IP and TCP Layers (IP Layer needs the data bytes to complete checksum calculations). The TCP Layer then begins to parse the incoming data bytes. When it comes to the TCP header destination port field, it determines which data handler to enable. In this example, the PORT field decodes to the HTTP client 311. At this point, the PORT decoder enables the HTTP client and indicate to it that HTTP requested data are being received. The HTTP client then begins to parse received data bytes. When the HTTP client determines that the packet is of type JPEG image, the HTTP client enables the JPEG decoder 313. At this point, all data bytes are now routed to the JPEG decoder. The JPEG decoder then receives all further incoming data bytes and processes them accordingly. The resulting decoded image is sent to the display memory via the Memory Controller 312 to be processed by the Display Controller 324 for output to display device 326.
As also noted in
Turning to
Turning to
Referring to
The following application examples further illustrate the versatility of the modular design of the invention.
Turning to
Referring to
Turning finally to
Example of Packet Reception
PPP header
IP header
TCP header
JPEG Data
PPP FCS (Field Checksum)
The line labeled PPP LAYER ENABLE is activated when a valid start byte is detected, and is generated within the PPP block in FIG. 13. Once this line goes high, the rest of the PPP block is activated. Within the PPP header is a field indicating the type of protocol that the PPP packet is encapsulating. In an uncompressed PPP header, these are bytes 4 and 5 (counting the start byte 0×7e). In
Although the invention is described herein with reference to the preferred embodiment, one skilled in the art will readily appreciate that other applications may be substituted for those set forth herein without departing from the spirit and scope of the present invention. Accordingly, the invention should only be limited by the Claims included below.
Koyama, Ryo, Minami, John Shigeto, Johnson, Michael Ward, Shinohara, Masaru, Poff, Thomas C., Burkes, Daniel F.
Patent | Priority | Assignee | Title |
8135842, | Aug 16 2000 | Nvidia Corporation | Internet jack |
Patent | Priority | Assignee | Title |
5012489, | Nov 07 1988 | TELOGY NETWORKS, INC | Method for sending a plurality of data channels over a single communications line |
5161193, | Jun 29 1990 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Pipelined cryptography processor and method for its use in communication networks |
5303344, | Feb 23 1990 | Hitachi, Ltd. | Protocol processing apparatus for use in interfacing network connected computer systems utilizing separate paths for control information and data transfer |
5307413, | Jul 19 1991 | CLUSTER, LLC; Optis Wireless Technology, LLC | Method and apparatus for adding data compression and other services in a computer network |
5426694, | Oct 08 1993 | Excel Switching Corporation | Telecommunication switch having programmable network protocols and communications services |
5430727, | Sep 04 1990 | ENTERASYS NETWORKS, INC | Multiple protocol routing |
5440551, | Jan 05 1993 | Juniper Networks, Inc | Multimedia packet communication system |
5495480, | Jun 21 1993 | NEC CORPORATION, A CORP OF JAPAN | Packet transmission system having timer for circuit disconnection |
5499353, | Mar 30 1993 | SAMSUNG ELECTRONICS CO , LTD | Cache address strobe control logic for stimulated bus cycle initiation |
5519704, | Apr 21 1994 | Cisco Technology, Inc | Reliable transport protocol for internetwork routing |
5546453, | Oct 08 1983 | Excel Switching Corporation | Telecommunication switch having programmable network protocols and communications services |
5566170, | Dec 29 1994 | NETWORK SYSTEMS CORP | Method and apparatus for accelerated packet forwarding |
5577105, | Mar 11 1994 | QUARTERHILL INC ; WI-LAN INC | Telephone call routing and switching techniques for data communications |
5577172, | Jul 01 1994 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | High-capacity protocol for packet-based networks |
5577237, | Jan 23 1995 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Protocol timer and method of using same |
5598410, | Dec 29 1994 | NETWORK SYSTEMS CORP | Method and apparatus for accelerated packet processing |
5619650, | Dec 31 1992 | International Business Machines Corporation | Network processor for transforming a message transported from an I/O channel to a network by adding a message identifier and then converting the message |
5625678, | May 24 1995 | Microsoft Technology Licensing, LLC | Method and system for allowing switched voice and data communication among multiple application programs |
5625825, | Oct 21 1993 | LSI Logic Corporation | Random number generating apparatus for an interface unit of a carrier sense with multiple access and collision detect (CSMA/CD) ethernet data network |
5634015, | Feb 06 1991 | IBM Corporation | Generic high bandwidth adapter providing data communications between diverse communication networks and computer system |
5636371, | Jun 07 1995 | Bull HN Information Systems Inc.; BULL HN INFORMATION SYSTEMS INC | Virtual network mechanism to access well known port application programs running on a single host system |
5640394, | Aug 19 1994 | Microsoft Technology Licensing, LLC | System and method for running multiple incompatible network protocol stacks |
5663951, | Nov 24 1993 | Intel Corporation | Delayed transmission of data packets over networks |
5666362, | Jul 25 1995 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Method and apparatus for asynchronous PPP and synchronous PPP conversion |
5675507, | Apr 28 1995 | ADVANCED MESSAGING TECHNOLOGIES, INC | Message storage and delivery system |
5687314, | Jun 02 1989 | MICRAL, INC | Method and apparatus for assisting data bus transfer protocol |
5696899, | Nov 18 1992 | Canon Kabushiki Kaisha | Method and apparatus for adaptively determining the format of data packets carried on a local area network |
5699350, | Oct 06 1995 | Canon Kabushiki Kaisha | Reconfiguration of protocol stacks and/or frame type assignments in a network interface device |
5701316, | Aug 31 1995 | Unisys Corporation | Method for generating an internet protocol suite checksum in a single macro instruction |
5727149, | Dec 22 1994 | Hitachi, Ltd. | Network interface apparatus and data transmission control method thereof |
5734865, | Jun 07 1995 | Bull HN Information Systems Inc.; BULL HN INFORMATION SYSTEMS INC | Virtual local area network well-known port routing mechanism for mult--emulators in an open system environment |
5748905, | Aug 30 1996 | FUJITSU LIMITED, A JAPANESE CORPORATION | Frame classification using classification keys |
5754540, | Jul 18 1995 | MACRONIX AMERICA, INC | Expandable integrated circuit multiport repeater controller with multiple media independent interfaces and mixed media connections |
5761281, | Mar 11 1994 | QUARTERHILL INC ; WI-LAN INC | Telephone call routing and switching techniques for data communications |
5790546, | Jan 28 1994 | ENTERASYS NETWORKS, INC | Method of transmitting data packets in a packet switched communications network |
5790676, | Nov 23 1994 | Hughes Electronics Corporation | Radio port controller in a wireless personal communications system |
5802278, | May 10 1995 | Hewlett Packard Enterprise Development LP | Bridge/router architecture for high performance scalable networking |
5802287, | Oct 20 1993 | Intel Corporation | Single chip universal protocol multi-function ATM network interface |
5802306, | Oct 31 1995 | International Business Machines Corporation | Supporting multiple client-server sessions from a protocol stack associated with a single physical adapter through use of a plurality of logical adapters |
5805816, | May 12 1992 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Network packet switch using shared memory for repeating and bridging packets at media rate |
5809235, | Mar 08 1996 | International Business Machines Corporation | Object oriented network event management framework |
5815516, | Apr 05 1996 | International Business Machines Corporation | Method and apparatus for producing transmission control protocol checksums using internet protocol fragmentation |
5818935, | Mar 10 1997 | Internet enhanced video system | |
5826032, | Feb 12 1996 | University of Southern California | Method and network interface logic for providing embedded checksums |
5870549, | Apr 28 1995 | ADVANCED MESSAGING TECHNOLOGIES, INC | Systems and methods for storing, delivering, and managing messages |
5872919, | May 07 1997 | GLOBALFOUNDRIES Inc | Computer communication network having a packet processor with an execution unit which is variably configured from a programmable state machine and logic |
5894557, | Mar 29 1996 | International Business Machines Corporation | Flexible point-to-point protocol framework |
5909546, | Mar 08 1996 | HANGER SOLUTIONS, LLC | Network interface having support for allowing remote operations with reply that bypass host computer interaction |
5920732, | Jul 01 1996 | Apple Inc | System for preallocating additional larger buffer sizes in accordance with packet sizes of discarded packets that can't be stored in existing preallocated buffer sizes |
5935268, | Jun 03 1997 | RPX CLEARINGHOUSE LLC | Method and apparatus for generating an error detection code for a modified data packet derived from an original data packet |
5937169, | Oct 29 1997 | Hewlett Packard Enterprise Development LP | Offload of TCP segmentation to a smart adapter |
5941988, | Jan 27 1997 | International Business Machines Corporation; IBM Corporation | Session and transport layer proxies via TCP glue |
5943481, | May 07 1997 | Advanced Micro Devices, Inc. | Computer communication network having a packet processor with subsystems that are variably configured for flexible protocol handling |
5974518, | Apr 10 1997 | MILGO SOLUTIONS, INC | Smart buffer size adaptation apparatus and method |
5999974, | Aug 29 1997 | International Business Machines Corporation | Internet protocol assists for high performance LAN connections |
6014699, | Aug 29 1997 | International Business Machines Corporation | Internet protocol assists for high performance LAN connections |
6061742, | Oct 10 1997 | AVAYA Inc | Computer network adaptor |
6076115, | Feb 11 1997 | SECURE AXCESS LLC | Media access control receiver and network management system |
6081846, | May 08 1997 | Microsoft Technology Licensing, LLC | Method and computer program product for reducing intra-system data copying during network packet processing |
6092110, | Oct 23 1997 | AT&T MOBILITY II LLC | Apparatus for filtering packets using a dedicated processor |
6092229, | Oct 09 1996 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Single chip systems using general purpose processors |
6098188, | Feb 14 1992 | THE CHASE MANHATTAN BANK, AS COLLATERAL AGENT | Packet framer |
6101543, | Oct 25 1996 | Hewlett Packard Enterprise Development LP | Pseudo network adapter for frame capture, encapsulation and encryption |
6151625, | Sep 10 1997 | Schneider Automation Inc. | Internet web interface including programmable logic controller for controlling output devices based on status of input devices |
6157955, | Jun 15 1998 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
6172980, | Sep 11 1997 | PLECTRUM LLC | Multiple protocol support |
6172990, | Jun 19 1997 | SECURE AXCESS LLC | Media access control micro-RISC stream processor and method for implementing the same |
6173333, | Jul 18 1997 | Interprophet Corporation | TCP/IP network accelerator system and method which identifies classes of packet traffic for predictable protocols |
6182228, | Aug 17 1998 | International Business Machines Corporation | System and method for very fast IP packet filtering |
6230193, | Oct 31 1996 | Hewlett Packard Enterprise Development LP | Method and apparatus supporting network communications |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 06 2002 | Nvidia Corporation | (assignment on the face of the patent) | / | |||
Feb 28 2003 | iReady Corporation | National Semiconductor Corporation | SECURITY AGREEMENT | 013447 | /0365 | |
Feb 28 2003 | iReady Corporation | RWI GROUP III, L P , AS COLLATERAL AGENT | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 013447 | /0460 | |
Nov 14 2003 | iReady Corporation | TELOS VENTURE PARTNERS II, L P , AS COLLATERAL AGENT | SECURITY AGREEMENT | 014128 | /0994 | |
Mar 11 2004 | iReady Corporation | LANZA TECHVENTURE, COLLATERAL AGENT | SECURITY AGREEEMENT | 014409 | /0910 | |
Mar 11 2004 | iReady Corporation | LANZA TECHVENTURE AS COLLETERAL AGENT | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 014428 | /0212 | |
Apr 14 2004 | iReady Corporation | GLEN PATENT GROUP | MECHANICS LIEN | 015215 | /0490 | |
Apr 15 2004 | National Semiconductor Corporation | iReady Corporation | TERMINATION OF SECURITY INTEREST IN PATENTS | 014556 | /0265 | |
Apr 15 2004 | RWI GROUP III, L P , AS COLLATERAL AGENT | iReady Corporation | TERMINATION OF SECURITY INTEREST IN PATENTS | 014556 | /0316 | |
Apr 15 2004 | LANZA TECHVENTURE, AS COLLATERAL AGENT | iReady Corporation | TERMINATION OF SECURITY INTEREST IN PATENTS | 014556 | /0307 | |
Apr 15 2004 | TELOS VENTURE PARTNERS II, L P | iReady Corporation | TERMINATION OF SECURITY INTEREST IN PATENTS | 014556 | /0326 | |
Apr 21 2004 | iReady Corporation | Nvidia Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 015320 | /0112 | |
May 05 2004 | GLENN PATENT GROUP | iReady Corporation | RELEASE OF MECHANICS LIEN | 014615 | /0943 |
Date | Maintenance Fee Events |
Aug 30 2007 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Sep 10 2007 | STOL: Pat Hldr no Longer Claims Small Ent Stat |
Aug 10 2011 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Mar 06 2010 | 4 years fee payment window open |
Sep 06 2010 | 6 months grace period start (w surcharge) |
Mar 06 2011 | patent expiry (for year 4) |
Mar 06 2013 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 06 2014 | 8 years fee payment window open |
Sep 06 2014 | 6 months grace period start (w surcharge) |
Mar 06 2015 | patent expiry (for year 8) |
Mar 06 2017 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 06 2018 | 12 years fee payment window open |
Sep 06 2018 | 6 months grace period start (w surcharge) |
Mar 06 2019 | patent expiry (for year 12) |
Mar 06 2021 | 2 years to revive unintentionally abandoned end. (for year 12) |