<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/net/forcedeth.c, branch v2.6.25</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>forcedeth: mac address fix</title>
<updated>2008-04-12T08:38:12+00:00</updated>
<author>
<name>Ayaz Abdulla</name>
<email>aabdulla@nvidia.com</email>
</author>
<published>2008-04-11T04:30:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a376e79c6079c2ba6c5fadb0e85a3bb7e465ad89'/>
<id>a376e79c6079c2ba6c5fadb0e85a3bb7e465ad89</id>
<content type='text'>
This critical patch fixes a mac address issue recently introduced.  If the
device's mac address was in correct order and the flag
NVREG_TRANSMITPOLL_MAC_ADDR_REV was set, during nv_remove the flag would get
cleared.  During next load, the mac address would get reversed because the
flag is missing.

As it has been indicated previously, the flag is cleared across a low power
transition.  Therefore, the driver should set the mac address back into the
reversed order when clearing the flag.

Also, the driver should set back the flag after a low power transition to
protect against kexec command calling nv_probe a second time.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.com&gt;
Cc: "Yinghai Lu" &lt;yhlu.kernel@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Jeff Garzik &lt;jgarzik@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This critical patch fixes a mac address issue recently introduced.  If the
device's mac address was in correct order and the flag
NVREG_TRANSMITPOLL_MAC_ADDR_REV was set, during nv_remove the flag would get
cleared.  During next load, the mac address would get reversed because the
flag is missing.

As it has been indicated previously, the flag is cleared across a low power
transition.  Therefore, the driver should set the mac address back into the
reversed order when clearing the flag.

Also, the driver should set back the flag after a low power transition to
protect against kexec command calling nv_probe a second time.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.com&gt;
Cc: "Yinghai Lu" &lt;yhlu.kernel@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Jeff Garzik &lt;jgarzik@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>fix endian lossage in forcedeth</title>
<updated>2008-04-04T21:26:16+00:00</updated>
<author>
<name>Al Viro</name>
<email>viro@ZenIV.linux.org.uk</email>
</author>
<published>2008-03-26T05:57:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=30ecce908b944079181938e61ddbc00c8b23798c'/>
<id>30ecce908b944079181938e61ddbc00c8b23798c</id>
<content type='text'>
a) if you initialize something with le32_to_cpu(...), then |= it
with host-endian and feed to cpu_to_le32(), it's most definitely
*not* __le32.  As sparse would've told you...

b) the whole sequence is |= cpu_to_le32(host-endian constant)

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
a) if you initialize something with le32_to_cpu(...), then |= it
with host-endian and feed to cpu_to_le32(), it's most definitely
*not* __le32.  As sparse would've told you...

b) the whole sequence is |= cpu_to_le32(host-endian constant)

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>forcedeth: fix locking bug with netconsole</title>
<updated>2008-03-29T02:08:02+00:00</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@elte.hu</email>
</author>
<published>2008-03-28T21:41:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=bd6ca6375b9f18f40e814f391d9d1abaa916bc72'/>
<id>bd6ca6375b9f18f40e814f391d9d1abaa916bc72</id>
<content type='text'>
While using netconsole on forcedeth, lockdep noticed the following locking
bug:

