Star64_linux/drivers/net/ethernet/intel
Benjamin Poirier 19110cfbb3 e1000e: Separate signaling for link check/link up
Lennart reported the following race condition:

\ e1000_watchdog_task
    \ e1000e_has_link
        \ hw->mac.ops.check_for_link() === e1000e_check_for_copper_link
            /* link is up */
            mac->get_link_status = false;

                            /* interrupt */
                            \ e1000_msix_other
                                hw->mac.get_link_status = true;

        link_active = !hw->mac.get_link_status
        /* link_active is false, wrongly */

This problem arises because the single flag get_link_status is used to
signal two different states: link status needs checking and link status is
down.

Avoid the problem by using the return value of .check_for_link to signal
the link status to e1000e_has_link().

Reported-by: Lennart Sorensen <lsorense@csclub.uwaterloo.ca>
Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2017-10-10 08:35:01 -07:00
..
e1000
e1000e e1000e: Separate signaling for link check/link up 2017-10-10 08:35:01 -07:00
fm10k fm10k: fix mis-ordered parameters in declaration for .ndo_set_vf_bw 2017-10-03 09:00:04 -07:00
i40e i40e: Avoid some useless variables and initializers in NVM functions 2017-10-09 14:42:17 -07:00
i40evf i40e: Retry AQC GetPhyAbilities to overcome I2CRead hangs 2017-10-09 14:32:18 -07:00
igb igb: support BCM54616 PHY 2017-08-08 18:09:12 -07:00
igbvf igbvf: convert msleep to mdelay in atomic context 2017-08-08 18:08:00 -07:00
ixgb drivers: net: ixgb: use setup_timer() helper. 2017-09-21 11:44:40 -07:00
ixgbe Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-10-09 20:11:09 -07:00
ixgbevf
e100.c e100: Cocci spatch "pool_zalloc-simple" 2017-09-21 15:26:59 -07:00
Kconfig
Makefile