firefly-linux-kernel-4.4.55.git
17 years ago[SK_BUFF]: Use offsets for skb->{mac,network,transport}_header on 64bit architectures
Arnaldo Carvalho de Melo [Wed, 11 Apr 2007 04:22:35 +0000 (21:22 -0700)]
[SK_BUFF]: Use offsets for skb->{mac,network,transport}_header on 64bit architectures

With this we save 8 bytes per network packet, leaving a 4 bytes hole to be used
in further shrinking work, likely with the offsetization of other pointers,
such as ->{data,tail,end}, at the cost of adds, that were minimized by the
usual practice of setting skb->{mac,nh,n}.raw to a local variable that is then
accessed multiple times in each function, it also is not more expensive than
before with regards to most of the handling of such headers, like setting one
of these headers to another (transport to network, etc), or subtracting, adding
to/from it, comparing them, etc.

Now we have this layout for sk_buff on a x86_64 machine:

[acme@mica net-2.6.22]$ pahole vmlinux sk_buff
struct sk_buff {
struct sk_buff *       next;             /*   0   8 */
struct sk_buff *       prev;             /*   8   8 */
struct rb_node         rb;               /*  16  24 */
struct sock *          sk;               /*  40   8 */
ktime_t                tstamp;           /*  48   8 */
struct net_device *    dev;              /*  56   8 */
/* --- cacheline 1 boundary (64 bytes) --- */
struct net_device *    input_dev;        /*  64   8 */
sk_buff_data_t         transport_header; /*  72   4 */
sk_buff_data_t         network_header;   /*  76   4 */
sk_buff_data_t         mac_header;       /*  80   4 */

/* XXX 4 bytes hole, try to pack */

struct dst_entry *     dst;              /*  88   8 */
struct sec_path *      sp;               /*  96   8 */
char                   cb[48];           /* 104  48 */
/* cacheline 2 boundary (128 bytes) was 24 bytes ago*/
unsigned int           len;              /* 152   4 */
unsigned int           data_len;         /* 156   4 */
unsigned int           mac_len;          /* 160   4 */
union {
__wsum         csum;             /*       4 */
__u32          csum_offset;      /*       4 */
};                                       /* 164   4 */
__u32                  priority;         /* 168   4 */
__u8                   local_df:1;       /* 172   1 */
__u8                   cloned:1;         /* 172   1 */
__u8                   ip_summed:2;      /* 172   1 */
__u8                   nohdr:1;          /* 172   1 */
__u8                   nfctinfo:3;       /* 172   1 */
__u8                   pkt_type:3;       /* 173   1 */
__u8                   fclone:2;         /* 173   1 */
__u8                   ipvs_property:1;  /* 173   1 */

/* XXX 2 bits hole, try to pack */

__be16                 protocol;         /* 174   2 */
void    (*destructor)(struct sk_buff *); /* 176   8 */
struct nf_conntrack *  nfct;             /* 184   8 */
/* --- cacheline 3 boundary (192 bytes) --- */
struct sk_buff *       nfct_reasm;       /* 192   8 */
struct nf_bridge_info *nf_bridge;        /* 200   8 */
__u16                  tc_index;         /* 208   2 */
__u16                  tc_verd;          /* 210   2 */
dma_cookie_t           dma_cookie;       /* 212   4 */
__u32                  secmark;          /* 216   4 */
__u32                  mark;             /* 220   4 */
unsigned int           truesize;         /* 224   4 */
atomic_t               users;            /* 228   4 */
unsigned char *        head;             /* 232   8 */
unsigned char *        data;             /* 240   8 */
unsigned char *        tail;             /* 248   8 */
/* --- cacheline 4 boundary (256 bytes) --- */
unsigned char *        end;              /* 256   8 */
}; /* size: 264, cachelines: 5 */
   /* sum members: 260, holes: 1, sum holes: 4 */
   /* bit holes: 1, sum bit holes: 2 bits */
   /* last cacheline: 8 bytes */

On 32 bits nothing changes, and pointers continue to be used with the compiler
turning all this abstraction layer into dust. But there are some sk_buff
validation tricks that are now possible, humm... :-)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: unions of just one member don't get anything done, kill them
Arnaldo Carvalho de Melo [Wed, 11 Apr 2007 04:21:55 +0000 (21:21 -0700)]
[SK_BUFF]: unions of just one member don't get anything done, kill them

Renaming skb->h to skb->transport_header, skb->nh to skb->network_header and
skb->mac to skb->mac_header, to match the names of the associated helpers
(skb[_[re]set]_{transport,network,mac}_header).

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce skb_network_header_len
Arnaldo Carvalho de Melo [Fri, 16 Mar 2007 20:26:39 +0000 (17:26 -0300)]
[SK_BUFF]: Introduce skb_network_header_len

