<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/net/e1000, branch v2.6.24</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>[NET]: Fix interrupt semaphore corruption in Intel drivers.</title>
<updated>2008-01-21T04:31:39+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2008-01-18T12:21:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=49d85c502ec5e6d5998c1a04394c5b24e8f7d32d'/>
<id>49d85c502ec5e6d5998c1a04394c5b24e8f7d32d</id>
<content type='text'>
Several of the Intel ethernet drivers keep an atomic counter used to
manage when to actually hit the hardware with a disable or an enable.

The way the net_rx_work() breakout logic works during a pending
napi_disable() is that it simply unschedules the poll even if it
still has work.

This can potentially leave interrupts disabled, but that is OK
because all of the drivers are about to disable interrupts
anyways in all such code paths that do a napi_disable().

Unfortunately, this trips up the semaphore used here in the Intel
drivers.  If you hit this case, when you try to bring the interface
back up it won't enable interrupts.  A reload of the driver module
fixes it of course.

So what we do is make sure all the sequences now go:

	napi_disable();
	atomic_set(&amp;adapter-&gt;irq_sem, 0);
	*_irq_disable();

which makes sure the counter is always in the correct state.

Reported by Robert Olsson.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Several of the Intel ethernet drivers keep an atomic counter used to
manage when to actually hit the hardware with a disable or an enable.

The way the net_rx_work() breakout logic works during a pending
napi_disable() is that it simply unschedules the poll even if it
still has work.

This can potentially leave interrupts disabled, but that is OK
because all of the drivers are about to disable interrupts
anyways in all such code paths that do a napi_disable().

Unfortunately, this trips up the semaphore used here in the Intel
drivers.  If you hit this case, when you try to bring the interface
back up it won't enable interrupts.  A reload of the driver module
fixes it of course.

So what we do is make sure all the sequences now go:

	napi_disable();
	atomic_set(&amp;adapter-&gt;irq_sem, 0);
	*_irq_disable();

which makes sure the counter is always in the correct state.

