<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/sched, branch linux-2.6.37.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2011-02-17T23:14:23Z</updated>
<entry>
<title>net_sched: pfifo_head_drop problem</title>
<updated>2011-02-17T23:14:23Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2011-01-05T10:35:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f0a32b09fd401b485efc89bdc2a92fb477759786'/>
<id>urn:sha1:f0a32b09fd401b485efc89bdc2a92fb477759786</id>
<content type='text'>
[ Upstream commit 44b8288308ac9da27eab7d7bdbf1375a568805c3 ]

commit 57dbb2d83d100ea (sched: add head drop fifo queue)
introduced pfifo_head_drop, and broke the invariant that
sch-&gt;bstats.bytes and sch-&gt;bstats.packets are COUNTER (increasing
counters only)

This can break estimators because est_timer() handles unsigned deltas
only. A decreasing counter can then give a huge unsigned delta.

My mid term suggestion would be to change things so that
sch-&gt;bstats.bytes and sch-&gt;bstats.packets are incremented in dequeue()
only, not at enqueue() time. We also could add drop_bytes/drop_packets
and provide estimations of drop rates.

It would be more sensible anyway for very low speeds, and big bursts.
Right now, if we drop packets, they still are accounted in byte/packets
abolute counters and rate estimators.

Before this mid term change, this patch makes pfifo_head_drop behavior
similar to other qdiscs in case of drops :
Dont decrement sch-&gt;bstats.bytes and sch-&gt;bstats.packets

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Acked-by: Hagen Paul Pfeifer &lt;hagen@jauu.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>net_sched: sch_sfq: fix allot handling</title>
<updated>2010-12-20T21:18:16Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2010-12-20T21:18:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=aa3e219997e4b949be4199660936099ded0b401f'/>
<id>urn:sha1:aa3e219997e4b949be4199660936099ded0b401f</id>
<content type='text'>
When deploying SFQ/IFB here at work, I found the allot management was
pretty wrong in sfq, even changing allot from short to int...

We should init allot for each new flow, not using a previous value found
in slot.

Before patch, I saw bursts of several packets per flow, apparently
denying the default "quantum 1514" limit I had on my SFQ class.

