<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/sched, branch linux-2.6.23.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.23.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.23.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2007-12-14T17:50:52Z</updated>
<entry>
<title>PKT_SCHED: Check subqueue status before calling hard_start_xmit</title>
<updated>2007-12-14T17:50:52Z</updated>
<author>
<name>Peter P Waskiewicz Jr</name>
</author>
<published>2007-11-21T12:32:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=96219ec9d6b461e7587a51280ab5336a78234f86'/>
<id>urn:sha1:96219ec9d6b461e7587a51280ab5336a78234f86</id>
<content type='text'>
[PKT_SCHED]: Check subqueue status before calling hard_start_xmit

[ Upstream commit: 5f1a485d5905aa641f33009019b3699076666a4c ]

The only qdiscs that check subqueue state before dequeue'ing are PRIO
and RR.  The other qdiscs, including the default pfifo_fast qdisc,
will allow traffic bound for subqueue 0 through to hard_start_xmit.
The check for netif_queue_stopped() is done above in pkt_sched.h, so
it is unnecessary for qdisc_restart().  However, if the underlying
driver is multiqueue capable, and only sets queue states on subqueues,
this will allow packets to enter the driver when it's currently unable
to process packets, resulting in expensive requeues and driver
entries.  This patch re-adds the check for the subqueue status before
calling hard_start_xmit, so we can try and avoid the driver entry when
the queues are stopped.

Signed-off-by: Peter P Waskiewicz Jr &lt;peter.p.waskiewicz.jr@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Cc: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>Fix endianness bug in U32 classifier.</title>
<updated>2007-11-16T16:27:37Z</updated>
<author>
<name>Radu Rendec</name>
</author>
<published>2007-11-13T08:09:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e809e9c0da32b047f2c91b907ae33a00b1e782f3'/>
<id>urn:sha1:e809e9c0da32b047f2c91b907ae33a00b1e782f3</id>
<content type='text'>
changeset 543821c6f5dea5221426eaf1eac98b100249c7ac in mainline.

[PKT_SCHED] CLS_U32: Fix endianness problem with u32 classifier hash masks.

While trying to implement u32 hashes in my shaping machine I ran into
a possible bug in the u32 hash/bucket computing algorithm
(net/sched/cls_u32.c).

The problem occurs only with hash masks that extend over the octet
boundary, on little endian machines (where htonl() actually does
something).

Let's say that I would like to use 0x3fc0 as the hash mask. This means
8 contiguous "1" bits starting at b6. With such a mask, the expected
(and logical) behavior is to hash any address in, for instance,
192.168.0.0/26 in bucket 0, then any address in 192.168.0.64/26 in
bucket 1, then 192.168.0.128/26 in bucket 2 and so on.

This is exactly what would happen on a big endian machine, but on
little endian machines, what would actually happen with current
implementation is 0x3fc0 being reversed (into 0xc03f0000) by htonl()
in the userspace tool and then applied to 192.168.x.x in the u32
classifier. When shifting right by 16 bits (rank of first "1" bit in
the reversed mask) and applying the divisor mask (0xff for divisor
256), what would actually remain is 0x3f applied on the "168" octet of
the address.

One could say is this can be easily worked around by taking endianness
into account in userspace and supplying an appropriate mask (0xfc03)
that would be turned into contiguous "1" bits when reversed
(0x03fc0000). But the actual problem is the network address (inside
the packet) not being converted to host order, but used as a
host-order value when computing the bucket.

Let's say the network address is written as n31 n30 ... n0, with n0
being the least significant bit. When used directly (without any
conversion) on a little endian machine, it becomes n7 ... n0 n8 ..n15
etc in the machine's registers. Thus bits n7 and n8 would no longer be
adjacent and 192.168.64.0/26 and 192.168.128.0/26 would no longer be
consecutive.

The fix is to apply ntohl() on the hmask before computing fshift,
and in u32_hash_fold() convert the packet data to host order before
shifting down by fshift.

With helpful feedback from Jamal Hadi Salim and Jarek Poplawski.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>Fix TEQL oops.</title>
<updated>2007-11-16T16:27:37Z</updated>
<author>
<name>Evgeniy Polyakov</name>
</author>
<published>2007-11-13T08:07:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=61254a93643f43956a4b16c935ca5e058ef761b0'/>
<id>urn:sha1:61254a93643f43956a4b16c935ca5e058ef761b0</id>
<content type='text'>
[PKT_SCHED]: Fix OOPS when removing devices from a teql queuing discipline

[ Upstream commit: 4f9f8311a08c0d95c70261264a2b47f2ae99683a ]

tecl_reset() is called from deactivate and qdisc is set to noop already,
but subsequent teql_xmit does not know about it and dereference private
data as teql qdisc and thus oopses.
not catch it first :)

Signed-off-by: Evgeniy Polyakov &lt;johnpol@2ka.mipt.ru&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>Fix advertised packet scheduler timer resolution</title>
<updated>2007-11-16T16:27:36Z</updated>
<author>
<name>Patrick McHardy</name>
</author>
<published>2007-10-24T03:55:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e20e6446bdf5afd61b1139efca510a187b3d1c38'/>
<id>urn:sha1:e20e6446bdf5afd61b1139efca510a187b3d1c38</id>
<content type='text'>
patch 3c0cfc135829b98f7a4894938652f9ef78e24237 in mainline

The fourth parameter of /proc/net/psched is supposed to show the timer
resultion and is used by HTB userspace to calculate the necessary
burst rate. Currently we show the clock resolution, which results in a
too low burst rate when the two differ.