For the common sequence "skb->h.raw - skb->nh.raw", similar to skb->mac_len,
that is precalculated tho, don't think we need to bloat skb with one more
member, so just use this new helper, reducing the number of non-skbuff.h
references to the layer headers even more.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Use the helpers to get the layer header pointer
Arnaldo Carvalho de Melo [Fri, 16 Mar 2007 20:19:57 +0000 (17:19 -0300)]
[SK_BUFF]: Use the helpers to get the layer header pointer

Some more cases...

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: Fix warning
Patrick McHardy [Fri, 16 Mar 2007 19:34:52 +0000 (12:34 -0700)]
[NET_SCHED]: Fix warning

net/sched/sch_api.c: In function 'psched_show':
net/sched/sch_api.c:1219: warning: format '%08x' expects type 'unsigned int', but argument 6 has type 's64'

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: sch_cbq: fix watchdog scheduled too late
Patrick McHardy [Fri, 16 Mar 2007 19:31:28 +0000 (12:31 -0700)]
[NET_SCHED]: sch_cbq: fix watchdog scheduled too late

q->now is increased during dequeue and doesn't contain the current time
afterwards, resulting in a too large timeout value for the qdisc watchdog.
Use "now" instead, which still contains the current time.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: Export real timer resolution in /proc/net/psched
Patrick McHardy [Fri, 16 Mar 2007 08:23:28 +0000 (01:23 -0700)]
[NET_SCHED]: Export real timer resolution in /proc/net/psched

The timer resolution exported in /proc/net/psched is used by userspace to
calculate HTB's burst values. Currently it is set to HZ, since we're now
using hrtimers, use KTIME_MONOTONIC_RES, which makes HTB use smaller burst
values.

This patch also affects libnl, which incorrectly uses this value for
the SFQ perturbation parameter, which is always in seconds, and some
routing cache values, which are in USER_HZ, so both cases are broken
anyway.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: kill jiffie conversion macros
Patrick McHardy [Fri, 16 Mar 2007 08:23:02 +0000 (01:23 -0700)]
[NET_SCHED]: kill jiffie conversion macros

Now that all packet schedulers have been converted to hrtimers most users
of PSCHED_JIFFIE2US and PSCHED_US2JIFFIE are gone. The remaining users use
it to convert external time units to packet scheduler clock ticks, so use
PSCHED_TICKS_PER_SEC instead.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: sch_htb: use hrtimer based watchdog
Patrick McHardy [Fri, 16 Mar 2007 08:22:39 +0000 (01:22 -0700)]
[NET_SCHED]: sch_htb: use hrtimer based watchdog

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: sch_cbq: use hrtimer for delay_timer
Patrick McHardy [Fri, 16 Mar 2007 08:22:20 +0000 (01:22 -0700)]
[NET_SCHED]: sch_cbq: use hrtimer for delay_timer

Switch delay_timer to hrtimer.

The class penalty parameter is changed to use psched ticks as units.
Since iproute never supported using this and the only existing user
(libnl) incorrectly assumes psched ticks as units anyway, this
shouldn't break anything.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: sch_cbq: fix cbq_undelay_prio for non-active priorites
Patrick McHardy [Fri, 16 Mar 2007 08:21:40 +0000 (01:21 -0700)]
[NET_SCHED]: sch_cbq: fix cbq_undelay_prio for non-active priorites

cbq_undelay_prio is supposed to return a time delta, but returns the
current time for non-active priorities, causing cbq_undelay to mark
the priority as active and schedule a timer for twice the current
time.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: sch_cbq: use hrtimer based watchdog
Patrick McHardy [Fri, 16 Mar 2007 08:21:11 +0000 (01:21 -0700)]
[NET_SCHED]: sch_cbq: use hrtimer based watchdog

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: sch_netem: use hrtimer based watchdog
Patrick McHardy [Fri, 16 Mar 2007 08:20:31 +0000 (01:20 -0700)]
[NET_SCHED]: sch_netem: use hrtimer based watchdog

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: sch_tbf: use hrtimer based watchdog
Patrick McHardy [Fri, 16 Mar 2007 08:20:07 +0000 (01:20 -0700)]
[NET_SCHED]: sch_tbf: use hrtimer based watchdog

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: sch_hfsc: use hrtimer based watchdog
Patrick McHardy [Fri, 16 Mar 2007 08:19:33 +0000 (01:19 -0700)]
[NET_SCHED]: sch_hfsc: use hrtimer based watchdog

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: Add hrtimer based qdisc watchdog
Patrick McHardy [Fri, 16 Mar 2007 08:19:15 +0000 (01:19 -0700)]
[NET_SCHED]: Add hrtimer based qdisc watchdog

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET_SCHED]: Use ktime as clocksource
Patrick McHardy [Fri, 16 Mar 2007 08:18:42 +0000 (01:18 -0700)]
[NET_SCHED]: Use ktime as clocksource

