All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Timo Teräs" <timo.teras@iki.fi>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH 1/4] flow: virtualize flow cache entry methods
Date: Sun, 04 Apr 2010 13:50:16 +0300	[thread overview]
Message-ID: <4BB86EE8.5090203@iki.fi> (raw)
In-Reply-To: <20100404104230.GA10368@gondor.apana.org.au>

Herbert Xu wrote:
> On Thu, Apr 01, 2010 at 03:52:17PM +0300, Timo Teras wrote:
>> -extern void *flow_cache_lookup(struct net *net, struct flowi *key, u16 family,
>> -			       u8 dir, flow_resolve_t resolver);
>> +struct flow_cache_entry_ops {
>> +	struct flow_cache_entry_ops ** (*get)(struct flow_cache_entry_ops **);
>> +	int (*check)(struct flow_cache_entry_ops **);
>> +	void (*delete)(struct flow_cache_entry_ops **);
>> +};
>> +
>> +typedef struct flow_cache_entry_ops **(*flow_resolve_t)(
>> +		struct net *net, struct flowi *key, u16 family,
>> +		u8 dir, struct flow_cache_entry_ops **old_ops, void *ctx);
> 
> OK this bit really bugs me.
> 
> When I first looked at it, my reaction was why on earth are we
> returning an ops pointer? Only after some digging around do I see
> the fact that this ops pointer is in fact embedded in xfrm_policy.
> 
> How about embedding flow_cache_entry in xfrm_policy instead? Returning
> flow_cache_entry * would make a lot more sense than a nested pointer
> to flow_cache_entry_ops.

Because flow_cache_entry is per-cpu, and multiple entries (due to
different flows matching same policies, or same flow having multiple
per-cpu entries) can point to same policy. If we cached "dummy" objects
for even policies, then this would be better approach.

This would make actually sense, since it'd be useful to cache all
policies involved in check path (main + sub policy refs). In which
case we might want to make the ops 'per flow cache instance' instead
of 'per cache entry'.

  reply	other threads:[~2010-04-04 10:50 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-01 12:52 [PATCH 0/4] caching bundles, iteration 3 Timo Teras
2010-04-01 12:52 ` [PATCH 1/4] flow: virtualize flow cache entry methods Timo Teras
2010-04-01 13:05   ` Eric Dumazet
2010-04-01 13:07     ` Timo Teräs
2010-04-03  3:38   ` Herbert Xu
2010-04-03  8:36     ` Herbert Xu
2010-04-03 13:50       ` Timo Teräs
2010-04-03 14:17         ` Herbert Xu
2010-04-03 14:26           ` Timo Teräs
2010-04-03 15:53             ` Herbert Xu
2010-04-03 20:19               ` Timo Teräs
2010-04-04  2:06                 ` Herbert Xu
2010-04-04  5:50                   ` Timo Teräs
2010-04-04  5:58                     ` Herbert Xu
2010-04-04  6:07                       ` Timo Teräs
2010-04-04  6:19                         ` Herbert Xu
2010-04-04  6:28                           ` Timo Teräs
2010-04-04  8:35                             ` Herbert Xu
2010-04-04 10:42   ` Herbert Xu
2010-04-04 10:50     ` Timo Teräs [this message]
2010-04-04 11:00       ` Herbert Xu
2010-04-04 11:06         ` Timo Teräs
2010-04-04 11:26           ` Herbert Xu
2010-04-04 11:31             ` Herbert Xu
2010-04-04 12:09               ` Timo Teräs
2010-04-01 12:52 ` [PATCH 2/4] xfrm: cache bundles instead of policies for outgoing flows Timo Teras
2010-04-01 12:52 ` [PATCH 3/4] xfrm: remove policy garbage collection Timo Teras
2010-04-01 12:52 ` [PATCH 4/4] flow: delayed deletion of flow cache entries Timo Teras
2010-04-02  3:00 ` [PATCH 0/4] caching bundles, iteration 3 David Miller
2010-04-02 13:12   ` Herbert Xu
  -- strict thread matches above, loose matches on Subject: below --
2010-04-05  7:00 [PATCH 0/4] caching bundles, iteration 4 Timo Teras
2010-04-05  7:00 ` [PATCH 1/4] flow: virtualize flow cache entry methods Timo Teras
2010-04-05  8:33   ` Herbert Xu
2010-04-05  8:36     ` Timo Teräs
2010-04-05  8:44       ` Herbert Xu
2010-04-05  8:49         ` Herbert Xu
2010-04-05  8:53           ` Timo Teräs
2010-04-05  9:12             ` Herbert Xu
2010-04-05 17:01               ` Timo Teras
2010-04-06 12:34                 ` Herbert Xu
2010-04-06 13:26                   ` Timo Teräs
2010-04-07  9:15                     ` David Miller
2010-04-07 10:30 [PATCH 0/4] caching bundles, iteration 5 Timo Teras
2010-04-07 10:30 ` [PATCH 1/4] flow: virtualize flow cache entry methods Timo Teras

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=4BB86EE8.5090203@iki.fi \
    --to=timo.teras@iki.fi \
    --cc=herbert@gondor.apana.org.au \
    --cc=netdev@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.