[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2a6e36a6-f128-ba9d-4d69-90ff5383fb75@mojatatu.com>
Date: Tue, 30 Aug 2016 07:12:20 -0400
From: Jamal Hadi Salim <jhs@...atatu.com>
To: Eric Dumazet <eric.dumazet@...il.com>
Cc: davem@...emloft.net, netdev@...r.kernel.org, daniel@...earbox.net,
xiyou.wangcong@...il.com
Subject: Re: [PATCH v3 net-next 1/1] net_sched: Introduce skbmod action
On 16-08-29 02:20 PM, Eric Dumazet wrote:
>
> You would need to store everything in an object, managed by rcu.
>
> struct my_rcu_safe_struct {
> u32 flags;
> u8 eth_dst[ETH_ALEN];
> u8 eth_src[ETH_ALEN];
> __be16 eth_type;
> };
>
> And then allocate a new one when you need to update the infos (from
> tcf_skbmod_init(())
>
> RCU : Read Copy Update.
>
> Then in the reader you would use
>
> rcu_read_lock();
> myptr = rcu_dereference(d->ptr);
> if (myptr) {
> if (myptr->flags & SKBMOD_F_DMAC)
> ether_addr_copy(eth_hdr(skb)->h_dest, myptr->eth_dst);
> if (myptr->flags & SKBMOD_F_SMAC)
> ether_addr_copy(eth_hdr(skb)->h_source, myptr->eth_src);
> if (myptr->flags & SKBMOD_F_ETYPE)
> eth_hdr(skb)->h_proto = myptr->eth_type;
> }
> rcu_read_unlock();
Thanks Eric.
This is the approach i thought Cong was going to take but in a way that
it applies to all actions.
It requires I do this extra allocation per update/create - I am not sure
how much of a big deal that is (we take pride in our update rate).
Let me work and post something simple that captures these ideas
then wait to see what Cong has in mind for the general approach.
cheers,
jamal
Powered by blists - more mailing lists