Get rid of the manual clock source selection mess and use ktime. Also
use a scalar representation, which allows to clean up pkt_sched.h a bit
more and results in less ktime_to_ns() calls in most cases.

The PSCHED_US2JIFFIE/PSCHED_JIFFIE2US macros are implemented quite
inefficient by this patch, following patches will convert all qdiscs
to hrtimers and get rid of them entirely.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Some more layer header conversions
Arnaldo Carvalho de Melo [Fri, 16 Mar 2007 00:42:27 +0000 (21:42 -0300)]
[SK_BUFF]: Some more layer header conversions

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[KBUILD]: Unifdef headers changed by the skb layer header refactorings
Arnaldo Carvalho de Melo [Fri, 16 Mar 2007 00:08:55 +0000 (21:08 -0300)]
[KBUILD]: Unifdef headers changed by the skb layer header refactorings

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: More skb_put related skb_reset_transport_header
Arnaldo Carvalho de Melo [Thu, 15 Mar 2007 00:05:37 +0000 (21:05 -0300)]
[SK_BUFF]: More skb_put related skb_reset_transport_header

This time we have to set it to skb->tail that is not anymore equal to
skb->data, so we either add a new helper or just add the skb->tail - skb->data
offset, for now do the later.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[IPV6]: Reset the network header in ip6_nd_hdr
Arnaldo Carvalho de Melo [Thu, 15 Mar 2007 00:05:03 +0000 (21:05 -0300)]
[IPV6]: Reset the network header in ip6_nd_hdr

ip6_nd_hdr is always called immediately after a alloc_skb + skb_reserve
sequence, i.e. when skb->tail is equal to skb->data, making it correct to use
skb_reset_network_header().

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: More skb_put related conversions to skb_reset_transport_header
Arnaldo Carvalho de Melo [Thu, 15 Mar 2007 00:04:34 +0000 (21:04 -0300)]
[SK_BUFF]: More skb_put related conversions to skb_reset_transport_header

This is similar to the skb_reset_network_header(), i.e. at the point we reset
the transport header pointer/offset skb->tail is equal to skb->data.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nfnetlink: parse attributes with nfattr_parse in nfnetlink_check_attribute
Pablo Neira Ayuso [Wed, 14 Mar 2007 23:45:39 +0000 (16:45 -0700)]
[NETFILTER]: nfnetlink: parse attributes with nfattr_parse in nfnetlink_check_attribute

Use nfattr_parse to parse attributes, this patch also modifies the default
behaviour since unknown attributes will be ignored instead of returning
EINVAL. This ensure backward compatibility: new libraries with new
attributes and old kernels can work.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: ctnetlink: add support for internal tcp connection tracking flags handling
Pablo Neira Ayuso [Wed, 14 Mar 2007 23:45:19 +0000 (16:45 -0700)]
[NETFILTER]: ctnetlink: add support for internal tcp connection tracking flags handling

This patch let userspace programs set the IP_CT_TCP_BE_LIBERAL flag to
force the pickup of established connections.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: TCP conntrack: factorize out the PUSH flag
Willy Tarreau [Wed, 14 Mar 2007 23:44:53 +0000 (16:44 -0700)]
[NETFILTER]: TCP conntrack: factorize out the PUSH flag

The PUSH flag is accepted with every other valid combination.
Let's get it out of the tcp_valid_flags table and reduce the
number of combinations we have to handle. This does not
significantly reduce the table size however (8 bytes).

Signed-off-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: TCP conntrack: accept RST|PSH as valid
Willy Tarreau [Wed, 14 Mar 2007 23:44:31 +0000 (16:44 -0700)]
[NETFILTER]: TCP conntrack: accept RST|PSH as valid

This combination has been encountered on an IBM AS/400 in response
to packets sent to a closed session. There is no particular reason
to mark it invalid.

Signed-off-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nf_conntrack: add nf_copy() to safely copy members in skb
Yasuyuki Kozakai [Wed, 14 Mar 2007 23:44:01 +0000 (16:44 -0700)]
[NETFILTER]: nf_conntrack: add nf_copy() to safely copy members in skb

This unifies the codes to copy netfilter related datas. Before copying,
nf_copy() puts original members in destination skb.

Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nf_conntrack: add __nf_copy() to copy members in skb
Yasuyuki Kozakai [Wed, 14 Mar 2007 23:43:37 +0000 (16:43 -0700)]
[NETFILTER]: nf_conntrack: add __nf_copy() to copy members in skb

