diff options
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); | 
