diff options
author | Gary Zambrano <zambrano@broadcom.com> | 2006-04-10 15:02:21 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-04-12 18:04:03 -0400 |
commit | 2b474cf53870abf1bbad631c3368b9efc9b5ba9d (patch) | |
tree | 3dc14351bf455c345c463573c0cd7369e05f5631 /drivers/net/b44.c | |
parent | 4be5de25259de21894df5e2fecc30da8252dee8c (diff) |
[PATCH] b44: disable default tx pause
Disable default tx pause frame support.
The b44 controller has a bug that generates excessive tx pause
frames.
Signed-off-by: Gary Zambrano <zambrano@broadcom.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/b44.c')
-rw-r--r-- | drivers/net/b44.c | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index c4e12b5cbb92..a67d537ccf49 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c | |||
@@ -410,25 +410,18 @@ static void __b44_set_flow_ctrl(struct b44 *bp, u32 pause_flags) | |||
410 | 410 | ||
411 | static void b44_set_flow_ctrl(struct b44 *bp, u32 local, u32 remote) | 411 | static void b44_set_flow_ctrl(struct b44 *bp, u32 local, u32 remote) |
412 | { | 412 | { |
413 | u32 pause_enab = bp->flags & (B44_FLAG_TX_PAUSE | | 413 | u32 pause_enab = 0; |
414 | B44_FLAG_RX_PAUSE); | 414 | |
415 | 415 | /* The driver supports only rx pause by default because | |
416 | if (local & ADVERTISE_PAUSE_CAP) { | 416 | the b44 mac tx pause mechanism generates excessive |
417 | if (local & ADVERTISE_PAUSE_ASYM) { | 417 | pause frames. |
418 | if (remote & LPA_PAUSE_CAP) | 418 | Use ethtool to turn on b44 tx pause if necessary. |
419 | pause_enab |= (B44_FLAG_TX_PAUSE | | 419 | */ |
420 | B44_FLAG_RX_PAUSE); | 420 | if ((local & ADVERTISE_PAUSE_CAP) && |
421 | else if (remote & LPA_PAUSE_ASYM) | 421 | (local & ADVERTISE_PAUSE_ASYM)){ |
422 | pause_enab |= B44_FLAG_RX_PAUSE; | 422 | if ((remote & LPA_PAUSE_ASYM) && |
423 | } else { | 423 | !(remote & LPA_PAUSE_CAP)) |
424 | if (remote & LPA_PAUSE_CAP) | 424 | pause_enab |= B44_FLAG_RX_PAUSE; |
425 | pause_enab |= (B44_FLAG_TX_PAUSE | | ||
426 | B44_FLAG_RX_PAUSE); | ||
427 | } | ||
428 | } else if (local & ADVERTISE_PAUSE_ASYM) { | ||
429 | if ((remote & LPA_PAUSE_CAP) && | ||
430 | (remote & LPA_PAUSE_ASYM)) | ||
431 | pause_enab |= B44_FLAG_TX_PAUSE; | ||
432 | } | 425 | } |
433 | 426 | ||
434 | __b44_set_flow_ctrl(bp, pause_enab); | 427 | __b44_set_flow_ctrl(bp, pause_enab); |