Signed-off-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>[PKT_SCHED] cls_u32: error code isn't been propogated properly</title>
<updated>2007-10-08T06:57:45Z</updated>
<author>
<name>Stephen Hemminger</name>
</author>
<published>2007-10-08T06:57:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bf1b803b01b00c3801e0aa373ba0305f8278e260'/>
<id>urn:sha1:bf1b803b01b00c3801e0aa373ba0305f8278e260</id>
<content type='text'>
    
Signed-off-by: Stephen Hemminger &lt;shemminger@linux-foundation.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[SFQ]: Remove artificial limitation for queue limit.</title>
<updated>2007-10-02T04:01:23Z</updated>
<author>
<name>Alexey Kuznetsov</name>
</author>
<published>2007-10-01T00:51:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=32740ddc1095e5e320bf961dda146bf97bc28adb'/>
<id>urn:sha1:32740ddc1095e5e320bf961dda146bf97bc28adb</id>
<content type='text'>
This is followup to Patrick's patch. A little optimization to enqueue
routine allows to remove artificial limitation on queue length.

Plus, testing showed that hash function used by SFQ is too bad or even worse.
It does not even sweep the whole range of hash values.
Switched to Jenkins' hash.

Signed-off-by: Alexey Kuznetsov &lt;kaber@ms2.inr.ac.ru&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[PKT_SCHED]: Fix 'SFQ qdisc crashes with limit of 2 packets'</title>
<updated>2007-09-20T19:14:08Z</updated>
<author>
<name>Alexey Kuznetsov</name>
</author>
<published>2007-09-19T17:42:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5588b40d7c2bff75ee573ed42d1738c73ce24492'/>
<id>urn:sha1:5588b40d7c2bff75ee573ed42d1738c73ce24492</id>
<content type='text'>
Acked-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[PKT_SCHED]: sch_cbq.c: Shut up uninitialized variable warning</title>
<updated>2007-09-16T21:54:05Z</updated>
<author>
<name>Satyam Sharma</name>
</author>
<published>2007-09-16T21:54:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ddeee3ce7fbf0e800f2a26a76d6018b42b337cc2'/>
<id>urn:sha1:ddeee3ce7fbf0e800f2a26a76d6018b42b337cc2</id>
<content type='text'>
net/sched/sch_cbq.c: In function 'cbq_enqueue':
net/sched/sch_cbq.c:383: warning: 'ret' may be used uninitialized in this function

has been verified to be a bogus case. So let's shut it up.

Signed-off-by: Satyam Sharma &lt;satyam@infradead.org&gt;
Acked-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[NET_SCHED] protect action config/dump from irqs</title>
<updated>2007-09-14T23:43:05Z</updated>
<author>
<name>Jamal Hadi Salim</name>
</author>
<published>2007-09-12T14:32:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e1e992e52faa588667e1378a2573b4b8e3fa6670'/>
<id>urn:sha1:e1e992e52faa588667e1378a2573b4b8e3fa6670</id>
<content type='text'>
(with no apologies to C Heston)

On Mon, 2007-10-09 at 21:00 +0800, Herbert Xu wrote:
On Sun, Sep 02, 2007 at 01:11:29PM +0000, Christian Kujau wrote:
&gt; &gt;
&gt; &gt; after upgrading to 2.6.23-rc5 (and applying davem's fix [0]), lockdep
&gt; &gt; was quite noisy when I tried to shape my external (wireless) interface:
&gt; &gt;
&gt; &gt; [ 6400.534545] FahCore_78.exe/3552 just changed the state of lock:
&gt; &gt; [ 6400.534713]  (&amp;dev-&gt;ingress_lock){-+..}, at: [&lt;c038d595&gt;]
&gt; &gt; netif_receive_skb+0x2d5/0x3c0
&gt; &gt; [ 6400.534941] but this lock took another, soft-read-irq-unsafe lock in the
&gt; &gt; past:
&gt; &gt; [ 6400.535145]  (police_lock){-.--}
&gt;
&gt; This is a genuine dead-lock.  The police lock can be taken
&gt; for reading with softirqs on.  If a second CPU tries to take
&gt; the police lock for writing, while holding the ingress lock,
&gt; then a softirq on the first CPU can dead-lock when it tries
&gt; to get the ingress lock.

Signed-off-by: Jamal Hadi Salim &lt;hadi@cyberus.ca&gt;
Acked-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[NET_SCHED] sch_prio.c: remove duplicate call of tc_classify()</title>
<updated>2007-08-31T05:35:46Z</updated>
<author>
<name>Lucas Nussbaum</name>
</author>
<published>2007-08-31T05:35:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=dbaaa07a60edf71670b484a65e14400ab40c84f7'/>
<id>urn:sha1:dbaaa07a60edf71670b484a65e14400ab40c84f7</id>
<content type='text'>
When CONFIG_NET_CLS_ACT is enabled, tc_classify() is called twice in
prio_classify(). This causes "interesting" behaviour: with the setup
below, packets are duplicated, sent twice to ifb0, and then loop in and
out of ifb0.

The patch uses the previously calculated return value in the switch,
which is probably what Patrick had in mind in commit
bdba91ec70fb5ccbdeb1c7068319adc6ea9e1a7d -- maybe Patrick can
double-check this?

-- example setup --
ifconfig ifb0 up
tc qdisc add dev ifb0 root netem delay 2s
tc qdisc add dev $ETH root handle 1: prio
tc filter add dev $ETH parent 1: protocol ip prio 10 u32 \
 match ip dst 172.24.110.6/32 flowid 1:1 \
 action mirred egress redirect dev ifb0
ping -c1 172.24.110.6

Signed-off-by: Lucas Nussbaum &lt;lucas.nussbaum@imag.fr&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