This unifies the codes to copy netfilter related datas. Note that
__nf_copy() assumes destination skb doesn't have any netfilter
related members.

Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nf_conntrack: use jhash2 in __hash_conntrack
Sami Farin [Wed, 14 Mar 2007 23:43:00 +0000 (16:43 -0700)]
[NETFILTER]: nf_conntrack: use jhash2 in __hash_conntrack

Now it uses jhash, but using jhash2 would be around 3-4 times faster
(on P4).

Signed-off-by: Sami Farin <safari-netfilter@safari.iki.fi>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[JHASH]: Use const in jhash2
Patrick McHardy [Wed, 14 Mar 2007 23:42:29 +0000 (16:42 -0700)]
[JHASH]: Use const in jhash2

Use const to avoid forcing users to cast const data.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nfnetlink: move EXPORT_SYMBOL declarations next to the exported symbol
Pablo Neira Ayuso [Wed, 14 Mar 2007 23:42:11 +0000 (16:42 -0700)]
[NETFILTER]: nfnetlink: move EXPORT_SYMBOL declarations next to the exported symbol

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nfnetlink: remove unused includes in nfnetlink.c
Pablo Neira Ayuso [Wed, 14 Mar 2007 23:41:47 +0000 (16:41 -0700)]
[NETFILTER]: nfnetlink: remove unused includes in nfnetlink.c

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nfnetlink: remove unrequired check in nfnetlink_get_subsys
Pablo Neira Ayuso [Wed, 14 Mar 2007 23:41:28 +0000 (16:41 -0700)]
[NETFILTER]: nfnetlink: remove unrequired check in nfnetlink_get_subsys

subsys_table is initialized to NULL, therefore just returns NULL in case
that it is not set.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nfnetlink: remove duplicate checks in nfnetlink_check_attributes
Pablo Neira Ayuso [Wed, 14 Mar 2007 23:41:03 +0000 (16:41 -0700)]
[NETFILTER]: nfnetlink: remove duplicate checks in nfnetlink_check_attributes

Remove nfnetlink_check_attributes duplicates message size and callback
id checks. nfnetlink_find_client and nfnetlink_rcv_msg already do
such checks.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nfnetlink: remove early debugging messages from nfnetlink
Pablo Neira Ayuso [Wed, 14 Mar 2007 23:40:38 +0000 (16:40 -0700)]
[NETFILTER]: nfnetlink: remove early debugging messages from nfnetlink

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nf_conntrack: uninline notifier registration functions
Patrick McHardy [Wed, 14 Mar 2007 23:40:10 +0000 (16:40 -0700)]
[NETFILTER]: nf_conntrack: uninline notifier registration functions

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nfnetlink: use netlink_run_queue()
Patrick McHardy [Wed, 14 Mar 2007 23:39:45 +0000 (16:39 -0700)]
[NETFILTER]: nfnetlink: use netlink_run_queue()

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nfnetlink: use mutex instead of semaphore
Patrick McHardy [Wed, 14 Mar 2007 23:39:25 +0000 (16:39 -0700)]
[NETFILTER]: nfnetlink: use mutex instead of semaphore

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nf_conntrack: simplify l4 protocol array allocation
Patrick McHardy [Wed, 14 Mar 2007 23:39:07 +0000 (16:39 -0700)]
[NETFILTER]: nf_conntrack: simplify l4 protocol array allocation

The retrying after an allocation failure is not necessary anymore
since we're holding the mutex the entire time, for the same
reason the double allocation race can't happen anymore.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nf_conntrack: simplify protocol locking
Patrick McHardy [Wed, 14 Mar 2007 23:38:48 +0000 (16:38 -0700)]
[NETFILTER]: nf_conntrack: simplify protocol locking

Now that we don't use nf_conntrack_lock anymore but a single mutex for
all protocol handling, no need to release and grab it again for sysctl
registration.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nf_conntrack: remove ugly hack in l4proto registration
Patrick McHardy [Wed, 14 Mar 2007 23:38:25 +0000 (16:38 -0700)]
[NETFILTER]: nf_conntrack: remove ugly hack in l4proto registration

Remove ugly special-casing of nf_conntrack_l4proto_generic, all it
wants is its sysctl tables registered, so do that explicitly in an
init function and move the remaining protocol initialization and
cleanup code to nf_conntrack_proto.c as well.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: nf_conntrack: switch protocol registration/unregistration to mutex
Patrick McHardy [Wed, 14 Mar 2007 23:37:52 +0000 (16:37 -0700)]
[NETFILTER]: nf_conntrack: switch protocol registration/unregistration to mutex