=================================
[ INFO: inconsistent lock state ]
2.6.24-rc6 #6
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
---------------------------------
inconsistent {softirq-on-W} -&gt; {in-softirq-W} usage.
udevd/719 [HC0[0]:SC1[1]:HE1:SE0] takes:
 (_xmit_ETHER){-+..}, at: [&lt;c043062e&gt;] dev_watchdog+0x1c/0xb9
{softirq-on-W} state was registered at:
  [&lt;c0147f67&gt;] mark_held_locks+0x4e/0x66
  [&lt;c014810e&gt;] trace_hardirqs_on+0xfe/0x136
  [&lt;c048ae63&gt;] _spin_unlock_irq+0x22/0x42
  [&lt;c02ec617&gt;] nv_start_xmit_optimized+0x347/0x37a
  [&lt;c042c80d&gt;] netpoll_send_skb+0xa4/0x147
  [&lt;c042d4a6&gt;] netpoll_send_udp+0x238/0x242
  [&lt;c02f44f6&gt;] write_msg+0x6d/0x9b
  [&lt;c012c129&gt;] __call_console_drivers+0x4e/0x5a
  [&lt;c012c18c&gt;] _call_console_drivers+0x57/0x5b
  [&lt;c012c2dd&gt;] release_console_sem+0x11c/0x1b9
  [&lt;c012caeb&gt;] register_console+0x1eb/0x1f3
  [&lt;c06ae673&gt;] init_netconsole+0x119/0x15f
  [&lt;c069149b&gt;] kernel_init+0x147/0x294
  [&lt;c01058cb&gt;] kernel_thread_helper+0x7/0x10
  [&lt;ffffffff&gt;] 0xffffffff
irq event stamp: 950
hardirqs last  enabled at (950): [&lt;c048ae63&gt;] _spin_unlock_irq+0x22/0x42
hardirqs last disabled at (949): [&lt;c048aaf7&gt;] _spin_lock_irq+0xc/0x38
softirqs last  enabled at (0): [&lt;c012a29c&gt;] copy_process+0x375/0x126d
softirqs last disabled at (947): [&lt;c0106d43&gt;] do_softirq+0x61/0xc6

other info that might help us debug this:
no locks held by udevd/719.

stack backtrace:
Pid: 719, comm: udevd Not tainted 2.6.24-rc6 #6
 [&lt;c0105c46&gt;] show_trace_log_lvl+0x12/0x25
 [&lt;c01063ec&gt;] show_trace+0xd/0x10
 [&lt;c010670c&gt;] dump_stack+0x57/0x5f
 [&lt;c0147505&gt;] print_usage_bug+0x10a/0x117
 [&lt;c0147c38&gt;] mark_lock+0x121/0x402
 [&lt;c01488b6&gt;] __lock_acquire+0x3d1/0xb64
 [&lt;c0149405&gt;] lock_acquire+0x4e/0x6a
 [&lt;c048a99b&gt;] _spin_lock+0x23/0x32
 [&lt;c043062e&gt;] dev_watchdog+0x1c/0xb9
 [&lt;c0133e4a&gt;] run_timer_softirq+0x133/0x193
 [&lt;c0130907&gt;] __do_softirq+0x78/0xed
 [&lt;c0106d43&gt;] do_softirq+0x61/0xc6
 =======================
eth1: link down

The fix is to disable/restore irqs instead of disable/enable.

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Ayaz Abdulla &lt;aabdulla@nvidia.com&gt;
Cc: Jeff Garzik &lt;jeff@garzik.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While using netconsole on forcedeth, lockdep noticed the following locking
bug:

=================================
[ INFO: inconsistent lock state ]
2.6.24-rc6 #6
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
---------------------------------
inconsistent {softirq-on-W} -&gt; {in-softirq-W} usage.
udevd/719 [HC0[0]:SC1[1]:HE1:SE0] takes:
 (_xmit_ETHER){-+..}, at: [&lt;c043062e&gt;] dev_watchdog+0x1c/0xb9
{softirq-on-W} state was registered at:
  [&lt;c0147f67&gt;] mark_held_locks+0x4e/0x66
  [&lt;c014810e&gt;] trace_hardirqs_on+0xfe/0x136
  [&lt;c048ae63&gt;] _spin_unlock_irq+0x22/0x42
  [&lt;c02ec617&gt;] nv_start_xmit_optimized+0x347/0x37a
  [&lt;c042c80d&gt;] netpoll_send_skb+0xa4/0x147
  [&lt;c042d4a6&gt;] netpoll_send_udp+0x238/0x242
  [&lt;c02f44f6&gt;] write_msg+0x6d/0x9b
  [&lt;c012c129&gt;] __call_console_drivers+0x4e/0x5a
  [&lt;c012c18c&gt;] _call_console_drivers+0x57/0x5b
  [&lt;c012c2dd&gt;] release_console_sem+0x11c/0x1b9
  [&lt;c012caeb&gt;] register_console+0x1eb/0x1f3
  [&lt;c06ae673&gt;] init_netconsole+0x119/0x15f
  [&lt;c069149b&gt;] kernel_init+0x147/0x294
  [&lt;c01058cb&gt;] kernel_thread_helper+0x7/0x10
  [&lt;ffffffff&gt;] 0xffffffff
