diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/benet/be_cmds.c | 1 | ||||
-rw-r--r-- | drivers/net/ixgbe/ixgbe_82598.c | 22 | ||||
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 4 |
3 files changed, 27 insertions, 0 deletions
diff --git a/drivers/net/benet/be_cmds.c b/drivers/net/benet/be_cmds.c index 3397ee327e1f..477f82bc647e 100644 --- a/drivers/net/benet/be_cmds.c +++ b/drivers/net/benet/be_cmds.c | |||
@@ -308,6 +308,7 @@ static void be_cmd_hdr_prepare(struct be_cmd_req_hdr *req_hdr, | |||
308 | req_hdr->opcode = opcode; | 308 | req_hdr->opcode = opcode; |
309 | req_hdr->subsystem = subsystem; | 309 | req_hdr->subsystem = subsystem; |
310 | req_hdr->request_length = cpu_to_le32(cmd_len - sizeof(*req_hdr)); | 310 | req_hdr->request_length = cpu_to_le32(cmd_len - sizeof(*req_hdr)); |
311 | req_hdr->version = 0; | ||
311 | } | 312 | } |
312 | 313 | ||
313 | static void be_cmd_page_addrs_prepare(struct phys_addr *pages, u32 max_pages, | 314 | static void be_cmd_page_addrs_prepare(struct phys_addr *pages, u32 max_pages, |
diff --git a/drivers/net/ixgbe/ixgbe_82598.c b/drivers/net/ixgbe/ixgbe_82598.c index 3103f4165311..35a06b47587b 100644 --- a/drivers/net/ixgbe/ixgbe_82598.c +++ b/drivers/net/ixgbe/ixgbe_82598.c | |||
@@ -357,12 +357,34 @@ static s32 ixgbe_fc_enable_82598(struct ixgbe_hw *hw, s32 packetbuf_num) | |||
357 | u32 fctrl_reg; | 357 | u32 fctrl_reg; |
358 | u32 rmcs_reg; | 358 | u32 rmcs_reg; |
359 | u32 reg; | 359 | u32 reg; |
360 | u32 link_speed = 0; | ||
361 | bool link_up; | ||
360 | 362 | ||
361 | #ifdef CONFIG_DCB | 363 | #ifdef CONFIG_DCB |
362 | if (hw->fc.requested_mode == ixgbe_fc_pfc) | 364 | if (hw->fc.requested_mode == ixgbe_fc_pfc) |
363 | goto out; | 365 | goto out; |
364 | 366 | ||
365 | #endif /* CONFIG_DCB */ | 367 | #endif /* CONFIG_DCB */ |
368 | /* | ||
369 | * On 82598 having Rx FC on causes resets while doing 1G | ||
370 | * so if it's on turn it off once we know link_speed. For | ||
371 | * more details see 82598 Specification update. | ||
372 | */ | ||
373 | hw->mac.ops.check_link(hw, &link_speed, &link_up, false); | ||
374 | if (link_up && link_speed == IXGBE_LINK_SPEED_1GB_FULL) { | ||
375 | switch (hw->fc.requested_mode) { | ||
376 | case ixgbe_fc_full: | ||
377 | hw->fc.requested_mode = ixgbe_fc_tx_pause; | ||
378 | break; | ||
379 | case ixgbe_fc_rx_pause: | ||
380 | hw->fc.requested_mode = ixgbe_fc_none; | ||
381 | break; | ||
382 | default: | ||
383 | /* no change */ | ||
384 | break; | ||
385 | } | ||
386 | } | ||
387 | |||
366 | /* Negotiate the fc mode to use */ | 388 | /* Negotiate the fc mode to use */ |
367 | ret_val = ixgbe_fc_autoneg(hw); | 389 | ret_val = ixgbe_fc_autoneg(hw); |
368 | if (ret_val) | 390 | if (ret_val) |
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 0792f151de99..43a8de3dc4d6 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -6088,6 +6088,10 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev, | |||
6088 | if (err) | 6088 | if (err) |
6089 | goto err_sw_init; | 6089 | goto err_sw_init; |
6090 | 6090 | ||
6091 | /* Make it possible the adapter to be woken up via WOL */ | ||
6092 | if (adapter->hw.mac.type == ixgbe_mac_82599EB) | ||
6093 | IXGBE_WRITE_REG(&adapter->hw, IXGBE_WUS, ~0); | ||
6094 | |||
6091 | /* | 6095 | /* |
6092 | * If there is a fan on this device and it has failed log the | 6096 | * If there is a fan on this device and it has failed log the |
6093 | * failure. | 6097 | * failure. |