The protocol lookups done by nf_conntrack are already protected by RCU,
there is no need to keep taking nf_conntrack_lock for registration
and unregistration. Switch to a mutex.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: Remove IPv4 only connection tracking/NAT
Patrick McHardy [Wed, 14 Mar 2007 23:37:25 +0000 (16:37 -0700)]
[NETFILTER]: Remove IPv4 only connection tracking/NAT

Remove the obsolete IPv4 only connection tracking/NAT as scheduled in
feature-removal-schedule.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NETFILTER]: x_tables: remove duplicate of xt_prefix
Tobias Klauser [Wed, 14 Mar 2007 23:36:16 +0000 (16:36 -0700)]
[NETFILTER]: x_tables: remove duplicate of xt_prefix

Remove xt_proto_prefix array which duplicates xt_prefix and change all
users of xt_proto_prefix to xt_prefix.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[IPV4] xfrm4_mode_beet: Use skb_transport_header().
David S. Miller [Fri, 20 Apr 2007 02:55:44 +0000 (19:55 -0700)]
[IPV4] xfrm4_mode_beet: Use skb_transport_header().

Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce skb_transport_header(skb)
Arnaldo Carvalho de Melo [Thu, 26 Apr 2007 01:04:18 +0000 (18:04 -0700)]
[SK_BUFF]: Introduce skb_transport_header(skb)

For the places where we need a pointer to the transport header, it is
still legal to touch skb->h.raw directly if just adding to,
subtracting from or setting it to another layer header.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SCTP]: Eliminate some pointer attributions to the skb layer headers
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 20:17:10 +0000 (17:17 -0300)]
[SCTP]: Eliminate some pointer attributions to the skb layer headers

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: More skb_reset_transport_header conversions
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 20:10:43 +0000 (17:10 -0300)]
[SK_BUFF]: More skb_reset_transport_header conversions

These are a bit more subtle, they are of this type:

-       skb->h.raw = payload;
        __skb_pull(skb, payload - skb->data);
+       skb_reset_transport_header(skb);

__skb_pull results in:

skb->data = skb->data + payload - skb->data;
skb->data = payload;

So after __skb_pull we have skb->data pointing to payload and we can
just call skb_reset_transport_header(skb), that will do:

skb->h.raw = payload;

The others are similar, allowing us to get rid of some more cases where a
pointer was being attributed to the layer headers.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce ipipv6_hdr(), remove skb->h.ipv6h
Arnaldo Carvalho de Melo [Wed, 11 Apr 2007 04:06:25 +0000 (21:06 -0700)]
[SK_BUFF]: Introduce ipipv6_hdr(), remove skb->h.ipv6h

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce ipip_hdr(), remove skb->h.ipiph
Arnaldo Carvalho de Melo [Thu, 26 Apr 2007 01:02:22 +0000 (18:02 -0700)]
[SK_BUFF]: Introduce ipip_hdr(), remove skb->h.ipiph

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce tcp_hdr(), remove skb->h.th
Arnaldo Carvalho de Melo [Wed, 11 Apr 2007 04:04:22 +0000 (21:04 -0700)]
[SK_BUFF]: Introduce tcp_hdr(), remove skb->h.th

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[TCP]: Introduce tcp_hdrlen() and tcp_optlen()
Arnaldo Carvalho de Melo [Mon, 19 Mar 2007 00:43:48 +0000 (17:43 -0700)]
[TCP]: Introduce tcp_hdrlen() and tcp_optlen()

The ip_hdrlen() buddy, created to reduce the number of skb->h.th-> uses and to
avoid the longer, open coded equivalent.

Ditched a no-op in bnx2 in the process.

I wonder if we should have a BUG_ON(skb->h.th->doff < 5) in tcp_optlen()...

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce icmp_hdr(), remove skb->h.icmph
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 17:43:18 +0000 (14:43 -0300)]
[SK_BUFF]: Introduce icmp_hdr(), remove skb->h.icmph

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce udp_hdr(), remove skb->h.uh
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 17:28:48 +0000 (14:28 -0300)]
[SK_BUFF]: Introduce udp_hdr(), remove skb->h.uh

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce igmp_hdr() & friends, remove skb->h.igmph
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 17:19:23 +0000 (14:19 -0300)]
[SK_BUFF]: Introduce igmp_hdr() & friends, remove skb->h.igmph

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[ICMP6]: Introduce icmp6_hdr()
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 17:03:22 +0000 (14:03 -0300)]
[ICMP6]: Introduce icmp6_hdr()

For consistency with all the other skb->h.raw accessors.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SCTP]: Introduce sctp_hdr()
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 16:59:32 +0000 (13:59 -0300)]
[SCTP]: Introduce sctp_hdr()