irq event stamp: 950
hardirqs last  enabled at (950): [&lt;c048ae63&gt;] _spin_unlock_irq+0x22/0x42
hardirqs last disabled at (949): [&lt;c048aaf7&gt;] _spin_lock_irq+0xc/0x38
softirqs last  enabled at (0): [&lt;c012a29c&gt;] copy_process+0x375/0x126d
softirqs last disabled at (947): [&lt;c0106d43&gt;] do_softirq+0x61/0xc6

other info that might help us debug this:
no locks held by udevd/719.

stack backtrace:
Pid: 719, comm: udevd Not tainted 2.6.24-rc6 #6
 [&lt;c0105c46&gt;] show_trace_log_lvl+0x12/0x25
 [&lt;c01063ec&gt;] show_trace+0xd/0x10
 [&lt;c010670c&gt;] dump_stack+0x57/0x5f
 [&lt;c0147505&gt;] print_usage_bug+0x10a/0x117
 [&lt;c0147c38&gt;] mark_lock+0x121/0x402
 [&lt;c01488b6&gt;] __lock_acquire+0x3d1/0xb64
 [&lt;c0149405&gt;] lock_acquire+0x4e/0x6a
 [&lt;c048a99b&gt;] _spin_lock+0x23/0x32
 [&lt;c043062e&gt;] dev_watchdog+0x1c/0xb9
 [&lt;c0133e4a&gt;] run_timer_softirq+0x133/0x193
 [&lt;c0130907&gt;] __do_softirq+0x78/0xed
 [&lt;c0106d43&gt;] do_softirq+0x61/0xc6
 =======================
eth1: link down

The fix is to disable/restore irqs instead of disable/enable.

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Ayaz Abdulla &lt;aabdulla@nvidia.com&gt;
Cc: Jeff Garzik &lt;jeff@garzik.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>forcedeth: limit tx to 16</title>
<updated>2008-03-17T12:11:07+00:00</updated>
<author>
<name>Ayaz Abdulla</name>
<email>aabdulla@nvidia.com</email>
</author>
<published>2008-03-10T19:58:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=3b446c3e1592287dae117e03e61af0aa09adba6f'/>
<id>3b446c3e1592287dae117e03e61af0aa09adba6f</id>
<content type='text'>
This is a critical patch which adds a workaround for a HW bug. The patch
will limit the number of outstanding tx packets to 16. Otherwise, the HW
could send out packets with bad checksums.

The driver will still setup the tx packets into the ring, however, will
only set the Valid bit on 16 packets at a time.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.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>
This is a critical patch which adds a workaround for a HW bug. The patch
will limit the number of outstanding tx packets to 16. Otherwise, the HW
could send out packets with bad checksums.

