System and method for low latency packet processing
Systems and methods are described herein for processing data packets. An example network adapter may include a network interface operatively coupled to a communication network and a packet processing circuitry operatively coupled to the network interface. The packet processing circuitry may receive, via the network interface, a message; retrieve, via a packet processing circuitry, a work queue element (WQE) index identifying a position of a WQE in a receive queue; determine that the message is associated with a small payload; process the message without consuming the WQE; receive, via the network interface, a subsequent message; and process the subsequent message using the WQE. In this way, the systems and methods describe herein reduce the latency in processing of the data packets.
1 . A network adapter, comprising:
a network interface operatively coupled to a communication network;
packet processing circuitry operatively coupled to the network interface, wherein the packet processing circuitry is configured to:
receive, via the network interface, a message;
retrieve a work queue element (WQE) index identifying a position of an inline WQE in a receive queue;
determine that the message is associated with a small payload that does not require writing to one or more memory indices associated with a memory;
process the message without consuming the WQE;
generate a completion queue element (CQE) indicating that the message was processed without consuming the WQE, thereby uncoupling a correlation between the WQE and the CQE;
receive, via the network interface, a subsequent message; and
process the subsequent message using the WQE.
2 . The network adapter of claim 1 , wherein the subsequent message is not associated with a small payload.
3 . The network adapter of claim 1 , wherein the packet processing circuitry is further configured to:
write the message to a completion notification indicating that the message has been processed.
4 . The network adapter of claim 1 , wherein the packet processing circuitry is further configured to:
determine a receive queue state associated with the receive queue prior to receiving the message; and
maintain the receive queue state in response to processing the message.
5 . The network adapter of claim 1 , wherein the message comprises an immediate message.
6 . The network adapter of claim 1 , wherein, in generating the CQE, the packet processing circuitry is further configured to:
transmit, to a driver program, a notification comprising instructions to not post a new WQE in the receive queue.
7 . A method for processing data packets, the method comprising:
receiving, via a network interface, a message;
retrieving a work queue element (WQE) index identifying a position of an inline WQE in a receive queue;
determining, via a packet processing circuitry, that the message is associated with a small payload that does not require writing to one or more memory indices associated with a memory;
processing, via the packet processing circuitry, the message without consuming the WQE;
generating, via the packet processing circuitry, a completion queue element (CQE) indicating that the message was processed without consuming the WQE, thereby uncoupling a correlation between the WQE and the CQE;
receiving, via the network interface, a subsequent message; and
processing, via the packet processing circuitry, the subsequent message using the WQE.
8 . The method of claim 7 , wherein the subsequent message is not associated with a small payload.
9 . The method of claim 7 , wherein the method further comprises writing the message to a completion notification indicating that the message has been processed.
10 . The method of claim 7 , wherein the method further comprises:
determining a receive queue state associated with the receive queue prior to receiving the message; and
maintaining the receive queue state in response to processing the message.
11 . The method of claim 7 , wherein the message comprises an immediate message.
12 . The method of claim 7 , wherein generating the CQE further comprises transmitting, to a driver program, a notification comprising instructions to not post a new WQE in the receive queue.
13 . A computer program product for processing data packets, the computer program product comprising a non-transitory computer-readable medium comprising code configured to cause an apparatus to:
receive, via a network interface, a message;
retrieve, via a packet processing circuitry, a work queue element (WQE) index identifying a position of an inline WQE in a receive queue;
determine that the message is associated with a small payload that does not require writing to one or more memory indices associated with a memory;
process, via the packet processing circuitry, the message without consuming the WQE;
generate, via the packet processing circuitry, a completion queue element (CQE) indicating that the message was processed without consuming the WQE, thereby uncoupling a correlation between the WQE and the CQE;
receive, via a network interface, a subsequent message; and
process, via the packet processing circuitry, the subsequent message using the WQE.
14 . The computer program product of claim 13 , wherein the subsequent message is not associated with a small payload.
15 . The computer program product of claim 13 , wherein the code is further configured to cause the apparatus to:
write the message to a completion notification indicating that the message has been processed.
16 . The computer program product of claim 13 , wherein the code is further configured to cause the apparatus to:
determine a receive queue state associated with the receive queue prior to receiving the message; and
maintain the receive queue state in response to processing the message.
17 . The computer program product of claim 13 , wherein the message comprises an immediate message.
18 . The computer program product of claim 13 , wherein, in generating the CQE, the code is further configured to cause the apparatus to:
transmit, to a driver program, a notification comprising instructions to not post a new WQE in the receive queue.