ix(4) relies on link-state change interrupts the update the link state via if_link_state_change(). However, after ixgbe_stop() all interrupts for the device are disabled and there won't be any IXGBE_EICR_LSC interrupt.
Simple solution: manually update link state after ixgbe_stop(). Gerhard --- sys/dev/pci/if_ix.c 2020/07/18 07:18:22 1.172 +++ sys/dev/pci/if_ix.c 2020/10/12 09:13:59 @@ -1606,6 +1606,8 @@ ixgbe_stop(void *arg) /* Should we really clear all structures on stop? */ ixgbe_free_transmit_structures(sc); ixgbe_free_receive_structures(sc); + + ixgbe_update_link_status(sc); }