Patent Publication Number: US-10762017-B2

Title: USB transmission system, USB device, and host capable of USB transmission

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to a USB transmission technique, especially to a USB transmission technique capable of classifying transmission data with a device. 
     2. Description of Related Art 
     Regarding existing techniques, if a Universal Serial Bus (USB) device intends to efficiently transfer data from a memory of the USB device to a system memory of a host through a USB interface, the USB device can reduce the number of transfer times with an aggregation technique and thereby lower the utilization of a CPU of the host. However, since the data transferred from the memory of the USB device to the system memory of the host are not classified, the host need to parse the data it received to find out the type of the data for utilization. 
     The above-mentioned techniques are found in the following literature: Applicant&#39;s US patent (U.S. Pat. No. 9,274,986 B2). 
     SUMMARY OF THE INVENTION 
     An object of the present invention is to provide a USB transmission system, a USB device, and a host capable of USB transmission. The system, device, and host can increase their operation efficiency with the early classification of transmission data. 
     An embodiment of the USB transmission system of the present invention includes a USB device and a host. The USB device is configured to parse a header of an input packet to find out a type of the input packet, then tag the input packet with one of multiple identifications according to the type of the input packet, and then output the input packet to the host. The host is configured to allocate multiple data storage spaces of a system memory that are associated with the multiple identifications respectively, receive the input packet, and store the input packet in a first data storage space according to a first identification included in the input packet, in which the first identification is one of the multiple identifications, the first data storage space is one of the multiple data storage spaces, and the first data storage space is associated with the first identification. 
     An embodiment of the USB device of the present invention includes a device memory, a memory access control circuit, and a USB device controller. The device memory is configured to store an input packet. The memory access control circuit is configured to parse a header of an input packet to find out a type of the input packet, then tag the input packet with one of multiple identifications according to the type of the input packet, and then output the input packet to the USB device controller. The USB device controller is configured to receive a setting message from a host to be informed of the multiple identifications and then provide the multiple identifications for the memory access control circuit; furthermore, the USB device controller is configured to receive the input packet from the memory access control circuit and output the input packet including one of the multiple identifications to the host. 
     An embodiment of the host capable of USB transmission of the present invention includes a system memory and a USB host controller. The system memory is configured to allocate multiple data storage spaces according to the execution of a driver program, in which the multiple data storage spaces are associated with multiple identifications respectively while the multiple identifications are associated with multiple network packet types respectively. The USB host controller is configured to inform a USB device controller of the multiple identifications, receive an input packet from the USB device controller, and store the input packet in a first data storage space associated with a first identification included in the input packet, in which the first identification is one of the multiple identifications and the first data storage space is one of the multiple data storage spaces. 
     These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiments that are illustrated in the various figures and drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  shows an embodiment of the USB transmission system of the present invention. 
         FIG. 2  shows an embodiment of the USB device of  FIG. 1 . 
         FIG. 3  shows an exemplary implementation of the packet transmission carried out by the USB device of  FIG. 2 . 
         FIG. 4  shows an embodiment of the host capable of USB transmission of  FIG. 1 . 
         FIG. 5  shows an embodiment of the USB transmission method of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     The present invention includes a Universal Serial Bus (USB) transmission system, a USB device, and a host capable of USB transmission. The system, device, and host can increase their operation efficiency by the early classification of transmission data; the early classification is preferably carried out by a device that is an intermediary between the source of the transmission data and the destination of the transmission data. 
       FIG. 1  shows an embodiment of the USB transmission system of the present invention. As shown in  FIG. 1 , the USB transmission system  100  includes a USB device  110  and a host  120  capable of USB transmission. The USB device  110  (e.g., USB network adapter such as USB-Ethernet network adapter or USB-Wi-Fi network adapter) is configured to parse the header of an input packet to find out the type of the input packet, then tag the input packet with one of multiple identifications according to the type of the input packet, and then output the input packet to the host  120 . It should be noted one carrying out the present invention can associate different identifications with different packet types (e.g., different network packet types) respectively in accordance with the demand for implementation; it should also be noted that the operation of parsing and tagging a packet can be a known or self-developed operation. The host  120  (e.g., desktop computer, notebook computer, tablet PC, or mobile device) is configured to allocate multiple data storage spaces of a system memory (e.g., the multiple data storage spaces of the system memory  410  of  FIG. 4 ) that are associated with the multiple identifications respectively, receive the input packet from the USB device  110 , and then store the input packet in a first data storage space according to a first identification included in the input packet, in which the first identification is one of the multiple identifications, the first data storage space is one of the multiple data storage spaces, and the first data storage space is associated with the first identification. It should be noted that allocating the multiple data storage space can be realized with a known or self-developed technique. 
     Please refer to  FIG. 1 . In an exemplary implementation of the embodiment of  FIG. 1 , the host  120  determines the multiple identifications and informs the USB device  110  of the multiple identifications so that the USB device can tag the input packet with one of the multiple identifications. For instance, a driver program executed by the host  120  determines the multiple identifications according to default setting or user setting; for another instance, the above-mentioned driver program determines the multiple identifications according to a USB 3.0 standard. In an exemplary implementation of the embodiment of  FIG. 1 , the host  120  allocates the multiple data storage spaces of the system memory, that are associated with the multiple identifications respectively, according to the USB 3.0 standard; more specifically, the USB 3.0 standard specifies a stream mode, the operation of the stream mode establishes several data buffers at the bulk points of a host (e.g., host  120 ) and a device (e.g., USB device  110 ), each bulk point is capable of transmitting stream data in a multimode manner, each stream has its own stream ID, and therefore the host  120  can allocate the multiple data storage spaces associated with the multiple identifications (i.e., stream IDs here) in accordance with the USB 3.0 standard. In an exemplary implementation of the embodiment of  FIG. 1 , the USB device  110  finds out the type of the input packet according to at least one of a source port number and a destination port number included in the header of the input packet; in this case, the input packet is a wired or wireless network packet conforming to Transmission Control Protocol (TCP). Of course the USB device  110  can find out the type of the input packet according to other fields (e.g., a field of Ether Type such as RoCE (RDMA (remote direct memory access) over Converged Ethernet) protocol, or an IP header field indicating the type of service) included in the header of the input packet, especially those fields related with the setting of packet transmission priority and/or the setting of delay. 
       FIG. 2  shows an embodiment of the USB device  110  of  FIG. 1 . As shown in  FIG. 2 , the USB device  110  includes a device memory  210 , a memory access control circuit  220 , and a USB device controller  230 . The device memory  210  (e.g., first-in-first-out buffer, FIFO buffer) is configured to store the input packet and other packets, each of which can be classified as the input packet is classified. The memory access control circuit  220  (e.g., direct memory access controller, DMA controller) is configured to parse the header of the input packet and thereby find out the type of the input packet, then tag the input packet with one of the multiple identifications, and then output the input packet to the USB device controller  230 . The USB device controller  230  is configured to receive a setting message from the host  120  to learn about the multiple identifications and the packet types that are associated with the multiple identifications respectively, and provide the multiple identifications and the packet types for the memory access control circuit  220  to allow the memory access control circuit  220  to identify and tag packets. The USB device controller  230  is also configured to receive the input packet, which has been tagged with one of the multiple identifications, from the memory access control circuit  220  and then output the input packet to the host  120 . In an alternative embodiment of the USB device  110 , the multiple identifications and the packet types respectively associated with the identifications are prestored in the USB device  110 ; in this case, the host  120  can optionally send no setting messages to the USB device  110 . 
     Please refer to  FIG. 2 . When a first predetermined condition (e.g., an occupied amount of the device memory  210  being higher than a first threshold) is satisfied, the memory access control circuit  220  starts an operation of outputting the data of the device memory  210  (including the input packet) to the host  120  through the USB device controller  230 ; before a second predetermined condition (e.g., an output data amount, that is to say the amount of data outputted to the host  120 , reaching a second threshold and being less than the second threshold plus a packet data amount, and/or the occupied amount of the device memory decreasing to zero for a predetermined time) is satisfied, the memory access control circuit  220  continues to execute the operation of outputting the data of the device memory  210  to the host  120  through the USB device controller as long as there exist data in the device memory  210 . After the second predetermined condition is satisfied, the memory access control circuit  220  stops the operation of outputting the data of the device memory  210  to the host  120  through the USB device controller  230 ; for instance, as soon as the output data amount reaches the second threshold, if the memory access control circuit  220  is transmitting a packet to the USB device controller  230 , the memory access control circuit  220  can stop the whole transmission immediately or continue to transmit till the packet is completely transmitted, and accordingly the maximum transmission amount of each transmission process (which starts when the occupied amount is higher than the first threshold and stops when the output data amount reaches the second threshold and doesn&#39;t exceed the second threshold plus the packet data amount) should not be more than the second threshold plus the data packet amount. After the memory access control circuit  220  decides to stop current transmission, the memory access control circuit  220  can inform the USB device controller  230  of the halt of the current transmission with a proper manner (e.g., changing the value of a register that is accessible to the USB device controller  230  or sending a notification signal to the USB device controller  230 ); afterwards, the USB device controller  230  can send a halt signal (e.g., short packet) to the host  120  to inform the host  120  of the halt of the current transmission. Since the above-mentioned transmission operation and the related operation thereof are found in Applicant&#39;s US patent (U.S. Pat. No. 9,274,986 B2) and those of ordinary skill in the art can appreciate how to apply the techniques of the patent to the present invention, repeated and redundant description is omitted here. 
       FIG. 3  shows an exemplary implementation of the packet transmission carried out by the USB device of  FIG. 2 . As shown in  FIG. 2  and  FIG. 3 , the device memory  210  is a FIFO buffer used for successively receiving and storing a plurality of packets P 1 , P 2 , . . . , P K , P K+1 , . . . , P N−1 , and P N , in which both the suffix “K” and the suffix “N” are positive integers. Before the memory access control circuit  220  starts the operation of outputting the data of the device memory  210  to the host  120 , if the aforementioned first predetermined condition (e.g., the total data amount of the packets P 1 , P 2 , . . . , P K−1  plus a partial data amount of the packet P K+1  (which amount to the aforementioned occupied amount) reaching the aforementioned first threshold TH 1 ) is satisfied, this triggers the memory access control circuit  220  to start a bulk-in transfer (BIT) (e.g., one of the bulk-in transfers of BIT 1 , . . . , and BIT M  of  FIG. 3 , in which the suffix “M” is a positive integer) and thus the memory access control circuit  220  receives packets from the device memory  210 , parses the header of each packet, tags each packet with one of the aforementioned multiple identifications (e.g., S A , S B  of  FIG. 3 ) according to the type of the packet to be tagged, and outputs each packet to the host  120  through the USB device controller  230 . The above-mentioned transmission operation will continue till the aforementioned second condition (e.g., the aforementioned output data amount reaching the aforementioned second threshold TH 2  but being less than the second threshold TH 2  plus a packet data amount) is satisfied, and if the second condition is satisfied, the memory access control circuit  220  notifies the USB device controller  230  that the transmission operation is done so as to allow the USB device controller  230  to notify the host  120  of the completion of the transmission operation by sending a halt signal (e.g., the short packet  310  of  FIG. 3 ) to the host  120  and then finish the transmission operation this time (e.g., the transmission of the bulk-in transfer BIT 1  and the short packet  310  following BIT 1 ). The transmission operation next time is similar to the above-mentioned process. 
       FIG. 4  shows an embodiment of the host  120  of  FIG. 1 . As shown in  FIG. 4 , the host  120  includes a system memory  410 , a USB host controller  420 , and a CPU  430 . The system memory  410  is configured to allocate multiple data storage spaces according to the execution of the aforementioned driver program, in which the multiple data storage spaces are associated with multiple identifications respectively while the multiple identifications are associated with multiple network packet types respectively in this embodiment. The USB host controller  420  is configured to inform a USB device controller (e.g., the USB device controller  230  of  FIG. 2 ) of the multiple identifications and the multiple network packet types, receive an input packet from the USB device controller, and store the input packet in a first data storage space associated with a first identification included in the input packet, in which the first identification is associated with a first type of the multiple network packet types and all the data of the first data storage space are data of at least one network packet of the first type. It should be noted that when the USB device controller transmits the aforementioned short packet or some halt signal to the USB host controller  420  to inform the USB host controller  420  of the halt of transmission, the USB host controller  420  sends an interrupt signal to the CPU  430  to request the CPU  430  to process the classified data that are stored in the multiple data storage spaces respectively. Since the above-mentioned data reception operation and storage operation are found in Applicant&#39;s US patent (U.S. Pat. No. 9,274,986 B2) and people of ordinary skill in the art can appreciate how to apply the techniques of the patent to the present invention, repeated and redundant description is omitted here. 
     The present invention further discloses a USB transmission method which can be carried out by the USB transmission system of  FIG. 1 .  FIG. 5  shows an embodiment of the method, including the following steps:
     step S 510 : having a host execute a driver program to determine a maximum transmission amount (e.g., the aforementioned second threshold plus a packet data amount), determine a plurality of packet types, allocate a plurality of data storage spaces of a system memory, and determine a plurality of identifications, in which the identifications are associated with the data storage spaces respectively and associated with the packet types respectively.   step S 520 : having the host provide the maximum transmission amount, the packet types, and the identifications for a USB device.   step S 530 : when a first predetermined condition is satisfied, having the USB device execute a transmission operation including: parsing an input packet according to the packet types to find out the type of the input packet, tagging the input packet with one of the identifications according to the type of the input packet, and outputting the input packet to the host.   step S 540 : before a second predetermined condition is satisfied, having the USB device keep executing the transmission operation; and as soon as the second predetermined condition is satisfied, having the USB device stop the transmission operation.   step S 550 : on the basis of step S 540 , having the USB device inform the host of the halt of the transmission operation so as to let the host process the classified data of packets that are stored in the data storage spaces of the system memory respectively.   

     Since those of ordinary skill in the art can appreciate the detail and modification of the embodiment of  FIG. 5  by referring to the disclosure of the embodiments of  FIGS. 1 ˜ 4 , repeated and redundant description is omitted here. 
     It should be noted that each of the USB device  110  and the host  120  can be implemented alone. It should also be noted that people of ordinary skill in the art can implement the present invention by selectively using some or all of the features of any embodiment in this specification or selectively using some or all of the features of multiple embodiments in this specification as long as such implementation is practicable, which implies that the present invention can be carried out flexibly. 
     To sum up, the USB transmission system, the USB device, and the host capable of USB transmission of the present invention can increase their efficiency of the whole transmission operation with the early classification of data. 
     The aforementioned descriptions represent merely the preferred embodiments of the present invention, without any intention to limit the scope of the present invention thereto. Various equivalent changes, alterations, or modifications based on the claims of present invention are all consequently viewed as being embraced by the scope of the present invention.