Reported by Robert Olsson.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[NET]: Fix TX timeout regression in Intel drivers.</title>
<updated>2008-01-17T09:49:29+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2008-01-16T06:43:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d2c7ddd6261eb885091cf6ddbcfae01f4216fb8e'/>
<id>d2c7ddd6261eb885091cf6ddbcfae01f4216fb8e</id>
<content type='text'>
This fixes a regression added by changeset
53e52c729cc169db82a6105fac7a166e10c2ec36 ("[NET]: Make -&gt;poll()
breakout consistent in Intel ethernet drivers.")

As pointed out by Jesse Brandeburg, for three of the drivers edited
above there is breakout logic in the *_clean_tx_irq() code to prevent
running TX reclaim forever.  If this occurs, we have to elide NAPI
poll completion or else those TX events will never be serviced.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Acked-by: Jesse Brandeburg &lt;jesse.brandeburg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes a regression added by changeset
53e52c729cc169db82a6105fac7a166e10c2ec36 ("[NET]: Make -&gt;poll()
breakout consistent in Intel ethernet drivers.")

As pointed out by Jesse Brandeburg, for three of the drivers edited
above there is breakout logic in the *_clean_tx_irq() code to prevent
running TX reclaim forever.  If this occurs, we have to elide NAPI
poll completion or else those TX events will never be serviced.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Acked-by: Jesse Brandeburg &lt;jesse.brandeburg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[NET]: Make -&gt;poll() breakout consistent in Intel ethernet drivers.</title>
<updated>2008-01-09T07:30:14+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2008-01-08T05:06:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=53e52c729cc169db82a6105fac7a166e10c2ec36'/>
<id>53e52c729cc169db82a6105fac7a166e10c2ec36</id>
<content type='text'>
This makes the -&gt;poll() routines of the E100, E1000, E1000E, IXGB, and
IXGBE drivers complete -&gt;poll() consistently.

Now they will all break out when the amount of RX work done is less
than 'budget'.

At a later time, we may want put back code to include the TX work as
well (as at least one other NAPI driver does, but by in large NAPI
drivers do not do this).  But if so, it should be done consistently
across the board to all of these drivers.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Acked-by: Auke Kok &lt;auke-jan.h.kok@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes the -&gt;poll() routines of the E100, E1000, E1000E, IXGB, and
IXGBE drivers complete -&gt;poll() consistently.

Now they will all break out when the amount of RX work done is less
than 'budget'.

At a later time, we may want put back code to include the TX work as
well (as at least one other NAPI driver does, but by in large NAPI
drivers do not do this).  But if so, it should be done consistently
across the board to all of these drivers.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Acked-by: Auke Kok &lt;auke-jan.h.kok@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[NET]: Do not check netif_running() and carrier state in -&gt;poll()</title>
<updated>2008-01-09T07:30:09+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2008-01-08T04:48:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=4ec2411980d0fd2995e8dea8a06fe57aa47523cb'/>
<id>4ec2411980d0fd2995e8dea8a06fe57aa47523cb</id>
<content type='text'>
Drivers do this to try to break out of the -&gt;poll()'ing loop
when the device is being brought administratively down.

Now that we have a napi_disable() "pending" state we are going
to solve that problem generically.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Drivers do this to try to break out of the -&gt;poll()'ing loop
when the device is being brought administratively down.

Now that we have a napi_disable() "pending" state we are going
to solve that problem generically.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>e1000: fix memcpy in e1000_get_strings</title>
<updated>2007-12-07T20:01:43+00:00</updated>
<author>
<name>Roel Kluin</name>
<email>12o3l@tiscali.nl</email>
</author>
<published>2007-12-05T19:57:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=c32bc6e9b0778c891f7f3b97cd05c8cdf98b6721'/>
<id>c32bc6e9b0778c891f7f3b97cd05c8cdf98b6721</id>
<content type='text'>
drivers/net/e1000/e1000_ethtool.c:113:
#define E1000_TEST_LEN sizeof(e1000_gstrings_test) / ETH_GSTRING_LEN

drivers/net/e1000e/ethtool.c:106:
#define E1000_TEST_LEN sizeof(e1000_gstrings_test) / ETH_GSTRING_LEN

E1000_TEST_LEN*ETH_GSTRING_LEN will expand to
sizeof(e1000_gstrings_test) / (ETH_GSTRING_LEN * ETH_GSTRING_LEN)

A lack of parentheses around defines causes unexpected results due to
operator precedences.

Signed-off-by: Roel Kluin &lt;12o3l@tiscali.nl&gt;
Signed-off-by: Auke Kok &lt;auke-jan.h.kok@intel.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
drivers/net/e1000/e1000_ethtool.c:113:
#define E1000_TEST_LEN sizeof(e1000_gstrings_test) / ETH_GSTRING_LEN

drivers/net/e1000e/ethtool.c:106:
#define E1000_TEST_LEN sizeof(e1000_gstrings_test) / ETH_GSTRING_LEN

E1000_TEST_LEN*ETH_GSTRING_LEN will expand to
sizeof(e1000_gstrings_test) / (ETH_GSTRING_LEN * ETH_GSTRING_LEN)

A lack of parentheses around defines causes unexpected results due to
operator precedences.

Signed-off-by: Roel Kluin &lt;12o3l@tiscali.nl&gt;
Signed-off-by: Auke Kok &lt;auke-jan.h.kok@intel.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>e1000: Fix NAPI state bug when Rx complete</title>
<updated>2007-12-01T21:32:32+00:00</updated>
<author>
<name>Auke Kok</name>
<email>auke-jan.h.kok@intel.com</email>
</author>
<published>2007-11-28T00:26:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f7bbb9098315d712351aba7861a8c9fcf6bf0213'/>
<id>f7bbb9098315d712351aba7861a8c9fcf6bf0213</id>
<content type='text'>
Don't exit polling when we have not yet used our budget, this causes
the NAPI system to end up with a messed up poll list.

Signed-off-by: Auke Kok &lt;auke-jan.h.kok@intel.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Don't exit polling when we have not yet used our budget, this causes
the NAPI system to end up with a messed up poll list.

Signed-off-by: Auke Kok &lt;auke-jan.h.kok@intel.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[E1000]: Fix schedule while atomic when called from mii-tool.</title>
<updated>2007-11-14T05:00:09+00:00</updated>
<author>
<name>Jesse Brandeburg</name>
<email>jesse.brandeburg@intel.com</email>
</author>
<published>2007-11-14T05:00:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f0163ac45b40bd032b877c747796146d52d4e800'/>
<id>f0163ac45b40bd032b877c747796146d52d4e800</id>
<content type='text'>
mii-tool can cause the driver to call msleep during nway reset,
bugzilla.kernel.org bug 8430.  Fix by simply calling reinit_locked
outside of the spinlock, which is safe from ethtool, so it should be
safe from here.

Signed-off-by: Jesse Brandeburg &lt;jesse.brandeburg@intel.com&gt;
Signed-off-by: Auke Kok &lt;auke-jan.h.kok@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
mii-tool can cause the driver to call msleep during nway reset,
bugzilla.kernel.org bug 8430.  Fix by simply calling reinit_locked
outside of the spinlock, which is safe from ethtool, so it should be
safe from here.

Signed-off-by: Jesse Brandeburg &lt;jesse.brandeburg@intel.com&gt;
Signed-off-by: Auke Kok &lt;auke-jan.h.kok@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>e1000: sparse warnings fixes</title>
<updated>2007-10-30T18:32:17+00:00</updated>
<author>
<name>Stephen Hemminger</name>
<email>shemminger@linux-foundation.org</email>
</author>
<published>2007-10-29T17:46:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=abec42a4f87795766f77e4595b7e540b5fc60e3f'/>
<id>abec42a4f87795766f77e4595b7e540b5fc60e3f</id>
<content type='text'>
Fix sparse warnings and problems from e1000 driver.

Added a sparse fix for the module param array index
-- Auke

Signed-off-by: Stephen Hemminger &lt;shemminger@linux-foundation.org&gt;
Signed-off-by: Auke Kok &lt;auke-jan.h.kok@intel.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix sparse warnings and problems from e1000 driver.

Added a sparse fix for the module param array index
-- Auke

Signed-off-by: Stephen Hemminger &lt;shemminger@linux-foundation.org&gt;
Signed-off-by: Auke Kok &lt;auke-jan.h.kok@intel.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>fix typo about TBI in e1000 comment</title>
<updated>2007-10-20T01:06:37+00:00</updated>
<author>
<name>Masatake YAMATO</name>
<email>jet@gyve.org</email>
</author>
<published>2007-10-20T01:06:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=828d055fd00fe5cd2186fbb599c6f64e53c6706d'/>
<id>828d055fd00fe5cd2186fbb599c6f64e53c6706d</id>
<content type='text'>
Signed-off-by: Masatake YAMATO &lt;jet@gyve.org&gt;
Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Masatake YAMATO &lt;jet@gyve.org&gt;
Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>e1000: Simple optimizations in e1000_xmit_frame</title>
<updated>2007-10-10T23:55:24+00:00</updated>
<author>
<name>Krishna Kumar</name>
<email>krkumar2@in.ibm.com</email>
</author>
<published>2007-10-05T21:15:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=6d1e3aa7bd47faacc08fdda8f58896bfd13ad90a'/>
<id>6d1e3aa7bd47faacc08fdda8f58896bfd13ad90a</id>
<content type='text'>
Some simple optimizations in e1000_xmit_frame.

Signed-off-by: Krishna Kumar &lt;krkumar2@in.ibm.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Some simple optimizations in e1000_xmit_frame.

Signed-off-by: Krishna Kumar &lt;krkumar2@in.ibm.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