class sfq 11:1 parent 11: 
 (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 7p requeues 0 
 allot 11546 

class sfq 11:46 parent 11: 
 (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 1p requeues 0 
 allot -23873 

class sfq 11:78 parent 11: 
 (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 5p requeues 0 
 allot 11393 

After patch, better fairness among each flow, allot limit being
respected, allot is positive :

class sfq 11:e parent 11: 
 (dropped 0, overlimits 0 requeues 86) 
 backlog 0b 3p requeues 86 
 allot 596 

class sfq 11:94 parent 11: 
 (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 3p requeues 0 
 allot 1468 

class sfq 11:a4 parent 11: 
 (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 4p requeues 0 
 allot 650 

class sfq 11:bb parent 11: 
 (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 3p requeues 0 
 allot 596 

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>classifier: report statistics for basic classifier</title>
<updated>2010-11-08T20:17:05Z</updated>
<author>
<name>stephen hemminger</name>
</author>
<published>2010-11-04T11:47:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4c46ee52589a4edd67447214eb489b10fed5c53a'/>
<id>urn:sha1:4c46ee52589a4edd67447214eb489b10fed5c53a</id>
<content type='text'>
The basic classifier keeps statistics but does not report it to user space.
This showed up when using basic classifier (with police) as a default catch
all on ingress; no statistics were reported.

Signed-off-by: Stephen Hemminger &lt;shemminger@vyatta.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>cls_cgroup: Fix crash on module unload</title>
<updated>2010-11-04T01:50:50Z</updated>
<author>
<name>Herbert Xu</name>
</author>
<published>2010-11-03T13:31:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c00b2c9e79466d61979cd21af526cc6d5d0ee04f'/>
<id>urn:sha1:c00b2c9e79466d61979cd21af526cc6d5d0ee04f</id>
<content type='text'>
Somewhere along the lines net_cls_subsys_id became a macro when
cls_cgroup is built as a module.  Not only did it make cls_cgroup
completely useless, it also causes it to crash on module unload.

This patch fixes this by removing that macro.

Thanks to Eric Dumazet for diagnosing this problem.

Reported-by: Randy Dunlap &lt;randy.dunlap@oracle.com&gt;
Signed-off-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Reviewed-by: Li Zefan &lt;lizf@cn.fujitsu.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>text ematch: check for NULL pointer before destroying textsearch config</title>
<updated>2010-10-31T16:37:38Z</updated>
<author>
<name>Thomas Graf</name>
</author>
<published>2010-10-31T16:37:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5ec1cea057495b8f10bab0c1396a9d8e46b7b0a8'/>
<id>urn:sha1:5ec1cea057495b8f10bab0c1396a9d8e46b7b0a8</id>
<content type='text'>
While validating the configuration em_ops is already set, thus the
individual destroy functions are called, but the ematch data has
not been allocated and associated with the ematch yet.

Signed-off-by: Thomas Graf &lt;tgraf@infradead.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6</title>
<updated>2010-10-23T18:47:02Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2010-10-23T18:47:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5f05647dd81c11a6a165ccc8f0c1370b16f3bcb0'/>
<id>urn:sha1:5f05647dd81c11a6a165ccc8f0c1370b16f3bcb0</id>
<content type='text'>
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1699 commits)
  bnx2/bnx2x: Unsupported Ethtool operations should return -EINVAL.
  vlan: Calling vlan_hwaccel_do_receive() is always valid.
  tproxy: use the interface primary IP address as a default value for --on-ip
  tproxy: added IPv6 support to the socket match
  cxgb3: function namespace cleanup
  tproxy: added IPv6 support to the TPROXY target
  tproxy: added IPv6 socket lookup function to nf_tproxy_core
  be2net: Changes to use only priority codes allowed by f/w
  tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled
  tproxy: added tproxy sockopt interface in the IPV6 layer
  tproxy: added udp6_lib_lookup function
  tproxy: added const specifiers to udp lookup functions
  tproxy: split off ipv6 defragmentation to a separate module
  l2tp: small cleanup
  nf_nat: restrict ICMP translation for embedded header
  can: mcp251x: fix generation of error frames
  can: mcp251x: fix endless loop in interrupt handler if CANINTF_MERRF is set
  can-raw: add msg_flags to distinguish local traffic
  9p: client code cleanup
  rds: make local functions/variables static
  ...

Fix up conflicts in net/core/dev.c, drivers/net/pcmcia/smc91c92_cs.c and
drivers/net/wireless/ath/ath9k/debug.c as per David
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6</title>
<updated>2010-10-21T15:21:34Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2010-10-21T15:21:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9941fb62762253774cc6177d0b9172ece5133fe1'/>
<id>urn:sha1:9941fb62762253774cc6177d0b9172ece5133fe1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>net_sched: remove the unused parameter of qdisc_create_dflt()</title>
<updated>2010-10-21T10:09:47Z</updated>
<author>
<name>Changli Gao</name>
</author>
<published>2010-10-16T13:04:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3511c9132f8b1e1b5634e41a3331c44b0c13be70'/>
<id>urn:sha1:3511c9132f8b1e1b5634e41a3331c44b0c13be70</id>
<content type='text'>
The first parameter dev isn't in use in qdisc_create_dflt().

Signed-off-by: Changli Gao &lt;xiaosuo@gmail.com&gt;
Acked-by: Jamal Hadi Salim &lt;hadi@cyberus.ca&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net/sched: fix missing spinlock init</title>
<updated>2010-10-21T10:09:40Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2010-10-15T19:22:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7b5edbc4cfe2297b0915adea5aa1eafcafadbf06'/>
<id>urn:sha1:7b5edbc4cfe2297b0915adea5aa1eafcafadbf06</id>
<content type='text'>
Under network load, doing :

tc qdisc del dev eth0 root

triggers :

[  167.193087] BUG: spinlock bad magic on CPU#3, udpflood/4928
[  167.193139]  lock: c15bc324, .magic: 00000000, .owner:
&lt;none&gt;/-1, .owner_cpu: -1
[  167.193193] Pid: 4928, comm: udpflood Not tainted
2.6.36-rc7-11417-g215340c-dirty #323
[  167.193245] Call Trace:
[  167.193292]  [&lt;c13abaa0&gt;] ? printk+0x18/0x20
[  167.193342]  [&lt;c11afb53&gt;] spin_bug+0xa3/0xf0
[  167.193389]  [&lt;c11afcdd&gt;] do_raw_spin_lock+0x7d/0x160
[  167.193440]  [&lt;c1313d4e&gt;] ? __dev_xmit_skb+0x27e/0x2b0
[  167.193496]  [&lt;c107382b&gt;] ? trace_hardirqs_on+0xb/0x10
[  167.193545]  [&lt;c13ae99a&gt;] _raw_spin_lock+0x3a/0x40
[  167.193593]  [&lt;c1313d4e&gt;] ? __dev_xmit_skb+0x27e/0x2b0
[  167.193641]  [&lt;c1313d4e&gt;] __dev_xmit_skb+0x27e/0x2b0

commit 79640a4ca695 (add additional lock to qdisc to increase
throughput) forgot to initialize  noop_qdisc and noqueue_qdisc busylock

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>sched: Fix softirq time accounting</title>
<updated>2010-10-18T18:52:20Z</updated>
<author>
<name>Venkatesh Pallipadi</name>
</author>
<published>2010-10-05T00:03:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=75e1056f5c57050415b64cb761a3acc35d91f013'/>
<id>urn:sha1:75e1056f5c57050415b64cb761a3acc35d91f013</id>
<content type='text'>
Peter Zijlstra found a bug in the way softirq time is accounted in
VIRT_CPU_ACCOUNTING on this thread:

   http://lkml.indiana.edu/hypermail//linux/kernel/1009.2/01366.html

The problem is, softirq processing uses local_bh_disable internally. There
is no way, later in the flow, to differentiate between whether softirq is
being processed or is it just that bh has been disabled. So, a hardirq when bh
is disabled results in time being wrongly accounted as softirq.

Looking at the code a bit more, the problem exists in !VIRT_CPU_ACCOUNTING
as well. As account_system_time() in normal tick based accouting also uses
softirq_count, which will be set even when not in softirq with bh disabled.

Peter also suggested solution of using 2*SOFTIRQ_OFFSET as irq count
for local_bh_{disable,enable} and using just SOFTIRQ_OFFSET while softirq
processing. The patch below does that and adds API in_serving_softirq() which
returns whether we are currently processing softirq or not.

Also changes one of the usages of softirq_count in net/sched/cls_cgroup.c
to in_serving_softirq.

Looks like many usages of in_softirq really want in_serving_softirq. Those
changes can be made individually on a case by case basis.

Signed-off-by: Venkatesh Pallipadi &lt;venki@google.com&gt;
Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
LKML-Reference: &lt;1286237003-12406-2-git-send-email-venki@google.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
</feed>
