13 years ago[IPV4] xfrm4_mode_beet: Use skb_transport_header().
David S. Miller [Fri, 20 Apr 2007 02:55:44 +0000]
[IPV4] xfrm4_mode_beet: Use skb_transport_header().

Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[SK_BUFF]: Introduce skb_transport_header(skb)
Arnaldo Carvalho de Melo [Thu, 26 Apr 2007 01:04:18 +0000]
[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>

13 years ago[SCTP]: Eliminate some pointer attributions to the skb layer headers
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 20:17:10 +0000]
[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>

13 years ago[SK_BUFF]: More skb_reset_transport_header conversions
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 20:10:43 +0000]
[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>

13 years ago[SK_BUFF]: Introduce ipipv6_hdr(), remove skb->h.ipv6h
Arnaldo Carvalho de Melo [Wed, 11 Apr 2007 04:06:25 +0000]
[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>

13 years ago[SK_BUFF]: Introduce ipip_hdr(), remove skb->h.ipiph
Arnaldo Carvalho de Melo [Thu, 26 Apr 2007 01:02:22 +0000]
[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>

13 years ago[SK_BUFF]: Introduce tcp_hdr(), remove skb->h.th
Arnaldo Carvalho de Melo [Wed, 11 Apr 2007 04:04:22 +0000]
[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>

13 years ago[TCP]: Introduce tcp_hdrlen() and tcp_optlen()
Arnaldo Carvalho de Melo [Mon, 19 Mar 2007 00:43:48 +0000]
[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>

13 years ago[SK_BUFF]: Introduce icmp_hdr(), remove skb->h.icmph
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 17:43:18 +0000]
[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>

13 years ago[SK_BUFF]: Introduce udp_hdr(), remove skb->h.uh
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 17:28:48 +0000]
[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>

13 years ago[SK_BUFF]: Introduce igmp_hdr() & friends, remove skb->h.igmph
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 17:19:23 +0000]
[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>

13 years ago[ICMP6]: Introduce icmp6_hdr()
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 17:03:22 +0000]
[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>

13 years ago[SCTP]: Introduce sctp_hdr()
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 16:59:32 +0000]
[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>

13 years ago[SK_BUFF]: Introduce skb_set_transport_header
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 16:51:52 +0000]
[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>

13 years ago[SK_BUFF]: Introduce skb_transport_offset()
Arnaldo Carvalho de Melo [Thu, 26 Apr 2007 00:55:53 +0000]
[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>

13 years ago[SK_BUFF]: Introduce skb_reset_transport_header(skb)
Arnaldo Carvalho de Melo [Tue, 13 Mar 2007 16:06:52 +0000]
[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>

13 years ago[SK_BUFF]: Introduce ipv6_hdr(), remove skb->nh.ipv6h
Arnaldo Carvalho de Melo [Thu, 26 Apr 2007 00:54:47 +0000]
[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>

13 years ago[SK_BUFF]: Introduce arp_hdr(), remove skb->nh.arph
Arnaldo Carvalho de Melo [Mon, 12 Mar 2007 23:56:31 +0000]
[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>

13 years ago[BRIDGE]: faster compare for link local addresses
Stephen Hemminger [Mon, 12 Mar 2007 23:25:32 +0000]
[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>

13 years ago[SK_BUFF]: Introduce ip_hdr(), remove skb->nh.iph
Arnaldo Carvalho de Melo [Sat, 21 Apr 2007 05:47:35 +0000]
[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>

13 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]
[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>

13 years ago[IP]: Introduce ip_hdrlen()
Arnaldo Carvalho de Melo [Mon, 12 Mar 2007 23:09:15 +0000]
[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>

13 years ago[SK_BUFF] ipmr: Missed one conversion to skb_network_header()
Arnaldo Carvalho de Melo [Mon, 12 Mar 2007 23:05:39 +0000]
[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>

13 years ago[NET]: show bound packet types
Stephen Hemminger [Mon, 12 Mar 2007 21:35:37 +0000]
[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>

13 years ago[NET]: make seq_operations const
Stephen Hemminger [Mon, 12 Mar 2007 21:34:29 +0000]
[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>

13 years ago[NET]: network dev read_mostly
Stephen Hemminger [Mon, 12 Mar 2007 21:33:50 +0000]
[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>

13 years ago[SK_BUFF]: Introduce skb_set_network_header
Arnaldo Carvalho de Melo [Mon, 12 Mar 2007 01:39:41 +0000]
[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>

13 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]
[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>

13 years ago[SK_BUFF]: Introduce skb_network_header()
Arnaldo Carvalho de Melo [Wed, 11 Apr 2007 03:50:43 +0000]
[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>

13 years ago[SK_BUFF]: Introduce skb_network_offset()
Arnaldo Carvalho de Melo [Sun, 11 Mar 2007 01:16:10 +0000]
[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>

13 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]
[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>

13 years ago[SK_BUFF] xfrm4: use skb_reset_network_header
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 22:59:16 +0000]
[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>

13 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]
[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>

13 years ago[SK_BUFF]: Use skb_reset_network_header after skb_push
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 22:40:39 +0000]
[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>

13 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]
[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>

13 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]
[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>

13 years ago[SK_BUFF]: Some more simple skb_reset_network_header conversions
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 22:04:55 +0000]
[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>

13 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]
[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>

13 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]
[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>

13 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]
[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>

13 years ago[SK_BUFF]: Introduce skb_reset_network_header(skb)
Arnaldo Carvalho de Melo [Wed, 11 Apr 2007 03:45:18 +0000]
[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>

13 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]
[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>

13 years ago[BONDING]: Introduce arp_pkt()
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 19:07:19 +0000]
[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>

13 years ago[PPPOE]: Introduce pppoe_hdr()
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 18:56:08 +0000]
[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>

13 years ago[LLC]: Kill llc_set_pdu_hdr
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 18:34:36 +0000]
[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>

13 years ago[SK_BUFF]: Introduce skb_mac_header()
Arnaldo Carvalho de Melo [Mon, 19 Mar 2007 22:33:04 +0000]
[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>

13 years ago[TCP]: Use skb_set_mac_header in tcp_collapse
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 15:48:37 +0000]
[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>

13 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]
[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>

13 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]
[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>

13 years ago[SK_BUFF]: Introduce skb_set_mac_header()
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 15:30:58 +0000]
[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>

13 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]
[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>

13 years ago[LLC]: Use skb_reset_mac_header in llc_alloc_frame
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 15:14:56 +0000]
[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>

13 years ago[SK_BUFF]: Introduce skb_reset_mac_header(skb)
Arnaldo Carvalho de Melo [Mon, 19 Mar 2007 22:30:44 +0000]
[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>

13 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]
[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>

13 years ago[AOE]: Introduce aoe_hdr()
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 14:20:07 +0000]
[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>

13 years ago[QETH]: Use eth_hdr()
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 14:13:59 +0000]
[QETH]: Use eth_hdr()

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

13 years ago[HIPPI/FDDI]: Make {hippi,fddi}_type_trans set skb->dev
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 13:57:13 +0000]
[HIPPI/FDDI]: Make {hippi,fddi}_type_trans set skb->dev

Now all the _type_trans routines are consistent in this regard.

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

13 years ago[TR]: Make tr_type_trans set skb->dev
Arnaldo Carvalho de Melo [Mon, 19 Mar 2007 22:29:16 +0000]
[TR]: Make tr_type_trans set skb->dev

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

13 years ago[TR]: Use tr_hdr() were appropriate
Arnaldo Carvalho de Melo [Mon, 19 Mar 2007 22:27:07 +0000]
[TR]: Use tr_hdr() were appropriate

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

13 years ago[SOCKET]: Export __sock_recv_timestamp
Arnaldo Carvalho de Melo [Sat, 10 Mar 2007 03:39:35 +0000]
[SOCKET]: Export __sock_recv_timestamp

Kernel: arch/x86_64/boot/bzImage is ready  (#2)
  MODPOST 1816 modules
WARNING: "__sock_recv_timestamp" [net/sctp/sctp.ko] undefined!
WARNING: "__sock_recv_timestamp" [net/packet/af_packet.ko] undefined!
WARNING: "__sock_recv_timestamp" [net/key/af_key.ko] undefined!
WARNING: "__sock_recv_timestamp" [net/ipv6/ipv6.ko] undefined!
WARNING: "__sock_recv_timestamp" [net/atm/atm.ko] undefined!
make[2]: *** [__modpost] Error 1
make[1]: *** [modules] Error 2
make: *** [_all] Error 2

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

13 years ago[NET]: Adding SO_TIMESTAMPNS / SCM_TIMESTAMPNS support
Eric Dumazet [Mon, 26 Mar 2007 05:14:49 +0000]
[NET]: Adding SO_TIMESTAMPNS / SCM_TIMESTAMPNS support

Now that network timestamps use ktime_t infrastructure, we can add a new
SOL_SOCKET sockopt  SO_TIMESTAMPNS.

This command is similar to SO_TIMESTAMP, but permits transmission of
a 'timespec struct' instead of a 'timeval struct' control message.
(nanosecond resolution instead of microsecond)

Control message is labelled SCM_TIMESTAMPNS instead of SCM_TIMESTAMP

A socket cannot mix SO_TIMESTAMP and SO_TIMESTAMPNS : the two modes are
mutually exclusive.

sock_recv_timestamp() became too big to be fully inlined so I added a
__sock_recv_timestamp() helper function.

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
CC: linux-arch@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[UDP]: Use __skb_pull since we have checked it won't fail with pskb_may_pull
Arnaldo Carvalho de Melo [Fri, 9 Mar 2007 21:51:54 +0000]
[UDP]: Use __skb_pull since we have checked it won't fail with pskb_may_pull

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

13 years ago[NET]: New sysctls should use __read_mostly tags
Eric Dumazet [Fri, 9 Mar 2007 06:36:37 +0000]
[NET]: New sysctls should use __read_mostly tags

net_msg_warn should be placed in the read_mostly section, to avoid
performance problems on SMP

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[IPV6]: Ensure to truncate result and return full length for sticky options.
YOSHIFUJI Hideaki [Fri, 9 Mar 2007 04:48:23 +0000]
[IPV6]: Ensure to truncate result and return full length for sticky options.

Bug noticed by Chris Wright <chrisw@sous-sol.org>.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[IPV6]: Return correct result for sticky options.
YOSHIFUJI Hideaki [Mon, 19 Mar 2007 00:35:57 +0000]
[IPV6]: Return correct result for sticky options.

We returned incorrect result with IPV6_RTHDRDSTOPTS, IPV6_RTHDR and
IPV6_DSTOPTS.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[UDP]: deinline
Stephen Hemminger [Fri, 9 Mar 2007 04:46:41 +0000]
[UDP]: deinline

A couple of functions are exported or used indirectly
so it is pointless to mark them as inline.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET]: deinline some functions
Stephen Hemminger [Fri, 9 Mar 2007 04:46:03 +0000]
[NET]: deinline some functions

Several functions are marked inline or forced inline, but it
would be better to let the compiler decide.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[TCP]: whitespace cleanup
Stephen Hemminger [Fri, 9 Mar 2007 04:45:19 +0000]
[TCP]: whitespace cleanup

Add whitespace around keywords.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[IPV4]: cleanup
Stephen Hemminger [Fri, 9 Mar 2007 04:44:43 +0000]
[IPV4]: cleanup

Add whitespace around keywords.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[WIRELESS]: use ARRAY_SIZE()
Stephen Hemminger [Fri, 9 Mar 2007 04:43:49 +0000]
[WIRELESS]: use ARRAY_SIZE()

Use ARRAY_SIZE() macro now.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET] core: whitespace cleanup
Stephen Hemminger [Wed, 11 Apr 2007 03:10:33 +0000]
[NET] core: whitespace cleanup

Fix whitespace around keywords. Fix indentation especially of switch
statements.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[UDP]: ipv6 style cleanup
Stephen Hemminger [Fri, 9 Mar 2007 04:42:35 +0000]
[UDP]: ipv6 style cleanup

Fix whitespace around keywords. Eliminate unnecessary ()'s on return
statements.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[UDP]: ipv4 whitespace cleanup
Stephen Hemminger [Fri, 9 Mar 2007 04:41:55 +0000]
[UDP]: ipv4 whitespace cleanup

Fix whitespace around keywords.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET]: Replace CONFIG_NET_DEBUG with sysctl.
Stephen Hemminger [Fri, 9 Mar 2007 04:41:08 +0000]
[NET]: Replace CONFIG_NET_DEBUG with sysctl.

Covert network warning messages from a compile time to runtime choice.
Removes kernel config option and replaces it with new /proc/sys/net/core/warnings.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution
Eric Dumazet [Mon, 19 Mar 2007 00:33:16 +0000]
[NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution

Now network timestamps use ktime_t infrastructure, we can add a new
ioctl() SIOCGSTAMPNS command to get timestamps in 'struct timespec'.
User programs can thus access to nanosecond resolution.

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
CC: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[TCP/DCCP/RANDOM]: Remove unused exports.
Adrian Bunk [Thu, 8 Mar 2007 03:33:52 +0000]
[TCP/DCCP/RANDOM]: Remove unused exports.

This patch removes the following not or no longer used exports:
- drivers/char/random.c: secure_tcp_sequence_number
- net/dccp/options.c: sysctl_dccp_feat_sequence_window
- net/netlink/af_netlink.c: netlink_set_err

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[TCP]: Abstract out all write queue operations.
David S. Miller [Wed, 7 Mar 2007 20:12:44 +0000]
[TCP]: Abstract out all write queue operations.

This allows the write queue implementation to be changed,
for example, to one which allows fast interval searching.

Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET] TIPC: Use htons() where appropriate.
YOSHIFUJI Hideaki [Wed, 7 Mar 2007 05:21:31 +0000]
[NET] TIPC: Use htons() where appropriate.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET] SCHED: Use htons() where appropriate.
YOSHIFUJI Hideaki [Wed, 7 Mar 2007 05:21:20 +0000]
[NET] SCHED: Use htons() where appropriate.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET] NETFILTER: Use htonl() where appropriate.
YOSHIFUJI Hideaki [Wed, 7 Mar 2007 05:21:00 +0000]
[NET] NETFILTER: Use htonl() where appropriate.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET] IPV4: Use hton{s,l}() where appropriate.
YOSHIFUJI Hideaki [Wed, 7 Mar 2007 05:19:10 +0000]
[NET] IPV4: Use hton{s,l}() where appropriate.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET] IEEE80211: Use htons() where appropriate.
YOSHIFUJI Hideaki [Wed, 7 Mar 2007 05:19:05 +0000]
[NET] IEEE80211: Use htons() where appropriate.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET] ETHERNET: Use htons() where appropriate.
YOSHIFUJI Hideaki [Wed, 7 Mar 2007 05:19:03 +0000]
[NET] ETHERNET: Use htons() where appropriate.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET] CORE: Use htons() where appropriate.
YOSHIFUJI Hideaki [Mon, 26 Mar 2007 03:13:04 +0000]
[NET] CORE: Use htons() where appropriate.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET] BLUETOOTH: Use cpu_to_le{16,32}() where appropriate.
YOSHIFUJI Hideaki [Mon, 26 Mar 2007 03:12:50 +0000]
[NET] BLUETOOTH: Use cpu_to_le{16,32}() where appropriate.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET] ATM: Use htons() where appropriate.
YOSHIFUJI Hideaki [Mon, 26 Mar 2007 03:12:32 +0000]
[NET] ATM: Use htons() where appropriate.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET] 8021Q: Use htons() where appropriate.
YOSHIFUJI Hideaki [Mon, 26 Mar 2007 03:12:18 +0000]
[NET] 8021Q: Use htons() where appropriate.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NET] 802: Use hton{s,l}() where appropriate.
YOSHIFUJI Hideaki [Mon, 26 Mar 2007 03:11:55 +0000]
[NET] 802: Use hton{s,l}() where appropriate.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[UDP]: Clean up UDP-Lite receive checksum
Herbert Xu [Mon, 26 Mar 2007 03:10:56 +0000]
[UDP]: Clean up UDP-Lite receive checksum

This patch eliminates some duplicate code for the verification of
receive checksums between UDP-Lite and UDP.  It does this by
introducing __skb_checksum_complete_head which is identical to
__skb_checksum_complete_head apart from the fact that it takes
a length parameter rather than computing the first skb->len bytes.

As a result UDP-Lite will be able to use hardware checksum offload
for packets which do not use partial coverage checksums.  It also
means that UDP-Lite loopback no longer does unnecessary checksum
verification.

If any NICs start support UDP-Lite this would also start working
automatically.

This patch removes the assumption that msg_flags has MSG_TRUNC clear
upon entry in recvmsg.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[UDP6]: Restore sk_filter optimisation
Herbert Xu [Wed, 7 Mar 2007 04:29:58 +0000]
[UDP6]: Restore sk_filter optimisation

This reverts the changeset

    [IPV6]: UDPv6 checksum.

    We always need to check UDPv6 checksum because it is mandatory.

The sk_filter optimisation has nothing to do whether we verify the
checksum.  It simply postpones it to the point when the user calls
recv or poll.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[IPV4]: Optimize inet_getpeer()
Eric Dumazet [Wed, 7 Mar 2007 04:23:10 +0000]
[IPV4]: Optimize inet_getpeer()

1) Some sysctl vars are declared __read_mostly

2) We can avoid updating stack[] when doing an AVL lookup only.

    lookup() macro is extended to receive a second parameter, that may be NULL
in case of a pure lookup (no need to save the AVL path). This removes
unnecessary instructions, because compiler knows if this _stack parameter is
NULL or not.

    text size of net/ipv4/inetpeer.o is 2063 bytes instead of 2107 on x86_64

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[TCP] TCP Yeah: cleanup
Stephen Hemminger [Wed, 7 Mar 2007 04:21:20 +0000]
[TCP] TCP Yeah: cleanup

Eliminate need for full 6/4/64 divide to compute queue.
Variable maxqueue was really a constant.
Fix indentation.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[TCP] tcp_cubic: faster cube root
Stephen Hemminger [Mon, 26 Mar 2007 03:21:15 +0000]
[TCP] tcp_cubic: faster cube root

The Newton-Raphson method is quadratically convergent so
only a small fixed number of steps are necessary.
Therefore it is faster to unroll the loop. Since div64_64 is no longer
inline it won't cause code explosion.

Also fixes a bug that can occur if x^2 was bigger than 32 bits.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[ATM] ENI: Convert to struct timeval to ktime_t.
YOSHIFUJI Hideaki [Wed, 7 Mar 2007 04:19:26 +0000]
[ATM] ENI: Convert to struct timeval to ktime_t.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[NETLINK]: Limit NLMSG_GOODSIZE to 8K.
David S. Miller [Mon, 26 Mar 2007 03:27:59 +0000]
[NETLINK]: Limit NLMSG_GOODSIZE to 8K.

Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[IPV6] ADDRCONF: Fix possible inet6_ifaddr leakage with CONFIG_OPTIMISTIC_DAD.
YOSHIFUJI Hideaki [Wed, 28 Feb 2007 14:13:20 +0000]
[IPV6] ADDRCONF: Fix possible inet6_ifaddr leakage with CONFIG_OPTIMISTIC_DAD.

The inet6_ifaddr for source address of RS is leaked if the address
is not an optimistic address.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[IPV6] ADDRCONF: Optimistic Duplicate Address Detection (RFC 4429) Support.
Neil Horman [Thu, 26 Apr 2007 00:08:10 +0000]
[IPV6] ADDRCONF: Optimistic Duplicate Address Detection (RFC 4429) Support.

Nominally an autoconfigured IPv6 address is added to an interface in the
Tentative state (as per RFC 2462).  Addresses in this state remain in this
state while the Duplicate Address Detection process operates on them to
determine their uniqueness on the network.  During this period, these
tentative addresses may not be used for communication, increasing the time
before a node may be able to communicate on a network.  Using Optimistic
Duplicate Address Detection, autoconfigured addresses may be used
immediately for communication on the network, as long as certain rules are
followed to avoid conflicts with other nodes during the Duplicate Address
Detection process.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[IPV6] IP6TUNNEL: Enable to control the handled inner protocol.
Yasuyuki Kozakai [Thu, 30 Nov 2006 05:43:28 +0000]
[IPV6] IP6TUNNEL: Enable to control the handled inner protocol.

ip6_tunnel before supporting IPv4/IPv6 tunnel allows only IPPROTO_IPV6
in configurations from userland. This allows userland to set IPPROTO_IPIP
and 0(wildcard). ip6_tunnel only handles allowed inner protocols.

Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[IPV6] IP6TUNNEL: Rename functions ip6ip6_* to ip6_tnl_*.
Yasuyuki Kozakai [Fri, 9 Feb 2007 15:30:33 +0000]
[IPV6] IP6TUNNEL: Rename functions ip6ip6_* to ip6_tnl_*.

Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

13 years ago[IPV6] IP6TUNNEL: Add support to IPv4 over IPv6 tunnel.
Yasuyuki Kozakai [Wed, 14 Feb 2007 15:43:16 +0000]
[IPV6] IP6TUNNEL: Add support to IPv4 over IPv6 tunnel.

Some notes
- Protocol number IPPROTO_IPIP is used for IPv4 over IPv6 packets.
- If IP6_TNL_F_USE_ORIG_TCLASS is set, TOS in IPv4 header is copied to
  Traffic Class in outer IPv6 header on xmit.
- IP6_TNL_F_USE_ORIG_FLOWLABEL is ignored on xmit of IPv4 packets, because
  IPv4 header does not have flow label.
- Kernel sends ICMP error if IPv4 packet is too big on xmit, even if
  DF flag is not set.

Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>