* [PATCH net-next] net/sched: act_tunnel_key: Add dst_cache support
@ 2019-02-22 7:58 wenxu
2019-02-25 5:52 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: wenxu @ 2019-02-22 7:58 UTC (permalink / raw)
To: jhs, davem; +Cc: netdev
From: wenxu <wenxu@ucloud.cn>
The metadata_dst is not init the dst_cache which make the
ip_md_tunnel_xmit can't use the dst_cache. It will lookup
route table every packets.
Signed-off-by: wenxu <wenxu@ucloud.cn>
---
net/sched/act_tunnel_key.c | 25 +++++++++++++++++++++----
1 file changed, 21 insertions(+), 4 deletions(-)
diff --git a/net/sched/act_tunnel_key.c b/net/sched/act_tunnel_key.c
index 9104b8e..3404af7 100644
--- a/net/sched/act_tunnel_key.c
+++ b/net/sched/act_tunnel_key.c
@@ -321,12 +321,18 @@ static int tunnel_key_init(struct net *net, struct nlattr *nla,
goto err_out;
}
+#ifdef CONFIG_DST_CACHE
+ ret = dst_cache_init(&metadata->u.tun_info.dst_cache, GFP_KERNEL);
+ if (ret)
+ goto release_tun_meta;
+#endif
+
if (opts_len) {
ret = tunnel_key_opts_set(tb[TCA_TUNNEL_KEY_ENC_OPTS],
&metadata->u.tun_info,
opts_len, extack);
if (ret < 0)
- goto release_tun_meta;
+ goto release_dst_cache;
}
metadata->u.tun_info.mode |= IP_TUNNEL_INFO_TX;
@@ -342,14 +348,14 @@ static int tunnel_key_init(struct net *net, struct nlattr *nla,
&act_tunnel_key_ops, bind, true);
if (ret) {
NL_SET_ERR_MSG(extack, "Cannot create TC IDR");
- goto release_tun_meta;
+ goto release_dst_cache;
}
ret = ACT_P_CREATED;
} else if (!ovr) {
NL_SET_ERR_MSG(extack, "TC IDR already exists");
ret = -EEXIST;
- goto release_tun_meta;
+ goto release_dst_cache;
}
t = to_tunnel_key(*a);
@@ -359,7 +365,7 @@ static int tunnel_key_init(struct net *net, struct nlattr *nla,
NL_SET_ERR_MSG(extack, "Cannot allocate tunnel key parameters");
ret = -ENOMEM;
exists = true;
- goto release_tun_meta;
+ goto release_dst_cache;
}
params_new->tcft_action = parm->t_action;
params_new->tcft_enc_metadata = metadata;
@@ -376,6 +382,10 @@ static int tunnel_key_init(struct net *net, struct nlattr *nla,
return ret;
+release_dst_cache:
+#ifdef CONFIG_DST_CACHE
+ dst_cache_destroy(&metadata->u.tun_info.dst_cache);
+#endif
release_tun_meta:
dst_release(&metadata->dst);
@@ -391,8 +401,15 @@ static void tunnel_key_release(struct tc_action *a)
{
struct tcf_tunnel_key *t = to_tunnel_key(a);
struct tcf_tunnel_key_params *params;
+#ifdef CONFIG_DST_CACHE
+ struct ip_tunnel_info *info;
+#endif
params = rcu_dereference_protected(t->params, 1);
+#ifdef CONFIG_DST_CACHE
+ info = ¶ms->tcft_enc_metadata->u.tun_info;
+ dst_cache_destroy(&info->dst_cache);
+#endif
tunnel_key_release_params(params);
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH net-next] net/sched: act_tunnel_key: Add dst_cache support
2019-02-22 7:58 [PATCH net-next] net/sched: act_tunnel_key: Add dst_cache support wenxu
@ 2019-02-25 5:52 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2019-02-25 5:52 UTC (permalink / raw)
To: wenxu; +Cc: jhs, netdev
From: wenxu@ucloud.cn
Date: Fri, 22 Feb 2019 15:58:12 +0800
> From: wenxu <wenxu@ucloud.cn>
>
> The metadata_dst is not init the dst_cache which make the
> ip_md_tunnel_xmit can't use the dst_cache. It will lookup
> route table every packets.
>
> Signed-off-by: wenxu <wenxu@ucloud.cn>
Applied.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-02-25 5:52 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-22 7:58 [PATCH net-next] net/sched: act_tunnel_key: Add dst_cache support wenxu
2019-02-25 5:52 ` David Miller
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).