Netfilter-Devel Archive on lore.kernel.org
 help / color / Atom feed
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
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,

  reply index

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 publically 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

Netfilter-Devel Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/netfilter-devel/0 netfilter-devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 netfilter-devel netfilter-devel/ https://lore.kernel.org/netfilter-devel \
		netfilter-devel@vger.kernel.org
	public-inbox-index netfilter-devel

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.netfilter-devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git