| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | /* $NetBSD: ixgbe.c,v 1.249 2020/08/31 06:20:06 msaitoh Exp $ */ | | 1 | /* $NetBSD: ixgbe.c,v 1.250 2020/08/31 06:23:19 msaitoh Exp $ */ |
2 | | | 2 | |
3 | /****************************************************************************** | | 3 | /****************************************************************************** |
4 | | | 4 | |
5 | Copyright (c) 2001-2017, Intel Corporation | | 5 | Copyright (c) 2001-2017, Intel Corporation |
6 | All rights reserved. | | 6 | All rights reserved. |
7 | | | 7 | |
8 | Redistribution and use in source and binary forms, with or without | | 8 | Redistribution and use in source and binary forms, with or without |
9 | modification, are permitted provided that the following conditions are met: | | 9 | modification, are permitted provided that the following conditions are met: |
10 | | | 10 | |
11 | 1. Redistributions of source code must retain the above copyright notice, | | 11 | 1. Redistributions of source code must retain the above copyright notice, |
12 | this list of conditions and the following disclaimer. | | 12 | this list of conditions and the following disclaimer. |
13 | | | 13 | |
14 | 2. Redistributions in binary form must reproduce the above copyright | | 14 | 2. Redistributions in binary form must reproduce the above copyright |
| @@ -4501,27 +4501,27 @@ ixgbe_handle_timer(struct work *wk, void | | | @@ -4501,27 +4501,27 @@ ixgbe_handle_timer(struct work *wk, void |
4501 | u64 v0, v1, v2, v3, v4, v5, v6, v7; | | 4501 | u64 v0, v1, v2, v3, v4, v5, v6, v7; |
4502 | int hung = 0; | | 4502 | int hung = 0; |
4503 | int i; | | 4503 | int i; |
4504 | | | 4504 | |
4505 | IXGBE_CORE_LOCK(adapter); | | 4505 | IXGBE_CORE_LOCK(adapter); |
4506 | | | 4506 | |
4507 | /* Check for pluggable optics */ | | 4507 | /* Check for pluggable optics */ |
4508 | if (ixgbe_is_sfp(hw)) { | | 4508 | if (ixgbe_is_sfp(hw)) { |
4509 | bool sched_mod_task = false; | | 4509 | bool sched_mod_task = false; |
4510 | | | 4510 | |
4511 | if (hw->mac.type == ixgbe_mac_82598EB) { | | 4511 | if (hw->mac.type == ixgbe_mac_82598EB) { |
4512 | /* | | 4512 | /* |
4513 | * On 82598EB, SFP+'s MOD_ABS pin is not connected to | | 4513 | * On 82598EB, SFP+'s MOD_ABS pin is not connected to |
4514 | * any GPIP(SDP). So just schedule TASK_MOD. | | 4514 | * any GPIO(SDP). So just schedule TASK_MOD. |
4515 | */ | | 4515 | */ |
4516 | sched_mod_task = true; | | 4516 | sched_mod_task = true; |
4517 | } else { | | 4517 | } else { |
4518 | bool was_full, is_full; | | 4518 | bool was_full, is_full; |
4519 | | | 4519 | |
4520 | was_full = | | 4520 | was_full = |
4521 | hw->phy.sfp_type != ixgbe_sfp_type_not_present; | | 4521 | hw->phy.sfp_type != ixgbe_sfp_type_not_present; |
4522 | is_full = ixgbe_sfp_cage_full(adapter); | | 4522 | is_full = ixgbe_sfp_cage_full(adapter); |
4523 | | | 4523 | |
4524 | /* Do probe if cage state changed */ | | 4524 | /* Do probe if cage state changed */ |
4525 | if (was_full ^ is_full) | | 4525 | if (was_full ^ is_full) |
4526 | sched_mod_task = true; | | 4526 | sched_mod_task = true; |
4527 | } | | 4527 | } |
| @@ -4767,27 +4767,27 @@ out: | | | @@ -4767,27 +4767,27 @@ out: |
4767 | /* get_supported_phy_layer will call hw->phy.ops.identify_sfp() */ | | 4767 | /* get_supported_phy_layer will call hw->phy.ops.identify_sfp() */ |
4768 | adapter->phy_layer = ixgbe_get_supported_physical_layer(hw); | | 4768 | adapter->phy_layer = ixgbe_get_supported_physical_layer(hw); |
4769 | | | 4769 | |
4770 | /* Adjust media types shown in ifconfig */ | | 4770 | /* Adjust media types shown in ifconfig */ |
4771 | IXGBE_CORE_UNLOCK(adapter); | | 4771 | IXGBE_CORE_UNLOCK(adapter); |
4772 | ifmedia_removeall(&adapter->media); | | 4772 | ifmedia_removeall(&adapter->media); |
4773 | ixgbe_add_media_types(adapter); | | 4773 | ixgbe_add_media_types(adapter); |
4774 | ifmedia_set(&adapter->media, IFM_ETHER | IFM_AUTO); | | 4774 | ifmedia_set(&adapter->media, IFM_ETHER | IFM_AUTO); |
4775 | IXGBE_CORE_LOCK(adapter); | | 4775 | IXGBE_CORE_LOCK(adapter); |
4776 | | | 4776 | |
4777 | /* | | 4777 | /* |
4778 | * Don't shedule MSF event if the chip is 82598. 82598 doesn't support | | 4778 | * Don't shedule MSF event if the chip is 82598. 82598 doesn't support |
4779 | * MSF. At least, calling ixgbe_handle_msf on 82598 DA makes the link | | 4779 | * MSF. At least, calling ixgbe_handle_msf on 82598 DA makes the link |
4780 | * flap because the function call setup_link(). | | 4780 | * flap because the function calls setup_link(). |
4781 | */ | | 4781 | */ |
4782 | if (hw->mac.type != ixgbe_mac_82598EB) | | 4782 | if (hw->mac.type != ixgbe_mac_82598EB) |
4783 | atomic_or_32(&adapter->task_requests, IXGBE_REQUEST_TASK_MSF); | | 4783 | atomic_or_32(&adapter->task_requests, IXGBE_REQUEST_TASK_MSF); |
4784 | | | 4784 | |
4785 | /* | | 4785 | /* |
4786 | * Don't call ixgbe_schedule_admin_tasklet() because we are on | | 4786 | * Don't call ixgbe_schedule_admin_tasklet() because we are on |
4787 | * the workqueue now. | | 4787 | * the workqueue now. |
4788 | */ | | 4788 | */ |
4789 | } /* ixgbe_handle_mod */ | | 4789 | } /* ixgbe_handle_mod */ |
4790 | | | 4790 | |
4791 | | | 4791 | |
4792 | /************************************************************************ | | 4792 | /************************************************************************ |
4793 | * ixgbe_handle_msf - Tasklet for MSF (multispeed fiber) interrupts | | 4793 | * ixgbe_handle_msf - Tasklet for MSF (multispeed fiber) interrupts |