On 19/03/2020 17:57, Edward Cree wrote: > On 11/11/2019 23:29, Pablo Neira Ayuso wrote: >> This patch adds the dataplane hardware offload to the flowtable >> infrastructure. Three new flags represent the hardware state of this >> flow: >> >> * FLOW_OFFLOAD_HW: This flow entry resides in the hardware. >> * FLOW_OFFLOAD_HW_DYING: This flow entry has been scheduled to be remove >> from hardware. This might be triggered by either packet path (via TCP >> RST/FIN packet) or via aging. >> * FLOW_OFFLOAD_HW_DEAD: This flow entry has been already removed from >> the hardware, the software garbage collector can remove it from the >> software flowtable. >> >> This patch supports for: >> >> * IPv4 only. >> * Aging via FLOW_CLS_STATS, no packet and byte counter synchronization >> at this stage. >> >> This patch also adds the action callback that specifies how to convert >> the flow entry into the flow_rule object that is passed to the driver. >> >> Signed-off-by: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> > <snip> >> +static int nf_flow_rule_match(struct nf_flow_match *match, >> + const struct flow_offload_tuple *tuple) >> +{ >> + struct nf_flow_key *mask = &match->mask; >> + struct nf_flow_key *key = &match->key; >> + >> + NF_FLOW_DISSECTOR(match, FLOW_DISSECTOR_KEY_CONTROL, control); >> + NF_FLOW_DISSECTOR(match, FLOW_DISSECTOR_KEY_BASIC, basic); >> + NF_FLOW_DISSECTOR(match, FLOW_DISSECTOR_KEY_IPV4_ADDRS, ipv4); >> + NF_FLOW_DISSECTOR(match, FLOW_DISSECTOR_KEY_TCP, tcp); >> + NF_FLOW_DISSECTOR(match, FLOW_DISSECTOR_KEY_PORTS, tp); >> + >> + switch (tuple->l3proto) { >> + case AF_INET: >> + key->control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; > Is it intentional that mask->control.addr_type never gets set? It should be set. > > -ed