For consistency with all the other skb->h.raw accessors.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce skb_set_transport_header
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 16:51:52 +0000 (13:51 -0300)]
[SK_BUFF]: Introduce skb_set_transport_header

For the cases where the transport header is being set to a offset from
skb->data.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce skb_transport_offset()
Arnaldo Carvalho de Melo [Thu, 26 Apr 2007 00:55:53 +0000 (17:55 -0700)]
[SK_BUFF]: Introduce skb_transport_offset()

For the quite common 'skb->h.raw - skb->data' sequence.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce skb_reset_transport_header(skb)
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 16:06:52 +0000 (13:06 -0300)]
[SK_BUFF]: Introduce skb_reset_transport_header(skb)

For the common, open coded 'skb->h.raw = skb->data' operation, so that we can
later turn skb->h.raw into a offset, reducing the size of struct sk_buff in
64bit land while possibly keeping it as a pointer on 32bit.

This one touches just the most simple cases:

skb->h.raw = skb->data;
skb->h.raw = {skb_push|[__]skb_pull}()

The next ones will handle the slightly more "complex" cases.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce ipv6_hdr(), remove skb->nh.ipv6h
Arnaldo Carvalho de Melo [Thu, 26 Apr 2007 00:54:47 +0000 (17:54 -0700)]
[SK_BUFF]: Introduce ipv6_hdr(), remove skb->nh.ipv6h

Now the skb->nh union has just one member, .raw, i.e. it is just like the
skb->mac union, strange, no? I'm just leaving it like that till the transport
layer is done with, when we'll rename skb->mac.raw to skb->mac_header (or
->mac_header_offset?), ditto for ->{h,nh}.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce arp_hdr(), remove skb->nh.arph
Arnaldo Carvalho de Melo [Mon, 12 Mar 2007 23:56:31 +0000 (20:56 -0300)]
[SK_BUFF]: Introduce arp_hdr(), remove skb->nh.arph

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[BRIDGE]: faster compare for link local addresses
Stephen Hemminger [Mon, 12 Mar 2007 23:25:32 +0000 (16:25 -0700)]
[BRIDGE]: faster compare for link local addresses

Use logic operations rather than memcmp() to compare destination
address with link local multicast addresses.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce ip_hdr(), remove skb->nh.iph
Arnaldo Carvalho de Melo [Sat, 21 Apr 2007 05:47:35 +0000 (22:47 -0700)]
[SK_BUFF]: Introduce ip_hdr(), remove skb->nh.iph

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[IPMR]: Fix bug introduced when converting to skb_network_reset_header
Arnaldo Carvalho de Melo [Mon, 12 Mar 2007 23:09:36 +0000 (20:09 -0300)]
[IPMR]: Fix bug introduced when converting to skb_network_reset_header

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[IP]: Introduce ip_hdrlen()
Arnaldo Carvalho de Melo [Mon, 12 Mar 2007 23:09:15 +0000 (20:09 -0300)]
[IP]: Introduce ip_hdrlen()

For the common sequence "skb->nh.iph->ihl * 4", removing a good number of open
coded skb->nh.iph uses, now to go after the rest...

Just out of curiosity, here are the idioms found to get the same result:

skb->nh.iph->ihl << 2
skb->nh.iph->ihl<<2
skb->nh.iph->ihl * 4
skb->nh.iph->ihl*4
(skb->nh.iph)->ihl * sizeof(u32)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF] ipmr: Missed one conversion to skb_network_header()
Arnaldo Carvalho de Melo [Mon, 12 Mar 2007 23:05:39 +0000 (20:05 -0300)]
[SK_BUFF] ipmr: Missed one conversion to skb_network_header()

We can't access skb->nh.raw directly anymore, it will become an offset.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET]: show bound packet types
Stephen Hemminger [Mon, 12 Mar 2007 21:35:37 +0000 (14:35 -0700)]
[NET]: show bound packet types

Show what protocols are bound to what packet types in /proc/net/ptype
Uses kallsyms to decode function pointers if possible.
Example:
Type Device      Function
ALL  eth1     packet_rcv_spkt+0x0
0800          ip_rcv+0x0
0806          arp_rcv+0x0
86dd          :ipv6:ipv6_rcv+0x0

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET]: make seq_operations const
Stephen Hemminger [Mon, 12 Mar 2007 21:34:29 +0000 (14:34 -0700)]
[NET]: make seq_operations const

The seq_file operations stuff can be marked constant to
get it out of dirty cache.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[NET]: network dev read_mostly
Stephen Hemminger [Mon, 12 Mar 2007 21:33:50 +0000 (14:33 -0700)]
[NET]: network dev read_mostly

