mirror of
https://passt.top/passt
synced 2025-06-11 10:05:34 +02:00
flow, tcp: Add flow-centric dispatch for deferred flow handling
tcp_defer_handler(), amongst other things, scans the flow table and does some processing for each TCP connection. When we add other protocols to the flow table, they're likely to want some similar scanning. It makes more sense for cache friendliness to perform a single scan of the flow table and dispatch to the protocol specific handlers, rather than having each protocol separately scan the table. To that end, add a new flow_defer_handler() handling all flow-linked deferred operations. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
c97bb527d6
commit
b43e4483ed
5 changed files with 28 additions and 17 deletions
19
tcp.c
19
tcp.c
|
@ -1307,7 +1307,7 @@ static struct tcp_tap_conn *tcp_hash_lookup(const struct ctx *c,
|
|||
* @c: Execution context
|
||||
* @flow: Flow table entry for this connection
|
||||
*/
|
||||
static void tcp_flow_defer(struct ctx *c, union flow *flow)
|
||||
void tcp_flow_defer(struct ctx *c, union flow *flow)
|
||||
{
|
||||
const struct tcp_tap_conn *conn = &flow->tcp;
|
||||
|
||||
|
@ -1365,26 +1365,11 @@ static void tcp_l2_data_buf_flush(const struct ctx *c)
|
|||
* tcp_defer_handler() - Handler for TCP deferred tasks
|
||||
* @c: Execution context
|
||||
*/
|
||||
/* cppcheck-suppress [constParameterPointer, unmatchedSuppression] */
|
||||
void tcp_defer_handler(struct ctx *c)
|
||||
{
|
||||
union flow *flow;
|
||||
|
||||
tcp_l2_flags_buf_flush(c);
|
||||
tcp_l2_data_buf_flush(c);
|
||||
|
||||
for (flow = flowtab + c->flow_count - 1; flow >= flowtab; flow--) {
|
||||
switch (flow->f.type) {
|
||||
case FLOW_TCP:
|
||||
tcp_flow_defer(c, flow);
|
||||
break;
|
||||
case FLOW_TCP_SPLICE:
|
||||
tcp_splice_flow_defer(c, flow);
|
||||
break;
|
||||
default:
|
||||
die("Unexpected %s in tcp_defer_handler()",
|
||||
FLOW_TYPE(&flow->f));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue