发明名称 |
System method for deterministic message processing a direct memory access (DMA) adapter with head pointers and tail pointers for determining the in and out sequence of packets |
摘要 |
Deterministic message processing in a direct memory access (DMA) adapter includes the DMA adapter incrementing from a sub-head pointer, a sub-tail pointer until encountering an out-of-sequence packet. The DMA adapter also consumes packets between the sub-head pointer and the sub-tail pointer including incrementing with the consumption of each packet, the sub-head pointer until determining that the sub-head pointer is equal to the sub-tail pointer. In response to determining that the sub-head pointer is equal to the sub-tail pointer, the DMA adapter determines whether the head pointer is pointing to the next in-sequence packet. If the head pointer is pointing to the next in-sequence packet, the DMA adapter resets the sub-head pointer and the sub-tail pointer to the head pointer. If the head pointer is not pointing to the next in-sequence packet, the DMA adapter resets the sub-head pointer and the sub-tail pointer to the next in-sequence packet. |
申请公布号 |
US9170966(B2) |
申请公布日期 |
2015.10.27 |
申请号 |
US201414270755 |
申请日期 |
2014.05.06 |
申请人 |
International Business Machines Corporation |
发明人 |
Blocksome Michael A. |
分类号 |
G06F13/00;G06F13/30 |
主分类号 |
G06F13/00 |
代理机构 |
Kennedy Lenart Spraggins LLP |
代理人 |
Lenart Edward J.;Nock James R.;Kennedy Lenart Spraggins LLP |
主权项 |
1. A method of deterministic message processing in a direct memory access (DMA) adapter, the DMA adapter utilizing a first-in-first-out (FIFO) message queue for processing packets received by the DMA adapter, the DMA adapter using a head pointer, a tail pointer, a sub-head pointer, and a sub-tail pointer to point to particular packets within the FIFO message queue, the method comprising iteratively performing the following steps by a DMA adapter:
incrementing from the sub-head pointer, the sub-tail pointer until encountering an out-of-sequence packet; consuming packets between the sub-head pointer and the sub-tail pointer including incrementing with the consumption of each packet, the sub-head pointer until determining that the sub-head pointer is equal to the sub-tail pointer; in response to determining that the sub-head pointer is equal to the sub-tail pointer, determining whether the head pointer is pointing to the next in-sequence packet; if the head pointer is pointing to the next in-sequence packet, resetting the sub-head pointer and the sub-tail pointer to the head pointer; and if the head pointer is not pointing to the next in-sequence packet, resetting the sub-head pointer and the sub-tail pointer to the next in-sequence packet. |
地址 |
Armonk NY US |