<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/include/net/dst.h, branch linux-2.6.38.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.38.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.38.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2010-12-14T21:01:14Z</updated>
<entry>
<title>net: Abstract default MTU metric calculation behind an accessor.</title>
<updated>2010-12-14T21:01:14Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2010-12-14T21:01:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d33e455337ea2c71d09d7f4367d6ad6dd32b6965'/>
<id>urn:sha1:d33e455337ea2c71d09d7f4367d6ad6dd32b6965</id>
<content type='text'>
Like RTAX_ADVMSS, make the default calculation go through a dst_ops
method rather than caching the computation in the routing cache
entries.

Now dst metrics are pretty much left as-is when new entries are
created, thus optimizing metric sharing becomes a real possibility.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: Abstract default ADVMSS behind an accessor.</title>
<updated>2010-12-13T20:52:14Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2010-12-13T20:52:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0dbaee3b37e118a96bb7b8eb0d9bbaeeb46264be'/>
<id>urn:sha1:0dbaee3b37e118a96bb7b8eb0d9bbaeeb46264be</id>
<content type='text'>
Make all RTAX_ADVMSS metric accesses go through a new helper function,
dst_metric_advmss().

Leave the actual default metric as "zero" in the real metric slot,
and compute the actual default value dynamically via a new dst_ops
AF specific callback.

For stacked IPSEC routes, we use the advmss of the path which
preserves existing behavior.

Unlike ipv4/ipv6, DecNET ties the advmss to the mtu and thus updates
advmss on pmtu updates.  This inconsistency in advmss handling
results in more raw metric accesses than I wish we ended up with.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ipv4: Don't pre-seed hoplimit metric.</title>
<updated>2010-12-13T06:08:17Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2010-12-13T05:55:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=323e126f0c5995f779d7df7fd035f6e8fed8764d'/>
<id>urn:sha1:323e126f0c5995f779d7df7fd035f6e8fed8764d</id>
<content type='text'>
Always go through a new ip4_dst_hoplimit() helper, just like ipv6.

This allowed several simplifications:

1) The interim dst_metric_hoplimit() can go as it's no longer
   userd.

2) The sysctl_ip_default_ttl entry no longer needs to use
   ipv4_doint_and_flush, since the sysctl is not cached in
   routing cache metrics any longer.

3) ipv4_doint_and_flush no longer needs to be exported and
   therefore can be marked static.

When ipv4_doint_and_flush_strategy was removed some time ago,
the external declaration in ip.h was mistakenly left around
so kill that off too.

We have to move the sysctl_ip_default_ttl declaration into
ipv4's route cache definition header net/route.h, because
currently net/ip.h (where the declaration lives now) has
a back dependency on net/route.h

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: Abstract RTAX_HOPLIMIT metric accesses behind helper.</title>
<updated>2010-12-13T05:35:57Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2010-12-13T05:35:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5170ae824ddf1988a63fb12cbedcff817634c444'/>
<id>urn:sha1:5170ae824ddf1988a63fb12cbedcff817634c444</id>
<content type='text'>
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: Abstract away all dst_entry metrics accesses.</title>
<updated>2010-12-09T18:46:36Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2010-12-09T05:16:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=defb3519a64141608725e2dac5a5aa9a3c644bae'/>
<id>urn:sha1:defb3519a64141608725e2dac5a5aa9a3c644bae</id>
<content type='text'>
Use helper functions to hide all direct accesses, especially writes,
to dst_entry metrics values.

This will allow us to:

1) More easily change how the metrics are stored.

2) Implement COW for metrics.

In particular this will help us put metrics into the inetpeer
cache if that is what we end up doing.  We can make the _metrics
member a pointer instead of an array, initially have it point
at the read-only metrics in the FIB, and then on the first set
grab an inetpeer entry and point the _metrics member there.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Acked-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
</content>
</entry>
<entry>
<title>decnet: RCU conversion and get rid of dev_base_lock</title>
<updated>2010-11-08T21:50:08Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2010-10-29T03:09:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fc766e4c4965915ab52a1d1fa3c7a7b3e7bc07f0'/>
<id>urn:sha1:fc766e4c4965915ab52a1d1fa3c7a7b3e7bc07f0</id>
<content type='text'>
While tracking dev_base_lock users, I found decnet used it in
dnet_select_source(), but for a wrong purpose:

Writers only hold RTNL, not dev_base_lock, so readers must use RCU if
they cannot use RTNL.

Adds an rcu_head in struct dn_ifaddr and handle proper RCU management.

Adds __rcu annotation in dn_route as well.

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Acked-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ipv4: add __rcu annotations to routes.c</title>
<updated>2010-10-27T18:37:31Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2010-10-25T21:02:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1c31720a74e19bb57f301350a3b03210fa2ba9e3'/>
<id>urn:sha1:1c31720a74e19bb57f301350a3b03210fa2ba9e3</id>
<content type='text'>
Add __rcu annotations to :
        (struct dst_entry)-&gt;rt_next
        (struct rt_hash_bucket)-&gt;chain

And use appropriate rcu primitives to reduce sparse warnings if
CONFIG_SPARSE_RCU_POINTER=y

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: introduce DST_NOCACHE flag</title>
<updated>2010-10-04T05:17:54Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2010-10-04T05:17:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c7d4426a98a5f6654cd0b4b33d9dab2e77192c18'/>
<id>urn:sha1:c7d4426a98a5f6654cd0b4b33d9dab2e77192c18</id>
<content type='text'>
While doing stress tests with IP route cache disabled, and multi queue
devices, I noticed a very high contention on one rwlock used in
neighbour code.

When many cpus are trying to send frames (possibly using a high
performance multiqueue device) to the same neighbour, they fight for the
neigh-&gt;lock rwlock in order to call neigh_hh_init(), and fight on
hh-&gt;hh_refcnt (a pair of atomic_inc/atomic_dec_and_test())

But we dont need to call neigh_hh_init() for dst that are used only
once. It costs four atomic operations at least, on two contended cache
lines, plus the high contention on neigh-&gt;lock rwlock.

Introduce a new dst flag, DST_NOCACHE, that is set when dst was not
inserted in route cache.

With the stress test bench, sending 160000000 frames on one neighbour,
results are :

Before patch:

real	2m28.406s
user	0m11.781s
sys	36m17.964s


After patch:

real	1m26.532s
user	0m12.185s
sys	20m3.903s

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tunnels: prepare percpu accounting</title>
<updated>2010-09-28T04:30:42Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2010-09-27T00:33:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=290b895e0ba4552dfcfc4bd35759c192345b934a'/>
<id>urn:sha1:290b895e0ba4552dfcfc4bd35759c192345b934a</id>
<content type='text'>
Tunnels are going to use percpu for their accounting.

They are going to use a new tstats field in net_device.

skb_tunnel_rx() is changed to be a wrapper around __skb_tunnel_rx()

IPTUNNEL_XMIT() is changed to be a wrapper around __IPTUNNEL_XMIT()

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: reset skb queue mapping when rx'ing over tunnel</title>
<updated>2010-09-27T01:48:40Z</updated>
<author>
<name>Tom Herbert</name>
</author>
<published>2010-09-23T11:19:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=693019e90ca45d881109d32c0c6d29adf03f6447'/>
<id>urn:sha1:693019e90ca45d881109d32c0c6d29adf03f6447</id>
<content type='text'>
Reset queue mapping when an skb is reentering the stack via a tunnel.
On second pass, the queue mapping from the original device is no
longer valid.

Signed-off-by: Tom Herbert &lt;therbert@google.com&gt;
Acked-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
