US 12,346,610 B2
Virtual queue for messages
Priyanka Nilay Thakore, Mountain View, CA (US); Chen Xiu, Beijing (CN); Zhikai Chen, Shanghai (CN); and Lyle E. Adams, San Jose, CA (US)
Assigned to Beijing Tenafe Electronic Technology Co., Ltd., (CN)
Filed by Beijing Tenafe Electronic Technology Co., Ltd., Beijing (CN)
Filed on Dec. 12, 2023, as Appl. No. 18/537,300.
Application 18/537,300 is a continuation of application No. 18/195,518, filed on May 10, 2023, granted, now 11,899,984.
Claims priority of provisional application 63/392,259, filed on Jul. 26, 2022.
Prior Publication US 2024/0111460 A1, Apr. 4, 2024
Int. Cl. G06F 3/06 (2006.01)
CPC G06F 3/0659 (2013.01) [G06F 3/0604 (2013.01); G06F 3/0673 (2013.01)] 6 Claims
OG exemplary drawing
 
1. A storage controller system implemented on a System On Chip (SOC), comprising:
a host command module that:
manages communication between the storage controller system and a host; and
runs on a first processor module;
a backend command module, wherein:
the backend command module manages communication between the storage controller system and a storage system via a storage interface;
the backend command module runs on a second processor module; and
the host uses the storage controller system to store data in the storage system;
a storage interface hardware functional module that:
in response to an unsuccessful operation directed to the storage system, generates a first type of a status message that includes an automated retry flag in a payload section of the status message set to TRUE; and
in response to a successful operation directed to the storage system, generates a second type of the status message that includes: (1) the automated retry flag set to FALSE and (2) a queue identifier (ID) set to a value associated with the backend command module; and
a virtual queue module that:
receives, from the storage interface hardware functional module, the status message;
selects a virtual queue, from a plurality of virtual queues in a shared queue structure, based at least in part on one or more configurable message handling settings, including by:
in response to (1) the automated retry flag being set to TRUE and (2) independent of the queue ID, selecting an original command virtual queue associated with the unsuccessful operation; and
in response to (1) the automated retry flag being set to FALSE and (2) the queue ID being set to the value associated with the backend command module, selecting a virtual queue associated with the backend command module;
stores a message in the selected virtual queue, including by:
in response to (1) the automated retry flag being set to TRUE and (2) independent of the queue ID, storing a copy of an original command associated with the unsuccessful operation in the original command virtual queue; and
in response to (1) the automated retry flag being set to FALSE and (2) the queue ID being set to the value associated with the backend command module, storing the second type of the status message in the virtual queue associated with the backend command module;
selects a message recipient from a plurality of potential message recipients based at least in part on the one or more configurable message handling settings, wherein the plurality of potential message recipients includes the host command module, the backend command module, and the storage interface hardware functional module; and
provides the stored message in the selected virtual queue to the selected message recipient.