For Eric, mark packet type and network device watermarks
as read mostly.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce skb_set_network_header
Arnaldo Carvalho de Melo [Mon, 12 Mar 2007 01:39:41 +0000 (22:39 -0300)]
[SK_BUFF]: Introduce skb_set_network_header

For the cases where the network header is being set to a offset from skb->data.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF] ipmr: Another skb_push related conversion to skb_reset_network_header
Arnaldo Carvalho de Melo [Mon, 12 Mar 2007 01:38:29 +0000 (22:38 -0300)]
[SK_BUFF] ipmr: Another skb_push related conversion to skb_reset_network_header

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce skb_network_header()
Arnaldo Carvalho de Melo [Wed, 11 Apr 2007 03:50:43 +0000 (20:50 -0700)]
[SK_BUFF]: Introduce skb_network_header()

For the places where we need a pointer to the network header, it is still legal
to touch skb->nh.raw directly if just adding to, subtracting from or setting it
to another layer header.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce skb_network_offset()
Arnaldo Carvalho de Melo [Sun, 11 Mar 2007 01:16:10 +0000 (22:16 -0300)]
[SK_BUFF]: Introduce skb_network_offset()

For the quite common 'skb->nh.raw - skb->data' sequence.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF] bonding: Set skb->nh.raw relative to skb->mac.raw
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 23:09:45 +0000 (20:09 -0300)]
[SK_BUFF] bonding: Set skb->nh.raw relative to skb->mac.raw

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF] xfrm4: use skb_reset_network_header
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 22:59:16 +0000 (19:59 -0300)]
[SK_BUFF] xfrm4: use skb_reset_network_header

Setting it to skb->h.raw, which is valid, in the (to become) old pointer based
world order and in the new world of offset based layer headers.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF] ipv6: More skb_reset_network_header conversions related to skb_pull
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 22:57:15 +0000 (19:57 -0300)]
[SK_BUFF] ipv6: More skb_reset_network_header conversions related to skb_pull

Now related to this form:

skb->nh.ipv6h = (struct ipv6hdr *)skb_put(skb, length);

That, as the others, is done when skb->tail is still equal to skb->data, making
the conversion to skb_reset_network_header possible.

Also one more case equivalent to skb->nh.raw = skb->data, of this form:

iph = (struct ipv6hdr *)skb->data;
<SNIP>
skb->nh.ipv6h = iph;

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Use skb_reset_network_header after skb_push
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 22:40:39 +0000 (19:40 -0300)]
[SK_BUFF]: Use skb_reset_network_header after skb_push

Some more cases where skb->nh.iph was being set that were converted
to using skb_reset_network_header.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF] ipconfig: Another conversion to skb_reset_network_header related to skb_put
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 22:27:27 +0000 (19:27 -0300)]
[SK_BUFF] ipconfig: Another conversion to skb_reset_network_header related to skb_put

boot_pkt->iph is the first member, that is at skb->data, so just use
skb_reset_network_header().

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Some more skb_put cases converted to skb_reset_network_header
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 22:15:25 +0000 (19:15 -0300)]
[SK_BUFF]: Some more skb_put cases converted to skb_reset_network_header

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Some more simple skb_reset_network_header conversions
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 22:04:55 +0000 (19:04 -0300)]
[SK_BUFF]: Some more simple skb_reset_network_header conversions

This time of the type:

 skb->nh.iph = (struct iphdr *)skb->data;

That is completely equivalent to:

 skb->nh.raw = skb->data;

Wonder why people love casts... :-)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Use skb_reset_network_header where the return of __pskb_pull was being...
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 21:42:03 +0000 (18:42 -0300)]
[SK_BUFF]: Use skb_reset_network_header where the return of __pskb_pull was being used

It returns skb->data, so we can just use skb_reset_network_header after it.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Use skb_reset_network_header where the skb_pull return was being used
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 21:40:59 +0000 (18:40 -0300)]
[SK_BUFF]: Use skb_reset_network_header where the skb_pull return was being used

But only in the cases where its a newly allocated skb, i.e. one where skb->tail
is equal to skb->data, or just after skb_reserve, where this requirement is
maintained.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Use skb_reset_network_header in skb_push cases
Arnaldo Carvalho de Melo [Wed, 11 Apr 2007 03:46:21 +0000 (20:46 -0700)]
[SK_BUFF]: Use skb_reset_network_header in skb_push cases

skb_push updates and returns skb->data, so we can just call
skb_reset_network_header after the call to skb_push.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce skb_reset_network_header(skb)
Arnaldo Carvalho de Melo [Wed, 11 Apr 2007 03:45:18 +0000 (20:45 -0700)]
[SK_BUFF]: Introduce skb_reset_network_header(skb)

