hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/net/ethernet/sfc/net_driver.h
....@@ -627,12 +627,54 @@
627627 #define EFX_INT_MODE_USE_MSI(x) (((x)->interrupt_mode) <= EFX_INT_MODE_MSI)
628628
629629 enum nic_state {
630
- STATE_UNINIT = 0, /* device being probed/removed or is frozen */
631
- STATE_READY = 1, /* hardware ready and netdev registered */
632
- STATE_DISABLED = 2, /* device disabled due to hardware errors */
633
- STATE_RECOVERY = 3, /* device recovering from PCI error */
630
+ STATE_UNINIT = 0, /* device being probed/removed */
631
+ STATE_NET_DOWN, /* hardware probed and netdev registered */
632
+ STATE_NET_UP, /* ready for traffic */
633
+ STATE_DISABLED, /* device disabled due to hardware errors */
634
+
635
+ STATE_RECOVERY = 0x100,/* recovering from PCI error */
636
+ STATE_FROZEN = 0x200, /* frozen by power management */
634637 };
635638
639
+static inline bool efx_net_active(enum nic_state state)
640
+{
641
+ return state == STATE_NET_DOWN || state == STATE_NET_UP;
642
+}
643
+
644
+static inline bool efx_frozen(enum nic_state state)
645
+{
646
+ return state & STATE_FROZEN;
647
+}
648
+
649
+static inline bool efx_recovering(enum nic_state state)
650
+{
651
+ return state & STATE_RECOVERY;
652
+}
653
+
654
+static inline enum nic_state efx_freeze(enum nic_state state)
655
+{
656
+ WARN_ON(!efx_net_active(state));
657
+ return state | STATE_FROZEN;
658
+}
659
+
660
+static inline enum nic_state efx_thaw(enum nic_state state)
661
+{
662
+ WARN_ON(!efx_frozen(state));
663
+ return state & ~STATE_FROZEN;
664
+}
665
+
666
+static inline enum nic_state efx_recover(enum nic_state state)
667
+{
668
+ WARN_ON(!efx_net_active(state));
669
+ return state | STATE_RECOVERY;
670
+}
671
+
672
+static inline enum nic_state efx_recovered(enum nic_state state)
673
+{
674
+ WARN_ON(!efx_recovering(state));
675
+ return state & ~STATE_RECOVERY;
676
+}
677
+
636678 /* Forward declaration */
637679 struct efx_nic;
638680