From: wenxu <wenxu@ucloud.cn>
To: Pablo Neira Ayuso <pablo@netfilter.org>, netfilter-devel@vger.kernel.org
Subject: Re: [PATCH nf-next 8/9] netfilter: flowtable: add flow_offload_tuple() helper
Date: Tue, 14 Jan 2020 13:58:26 +0800 [thread overview]
Message-ID: <b7313b85-3c93-fba5-ea8f-47cdd5d7e4f7@ucloud.cn> (raw)
In-Reply-To: <20200113181554.52612-8-pablo@netfilter.org>
On 1/14/2020 2:15 AM, Pablo Neira Ayuso wrote:
> Consolidate code to configure the flow_cls_offload structure into one
> helper function.
>
> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
> ---
> net/netfilter/nf_flow_table_offload.c | 47 ++++++++++++++++++-----------------
> 1 file changed, 24 insertions(+), 23 deletions(-)
>
> diff --git a/net/netfilter/nf_flow_table_offload.c b/net/netfilter/nf_flow_table_offload.c
> index 77b129f196c6..a08756dc96e4 100644
> --- a/net/netfilter/nf_flow_table_offload.c
> +++ b/net/netfilter/nf_flow_table_offload.c
> @@ -592,23 +592,25 @@ static void nf_flow_offload_init(struct flow_cls_offload *cls_flow,
> cls_flow->cookie = (unsigned long)tuple;
> }
>
> -static int flow_offload_tuple_add(struct flow_offload_work *offload,
> - struct nf_flow_rule *flow_rule,
> - enum flow_offload_tuple_dir dir)
> +static int flow_offload_tuple(struct nf_flowtable *flowtable,
> + struct flow_offload *flow,
> + struct nf_flow_rule *flow_rule,
> + enum flow_offload_tuple_dir dir,
> + int priority, int cmd,
> + struct list_head *block_cb_list)
> {
> - struct nf_flowtable *flowtable = offload->flowtable;
> struct flow_cls_offload cls_flow = {};
> struct flow_block_cb *block_cb;
> struct netlink_ext_ack extack;
> __be16 proto = ETH_P_ALL;
> int err, i = 0;
>
> - nf_flow_offload_init(&cls_flow, proto, offload->priority,
> - FLOW_CLS_REPLACE,
> - &offload->flow->tuplehash[dir].tuple, &extack);
> - cls_flow.rule = flow_rule->rule;
> + nf_flow_offload_init(&cls_flow, proto, priority, cmd,
> + &flow->tuplehash[dir].tuple, &extack);
> + if (cmd == FLOW_CLS_REPLACE)
> + cls_flow.rule = flow_rule->rule;
>
> - list_for_each_entry(block_cb, &flowtable->flow_block.cb_list, list) {
> + list_for_each_entry(block_cb, block_cb_list, list) {
> err = block_cb->cb(TC_SETUP_CLSFLOWER, &cls_flow,
> block_cb->cb_priv);
> if (err < 0)
> @@ -619,24 +621,23 @@ static int flow_offload_tuple_add(struct flow_offload_work *offload,
>
> return i;
> }
> +EXPORT_SYMBOL_GPL(flow_offload_tuple);
flow_offload_tuple is a static EXPORT_SYMBOL_GPL?
> +
> +static int flow_offload_tuple_add(struct flow_offload_work *offload,
> + struct nf_flow_rule *flow_rule,
> + enum flow_offload_tuple_dir dir)
> +{
> + return flow_offload_tuple(offload->flowtable, offload->flow, flow_rule,
> + dir, offload->priority, FLOW_CLS_REPLACE,
> + &offload->flowtable->flow_block.cb_list);
> +}
>
> static void flow_offload_tuple_del(struct flow_offload_work *offload,
> enum flow_offload_tuple_dir dir)
> {
> - struct nf_flowtable *flowtable = offload->flowtable;
> - struct flow_cls_offload cls_flow = {};
> - struct flow_block_cb *block_cb;
> - struct netlink_ext_ack extack;
> - __be16 proto = ETH_P_ALL;
> -
> - nf_flow_offload_init(&cls_flow, proto, offload->priority,
> - FLOW_CLS_DESTROY,
> - &offload->flow->tuplehash[dir].tuple, &extack);
> -
> - list_for_each_entry(block_cb, &flowtable->flow_block.cb_list, list)
> - block_cb->cb(TC_SETUP_CLSFLOWER, &cls_flow, block_cb->cb_priv);
> -
> - set_bit(NF_FLOW_HW_DEAD, &offload->flow->flags);
> + flow_offload_tuple(offload->flowtable, offload->flow, NULL,
> + dir, offload->priority, FLOW_CLS_DESTROY,
> + &offload->flowtable->flow_block.cb_list);
> }
>
> static int flow_offload_rule_add(struct flow_offload_work *offload,
next prev parent reply other threads:[~2020-01-14 5:58 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-13 18:15 [PATCH nf-next,v3 1/9] netfilter: flowtable: fetch stats only if flow is still alive Pablo Neira Ayuso
2020-01-13 18:15 ` [PATCH nf-next,v2 2/9] netfilter: flowtable: restrict flow dissector match on meta ingress device Pablo Neira Ayuso
2020-01-13 18:15 ` [PATCH nf-next,v2 3/9] netfilter: flowtable: add nf_flow_offload_work_alloc() Pablo Neira Ayuso
2020-01-13 18:15 ` [PATCH nf-next,v2 4/9] netfilter: flowtable: remove dying bit, use teardown bit instead Pablo Neira Ayuso
2020-01-13 18:15 ` [PATCH nf-next,v2 5/9] netfilter: flowtable: use atomic bitwise operations for flow flags Pablo Neira Ayuso
2020-01-13 18:15 ` [PATCH nf-next 6/9] netfilter: flowtable: add nf_flowtable_hw_offload() helper function Pablo Neira Ayuso
2020-01-13 18:15 ` [PATCH nf-next,v2 7/9] netfilter: flowtable: refresh flow if hardware offload fails Pablo Neira Ayuso
2020-01-13 18:15 ` [PATCH nf-next 8/9] netfilter: flowtable: add flow_offload_tuple() helper Pablo Neira Ayuso
2020-01-14 5:58 ` wenxu [this message]
2020-01-13 18:15 ` [PATCH nf-next 9/9] netfilter: flowtable: add nf_flow_table_offload_cmd() Pablo Neira Ayuso
2020-01-14 5:45 ` wenxu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b7313b85-3c93-fba5-ea8f-47cdd5d7e4f7@ucloud.cn \
--to=wenxu@ucloud.cn \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).