The driver will still setup the tx packets into the ring, however, will
only set the Valid bit on 16 packets at a time.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>forcedeth: tx pause watermarks</title>
<updated>2008-02-11T16:13:47+00:00</updated>
<author>
<name>Ayaz Abdulla</name>
<email>aabdulla@nvidia.com</email>
</author>
<published>2008-02-05T17:30:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=5289b4c41f5abeff92c4e1d0fabfca17c83d3c7c'/>
<id>5289b4c41f5abeff92c4e1d0fabfca17c83d3c7c</id>
<content type='text'>
New chipsets introduced variant Rx FIFO sizes that need to be taken into
account when setting up the tx pause watermarks. This patch introduces
the new device feature flags based on a version and implements the new
watermarks.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.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>
New chipsets introduced variant Rx FIFO sizes that need to be taken into
account when setting up the tx pause watermarks. This patch introduces
the new device feature flags based on a version and implements the new
watermarks.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>forcedeth: tx collision fix</title>
<updated>2008-02-11T16:13:43+00:00</updated>
<author>
<name>Ayaz Abdulla</name>
<email>aabdulla@nvidia.com</email>
</author>
<published>2008-02-05T17:29:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=fd9b558c62bcd4a4f6f9d1740e836d7f5f0f5da5'/>
<id>fd9b558c62bcd4a4f6f9d1740e836d7f5f0f5da5</id>
<content type='text'>
This patch supports a new fix in hardware regarding tx collisions. In
the cases where we are in autoneg mode and the link partner is in forced
mode, we need to setup the tx deferral register differently in order to
reduce collisions on the wire.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.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>
This patch supports a new fix in hardware regarding tx collisions. In
the cases where we are in autoneg mode and the link partner is in forced
mode, we need to setup the tx deferral register differently in order to
reduce collisions on the wire.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>forcedeth: preserve registers</title>
<updated>2008-02-06T11:42:02+00:00</updated>
<author>
<name>Ayaz Abdulla</name>
<email>aabdulla@nvidia.com</email>
</author>
<published>2008-02-04T20:14:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=4e84f9b10461ad3c869ced4373dd85771dd67d20'/>
<id>4e84f9b10461ad3c869ced4373dd85771dd67d20</id>
<content type='text'>
Various registers need to be preserved before resetting the device.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.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>
Various registers need to be preserved before resetting the device.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>forcedeth: phy status fix</title>
<updated>2008-02-06T11:41:45+00:00</updated>
<author>
<name>Ayaz Abdulla</name>
<email>aabdulla@nvidia.com</email>
</author>
<published>2008-02-04T20:14:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=eb79842838b6a3860d70be404fbb6e3b8f2a65de'/>
<id>eb79842838b6a3860d70be404fbb6e3b8f2a65de</id>
<content type='text'>
The driver needs to ack only the phy status bits that it is currently
handling and preserve the other bits for the other handlers. For
example, when reading/writing from the phy, it should not clear the link
change interrupt bit. This will cause a missing link change interrupt.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.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>
The driver needs to ack only the phy status bits that it is currently
handling and preserve the other bits for the other handlers. For
example, when reading/writing from the phy, it should not clear the link
change interrupt bit. This will cause a missing link change interrupt.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>forcedeth: restart tx/rx</title>
<updated>2008-02-06T11:41:14+00:00</updated>
<author>
<name>Ayaz Abdulla</name>
<email>aabdulla@nvidia.com</email>
</author>
<published>2008-02-04T20:13:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b2976d23a15aac11e8e77a496108b9f4040fac4d'/>
<id>b2976d23a15aac11e8e77a496108b9f4040fac4d</id>
<content type='text'>
This patch fixes the issue where the transmitter and receiver must be
restarted when applying new changes to certain registers.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.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>
This patch fixes the issue where the transmitter and receiver must be
restarted when applying new changes to certain registers.

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>forcedeth: mac address mcp77/79</title>
<updated>2008-02-03T12:28:40+00:00</updated>
<author>
<name>Ayaz Abdulla</name>
<email>aabdulla@nvidia.com</email>
</author>
<published>2008-01-28T15:24:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=2b91213064bd882c3adf35f028c6d12fab3269ec'/>
<id>2b91213064bd882c3adf35f028c6d12fab3269ec</id>
<content type='text'>
This patch is a critical fix for MCP77 and MCP79 devices. The feature
flags were missing the define for correct mac address
(DEV_HAS_CORRECT_MACADDR).

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&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>
This patch is a critical fix for MCP77 and MCP79 devices. The feature
flags were missing the define for correct mac address
(DEV_HAS_CORRECT_MACADDR).

Signed-off-by: Ayaz Abdulla &lt;aabdulla@nvidia.com&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