For the common, open coded 'skb->nh.raw = skb->data' operation, so that we can
later turn skb->nh.raw into a offset, reducing the size of struct sk_buff in
64bit land while possibly keeping it as a pointer on 32bit.

This one touches just the most simple case, next will handle the slightly more
"complex" cases.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[IPV6]: Use skb->nh.ipv6h instead of casting skb->nh.raw
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 19:21:45 +0000 (16:21 -0300)]
[IPV6]: Use skb->nh.ipv6h instead of casting skb->nh.raw

nh.ipv6h is there exactly for this reason! Use it while it exists ;-)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[BONDING]: Introduce arp_pkt()
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 19:07:19 +0000 (16:07 -0300)]
[BONDING]: Introduce arp_pkt()

For consistency with all the other skb->nh.raw accessors.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[PPPOE]: Introduce pppoe_hdr()
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 18:56:08 +0000 (15:56 -0300)]
[PPPOE]: Introduce pppoe_hdr()

For consistency with all the other skb->nh.raw accessors.

Also do some really obvious simplifications in pppoe_recvmsg, well the
kfree_skb one is not so obvious, but free() and kfree() have the same behaviour
(hint :-) ).

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[LLC]: Kill llc_set_pdu_hdr
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 18:34:36 +0000 (15:34 -0300)]
[LLC]: Kill llc_set_pdu_hdr

We'll have skb_reset_network_header soon.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce skb_mac_header()
Arnaldo Carvalho de Melo [Mon, 19 Mar 2007 22:33:04 +0000 (15:33 -0700)]
[SK_BUFF]: Introduce skb_mac_header()

For the places where we need a pointer to the mac header, it is still legal to
touch skb->mac.raw directly if just adding to, subtracting from or setting it
to another layer header.

This one also converts some more cases to skb_reset_mac_header() that my
regex missed as it had no spaces before nor after '=', ugh.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[TCP]: Use skb_set_mac_header in tcp_collapse
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 15:48:37 +0000 (12:48 -0300)]
[TCP]: Use skb_set_mac_header in tcp_collapse

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[TCP]: Do the layer header setting in tcp_collapse relative to skb->data
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 15:47:22 +0000 (12:47 -0300)]
[TCP]: Do the layer header setting in tcp_collapse relative to skb->data

That is equal to skb->head before skb_reserve, to help in the layer header
changes.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF] xfrm: Use skb_set_mac_header in the memmove cases
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 15:40:27 +0000 (12:40 -0300)]
[SK_BUFF] xfrm: Use skb_set_mac_header in the memmove cases

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce skb_set_mac_header()
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 15:30:58 +0000 (12:30 -0300)]
[SK_BUFF]: Introduce skb_set_mac_header()

For the cases where we want to set skb->mac.raw to an offset from skb->data.

Simple cases first, the memmove ones and specially pktgen will be left for later.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[LLC]: Use skb_reset_mac_header in llc_mac_hdr_init
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 15:17:29 +0000 (12:17 -0300)]
[LLC]: Use skb_reset_mac_header in llc_mac_hdr_init

skb_push updates and returns skb->data, so we can just call
skb_reset_mac_header after the call to skb_push.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[LLC]: Use skb_reset_mac_header in llc_alloc_frame
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 15:14:56 +0000 (12:14 -0300)]
[LLC]: Use skb_reset_mac_header in llc_alloc_frame

skb->head is equal to skb->data after alloc_skb, so reset the mac header while
this is true, i.e. before skb_reserve.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[SK_BUFF]: Introduce skb_reset_mac_header(skb)
Arnaldo Carvalho de Melo [Mon, 19 Mar 2007 22:30:44 +0000 (15:30 -0700)]
[SK_BUFF]: Introduce skb_reset_mac_header(skb)

For the common, open coded 'skb->mac.raw = skb->data' operation, so that we can
later turn skb->mac.raw into a offset, reducing the size of struct sk_buff in
64bit land while possibly keeping it as a pointer on 32bit.

This one touches just the most simple case, next will handle the slightly more
"complex" cases.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[ETH]: Make eth_type_trans set skb->dev like the other *_type_trans
Arnaldo Carvalho de Melo [Thu, 26 Apr 2007 00:40:23 +0000 (17:40 -0700)]
[ETH]: Make eth_type_trans set skb->dev like the other *_type_trans

One less thing for drivers writers to worry about.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[AOE]: Introduce aoe_hdr()
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 14:20:07 +0000 (11:20 -0300)]
[AOE]: Introduce aoe_hdr()

For consistency with other skb->mac.raw users.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years ago[QETH]: Use eth_hdr()
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 14:13:59 +0000 (11:13 -0300)]
[QETH]: Use eth_hdr()

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>