All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick McHardy <kaber@trash.net>
To: Pablo Neira <pablo@eurodev.net>
Cc: Harald Welte <laforge@netfilter.org>,
	Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>,
	netfilter-devel@lists.netfilter.org,  kisza@securityaudit.hu,
	usagi-core@linux-ipv6.org
Subject: Re: [PATCH]: 1st step to remove skb_linearize() in ip6_tables.c and optimization
Date: Wed, 07 Jul 2004 01:33:18 +0200	[thread overview]
Message-ID: <40EB36BE.5090109@trash.net> (raw)
In-Reply-To: <40EB2ECB.4090404@eurodev.net>

Pablo Neira wrote:
> Hi Patrick,
> 
> Patrick McHardy wrote:
> 
>> skb_copy_bits is taking about twice as much cycles as tcp_match
>> and 20% of total cycles.
> 
> AFAIK we are using skb_copy_bits because it walks through fragment list 
> in a safe way, I read an old thread (Harald and DaveM discussion) about 
> this. If I'm not wrong, that's why this was the method selected when 
> conntrack started handling fragments in 2.6 in a different way.

skb_copy_bits does three things: it copies memory from the linear part
between skb->head and skb->tail, it copies memory from the paged part
in skb->frags[], and it walks skb->frag_list for defragmented packets.

> 
> Well, I wonder if we could check if current skb is fragmented (something 
> like skb->data_len!=0), in that case use skb_copy_bits, if not walk 
> through skb payload directly as we use to do in 2.4 and save that memcpy.

I don't think we should do that, the number of copies would still be
dependant on the ruleset. I see two possibilities: We could linearize
the transport protocol headers or we could copy it to skb->cb.

Linearizing has three cases:
- data is already linear: nothing to do
- parts of data are in paged part in skb->frags[]: append data of frags
   to skb->end until we have enough
- parts of data are in frag_list: walk frag_list until enough linear
   data is in first skb, copy linear data, handle paged data like
   described above

I don't know if this turns out to be much more efficient than the old
call to skb_linearize. Copying to skb->cb is simpler, but the frequent
case of already linear data is handled less efficient than with
linearizing.

Regards
Patrick

      reply	other threads:[~2004-07-06 23:33 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-24  4:04 [PATCH]: 1st step to remove skb_linearize() in ip6_tables.c and optimization Yasuyuki Kozakai
2004-06-24  8:13 ` Andras Kis-Szabo
2004-06-24 10:12   ` Yasuyuki Kozakai
2004-06-24 10:24     ` Jozsef Kadlecsik
2004-06-24 10:35       ` Yasuyuki Kozakai
2004-06-24 11:26 ` Patrick McHardy
2004-06-24 11:50   ` Jozsef Kadlecsik
2004-06-24 13:04     ` Yasuyuki Kozakai
2004-06-24 13:25       ` Jozsef Kadlecsik
2004-06-24 13:48         ` (usagi-core 18584) " YOSHIFUJI Hideaki / 吉藤英明
2004-06-24 15:06         ` Yasuyuki Kozakai
2004-06-24 16:50           ` Patrick McHardy
2004-06-25  4:57             ` Yasuyuki Kozakai
2004-06-25 10:01               ` Jozsef Kadlecsik
2004-06-26  7:25                 ` Yasuyuki Kozakai
2004-07-21 21:36                 ` Harald Welte
2004-07-29  6:09                   ` Yasuyuki Kozakai
2004-08-01 16:46                     ` Harald Welte
2004-08-01 17:08                       ` Patrick McHardy
2004-08-01 18:11                         ` Harald Welte
2004-08-02  4:05                           ` Yasuyuki Kozakai
2004-08-07 21:05                             ` Yasuyuki Kozakai
2004-08-09  1:40                               ` Yasuyuki Kozakai
2004-06-25  9:53   ` Harald Welte
2004-06-28 20:31     ` Patrick McHardy
2004-07-06 10:20     ` Patrick McHardy
2004-07-06 10:35       ` Harald Welte
2004-07-06 22:59       ` Pablo Neira
2004-07-06 23:33         ` Patrick McHardy [this message]

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=40EB36BE.5090109@trash.net \
    --to=kaber@trash.net \
    --cc=kisza@securityaudit.hu \
    --cc=laforge@netfilter.org \
    --cc=netfilter-devel@lists.netfilter.org \
    --cc=pablo@eurodev.net \
    --cc=usagi-core@linux-ipv6.org \
    --cc=yasuyuki.kozakai@toshiba.co.jp \
    /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.