<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/core/link_watch.c, branch linux-2.6.28.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2008-07-09T06:01:06Z</updated>
<entry>
<title>net: Clean up explicit -&gt;tx_queue references in link watch.</title>
<updated>2008-07-09T06:01:06Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2008-07-09T06:01:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6fa9864b53f0680e432a2c431c2cf2055daa3a88'/>
<id>urn:sha1:6fa9864b53f0680e432a2c431c2cf2055daa3a88</id>
<content type='text'>
First, we add a qdisc_tx_changing() helper which returns true if the
qdisc attachment is in transition.

Second, we remove an assertion warning which is of limited value and
is hard to express precisely in a multiqueue environment.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>netdev: Move rest of qdisc state into struct netdev_queue</title>
<updated>2008-07-09T00:42:10Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2008-07-09T00:42:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b0e1e6462df3c5944010b3328a546d8fe5d932cd'/>
<id>urn:sha1:b0e1e6462df3c5944010b3328a546d8fe5d932cd</id>
<content type='text'>
Now qdisc, qdisc_sleeping, and qdisc_list also live there.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[NET] link_watch: Always schedule urgent events</title>
<updated>2007-05-11T06:45:28Z</updated>
<author>
<name>Herbert Xu</name>
</author>
<published>2007-05-09T07:17:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d9568ba91b1fdd1ea4fdbf9fcc76b867cca6c1d5'/>
<id>urn:sha1:d9568ba91b1fdd1ea4fdbf9fcc76b867cca6c1d5</id>
<content type='text'>
Urgent events may be delayed if we already have a non-urgent event
queued for that device.  This patch changes this by making sure that
an urgent event is always looked at immediately.

I've replaced the LW_RUNNING flag by LW_URGENT since whether work
is scheduled is already kept track by the work queue system.

The only complication is that we have to provide some exclusion for
the setting linkwatch_nextevent which is available in the actual
work function.

Signed-off-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] link_watch: Eliminate potential delay on wrap-around</title>
<updated>2007-05-11T06:45:11Z</updated>
<author>
<name>Herbert Xu</name>
</author>
<published>2007-05-09T06:22:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=db0ccffed91e234cad99a35f07d5a322f410baa2'/>
<id>urn:sha1:db0ccffed91e234cad99a35f07d5a322f410baa2</id>
<content type='text'>
When the jiffies wrap around or when the system boots up for the first
time, down events can be delayed indefinitely since we no longer
update linkwatch_nextevent when only urgent events are processed.

This patch fixes this by setting linkwatch_nextevent when a
wrap-around occurs.

Signed-off-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]: Remove link_watch delay for up even when we're down</title>
<updated>2007-05-11T06:45:08Z</updated>
<author>
<name>Herbert Xu</name>
</author>
<published>2007-05-09T01:36:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=294cc44b7e48a6e7732499eebcf409b231460d8e'/>
<id>urn:sha1:294cc44b7e48a6e7732499eebcf409b231460d8e</id>
<content type='text'>
Currently all link carrier events are delayed by up to a second
before they're processed to prevent link storms.  This causes
unnecessary packet loss during that interval.

In fact, we can achieve the same effect in preventing storms by
only delaying down events and unnecssary up events.  The latter
is defined as up events when we're already up.

Signed-off-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] link_watch: Move link watch list into net_device</title>
<updated>2007-05-11T06:45:07Z</updated>
<author>
<name>Herbert Xu</name>
</author>
<published>2007-05-09T01:34:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=572a103ded0ad880f75ce83e99f0512fbb80b5b0'/>
<id>urn:sha1:572a103ded0ad880f75ce83e99f0512fbb80b5b0</id>
<content type='text'>
These days the link watch mechanism is an integral part of the
network subsystem as it manages the carrier status.  So it now
makes sense to allocate some memory for it in net_device rather
than allocating it on demand.

In fact, this is necessary because we can't tolerate a memory
allocation failure since that means we'd have to potentially
throw a link up event away.

It also simplifies the code greatly.

In doing so I discovered a subtle race condition in the use
of singleevent.  This race condition still exists (and is
somewhat magnified) without singleevent but it's now plugged
thanks to an smp_mb__before_clear_bit.

Signed-off-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]: cleanup extra semicolons</title>
<updated>2007-04-26T05:29:24Z</updated>
<author>
<name>Stephen Hemminger</name>
</author>
<published>2007-04-21T00:09:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3ff50b7997fe06cd5d276b229967bb52d6b3b6c1'/>
<id>urn:sha1:3ff50b7997fe06cd5d276b229967bb52d6b3b6c1</id>
<content type='text'>
Spring cleaning time...

There seems to be a lot of places in the network code that have
extra bogus semicolons after conditionals.  Most commonly is a
bogus semicolon after: switch() { }

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>[NET] CORE: Fix whitespace errors.</title>
<updated>2007-02-11T07:19:25Z</updated>
<author>
<name>YOSHIFUJI Hideaki</name>
</author>
<published>2007-02-09T14:24:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4ec93edb14fe5fdee9fae6335f2cbba204627eac'/>
<id>urn:sha1:4ec93edb14fe5fdee9fae6335f2cbba204627eac</id>
<content type='text'>
Signed-off-by: YOSHIFUJI Hideaki &lt;yoshfuji@linux-ipv6.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>WorkStruct: Pass the work_struct pointer instead of context data</title>
<updated>2006-11-22T14:55:48Z</updated>
<author>
<name>David Howells</name>
</author>
<published>2006-11-22T14:55:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=65f27f38446e1976cc98fd3004b110fedcddd189'/>
<id>urn:sha1:65f27f38446e1976cc98fd3004b110fedcddd189</id>
<content type='text'>
Pass the work_struct pointer to the work function rather than context data.
The work function can use container_of() to work out the data.

For the cases where the container of the work_struct may go away the moment the
pending bit is cleared, it is made possible to defer the release of the
structure by deferring the clearing of the pending bit.

To make this work, an extra flag is introduced into the management side of the
work_struct.  This governs auto-release of the structure upon execution.

Ordinarily, the work queue executor would release the work_struct for further
scheduling or deallocation by clearing the pending bit prior to jumping to the
work function.  This means that, unless the driver makes some guarantee itself
that the work_struct won't go away, the work function may not access anything
else in the work_struct or its container lest they be deallocated..  This is a
problem if the auxiliary data is taken away (as done by the last patch).

However, if the pending bit is *not* cleared before jumping to the work
function, then the work function *may* access the work_struct and its container
with no problems.  But then the work function must itself release the
work_struct by calling work_release().

In most cases, automatic release is fine, so this is the default.  Special
initiators exist for the non-auto-release case (ending in _NAR).


Signed-Off-By: David Howells &lt;dhowells@redhat.com&gt;
</content>
</entry>
<entry>
<title>WorkStruct: Separate delayable and non-delayable events.</title>
<updated>2006-11-22T14:54:01Z</updated>
<author>
<name>David Howells</name>
</author>
<published>2006-11-22T14:54:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=52bad64d95bd89e08c49ec5a071fa6dcbe5a1a9c'/>
<id>urn:sha1:52bad64d95bd89e08c49ec5a071fa6dcbe5a1a9c</id>
<content type='text'>
Separate delayable work items from non-delayable work items be splitting them
into a separate structure (delayed_work), which incorporates a work_struct and
the timer_list removed from work_struct.

The work_struct struct is huge, and this limits it's usefulness.  On a 64-bit
architecture it's nearly 100 bytes in size.  This reduces that by half for the
non-delayable type of event.

Signed-Off-By: David Howells &lt;dhowells@redhat.com&gt;
</content>
</entry>
</feed>
