mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 06:01:57 +00:00
wifi: mac80211: inform the low level if drv_stop() is a suspend
This will allow the low level driver to take different actions for different flows. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20240618192529.739036208b6e.Ie18a2fe8e02bf2717549d39420b350cfdaf3d317@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
5036eaffed
commit
1decf05d0f
@ -1550,7 +1550,7 @@ fail:
|
||||
return retval;
|
||||
}
|
||||
|
||||
static void adm8211_stop(struct ieee80211_hw *dev)
|
||||
static void adm8211_stop(struct ieee80211_hw *dev, bool suspend)
|
||||
{
|
||||
struct adm8211_priv *priv = dev->priv;
|
||||
|
||||
|
@ -1061,7 +1061,7 @@ err:
|
||||
return error;
|
||||
}
|
||||
|
||||
static void ar5523_stop(struct ieee80211_hw *hw)
|
||||
static void ar5523_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct ar5523 *ar = hw->priv;
|
||||
|
||||
|
@ -5363,7 +5363,7 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void ath10k_stop(struct ieee80211_hw *hw)
|
||||
static void ath10k_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct ath10k *ar = hw->priv;
|
||||
u32 opt;
|
||||
|
@ -6278,7 +6278,7 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void ath11k_mac_op_stop(struct ieee80211_hw *hw)
|
||||
static void ath11k_mac_op_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct ath11k *ar = hw->priv;
|
||||
struct htt_ppdu_stats_info *ppdu_stats, *tmp;
|
||||
|
@ -6112,7 +6112,7 @@ static void ath12k_mac_stop(struct ath12k *ar)
|
||||
atomic_set(&ar->num_pending_mgmt_tx, 0);
|
||||
}
|
||||
|
||||
static void ath12k_mac_op_stop(struct ieee80211_hw *hw)
|
||||
static void ath12k_mac_op_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct ath12k_hw *ah = ath12k_hw_to_ah(hw);
|
||||
struct ath12k *ar;
|
||||
|
@ -2847,7 +2847,7 @@ static void ath5k_stop_tasklets(struct ath5k_hw *ah)
|
||||
* if another thread does a system call and the thread doing the
|
||||
* stop is preempted).
|
||||
*/
|
||||
void ath5k_stop(struct ieee80211_hw *hw)
|
||||
void ath5k_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct ath5k_hw *ah = hw->priv;
|
||||
int ret;
|
||||
|
@ -92,7 +92,7 @@ void ath5k_vif_iter(void *data, u8 *mac, struct ieee80211_vif *vif);
|
||||
bool ath5k_any_vif_assoc(struct ath5k_hw *ah);
|
||||
|
||||
int ath5k_start(struct ieee80211_hw *hw);
|
||||
void ath5k_stop(struct ieee80211_hw *hw);
|
||||
void ath5k_stop(struct ieee80211_hw *hw, bool suspend);
|
||||
|
||||
void ath5k_beacon_update_timers(struct ath5k_hw *ah, u64 bc_tsf);
|
||||
int ath5k_beacon_update(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
|
||||
|
@ -973,7 +973,7 @@ static int ath9k_htc_start(struct ieee80211_hw *hw)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void ath9k_htc_stop(struct ieee80211_hw *hw)
|
||||
static void ath9k_htc_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct ath9k_htc_priv *priv = hw->priv;
|
||||
struct ath_hw *ah = priv->ah;
|
||||
|
@ -895,7 +895,7 @@ static void ath9k_pending_key_del(struct ath_softc *sc, u8 keyix)
|
||||
ath_key_delete(common, keyix);
|
||||
}
|
||||
|
||||
static void ath9k_stop(struct ieee80211_hw *hw)
|
||||
static void ath9k_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct ath_softc *sc = hw->priv;
|
||||
struct ath_hw *ah = sc->sc_ah;
|
||||
|
@ -439,7 +439,7 @@ static void carl9170_cancel_worker(struct ar9170 *ar)
|
||||
cancel_work_sync(&ar->ampdu_work);
|
||||
}
|
||||
|
||||
static void carl9170_op_stop(struct ieee80211_hw *hw)
|
||||
static void carl9170_op_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct ar9170 *ar = hw->priv;
|
||||
|
||||
|
@ -278,7 +278,7 @@ out_err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void wcn36xx_stop(struct ieee80211_hw *hw)
|
||||
static void wcn36xx_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct wcn36xx *wcn = hw->priv;
|
||||
|
||||
|
@ -1850,7 +1850,7 @@ error:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void at76_mac80211_stop(struct ieee80211_hw *hw)
|
||||
static void at76_mac80211_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct at76_priv *priv = hw->priv;
|
||||
|
||||
|
@ -5078,7 +5078,7 @@ static int b43_op_start(struct ieee80211_hw *hw)
|
||||
return err;
|
||||
}
|
||||
|
||||
static void b43_op_stop(struct ieee80211_hw *hw)
|
||||
static void b43_op_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct b43_wl *wl = hw_to_b43_wl(hw);
|
||||
struct b43_wldev *dev = wl->current_dev;
|
||||
|
@ -3485,7 +3485,7 @@ out_mutex_unlock:
|
||||
return err;
|
||||
}
|
||||
|
||||
static void b43legacy_op_stop(struct ieee80211_hw *hw)
|
||||
static void b43legacy_op_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct b43legacy_wl *wl = hw_to_b43legacy_wl(hw);
|
||||
struct b43legacy_wldev *dev = wl->current_dev;
|
||||
|
@ -457,7 +457,7 @@ static int brcms_ops_start(struct ieee80211_hw *hw)
|
||||
return err;
|
||||
}
|
||||
|
||||
static void brcms_ops_stop(struct ieee80211_hw *hw)
|
||||
static void brcms_ops_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct brcms_info *wl = hw->priv;
|
||||
int status;
|
||||
|
@ -2813,7 +2813,7 @@ out_release_irq:
|
||||
}
|
||||
|
||||
static void
|
||||
il3945_mac_stop(struct ieee80211_hw *hw)
|
||||
il3945_mac_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct il_priv *il = hw->priv;
|
||||
|
||||
|
@ -5820,7 +5820,7 @@ out:
|
||||
}
|
||||
|
||||
void
|
||||
il4965_mac_stop(struct ieee80211_hw *hw)
|
||||
il4965_mac_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct il_priv *il = hw->priv;
|
||||
|
||||
|
@ -151,7 +151,7 @@ void il4965_mac_tx(struct ieee80211_hw *hw,
|
||||
struct ieee80211_tx_control *control,
|
||||
struct sk_buff *skb);
|
||||
int il4965_mac_start(struct ieee80211_hw *hw);
|
||||
void il4965_mac_stop(struct ieee80211_hw *hw);
|
||||
void il4965_mac_stop(struct ieee80211_hw *hw, bool suspend);
|
||||
void il4965_configure_filter(struct ieee80211_hw *hw,
|
||||
unsigned int changed_flags,
|
||||
unsigned int *total_flags, u64 multicast);
|
||||
|
@ -300,7 +300,7 @@ static int iwlagn_mac_start(struct ieee80211_hw *hw)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void iwlagn_mac_stop(struct ieee80211_hw *hw)
|
||||
static void iwlagn_mac_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw);
|
||||
|
||||
|
@ -1376,7 +1376,7 @@ void __iwl_mvm_mac_stop(struct iwl_mvm *mvm)
|
||||
}
|
||||
}
|
||||
|
||||
void iwl_mvm_mac_stop(struct ieee80211_hw *hw)
|
||||
void iwl_mvm_mac_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
|
||||
|
||||
|
@ -2818,7 +2818,7 @@ int iwl_mvm_op_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant);
|
||||
int iwl_mvm_mac_start(struct ieee80211_hw *hw);
|
||||
void iwl_mvm_mac_reconfig_complete(struct ieee80211_hw *hw,
|
||||
enum ieee80211_reconfig_type reconfig_type);
|
||||
void iwl_mvm_mac_stop(struct ieee80211_hw *hw);
|
||||
void iwl_mvm_mac_stop(struct ieee80211_hw *hw, bool suspend);
|
||||
static inline int iwl_mvm_mac_config(struct ieee80211_hw *hw, u32 changed)
|
||||
{
|
||||
return 0;
|
||||
|
@ -197,7 +197,7 @@ out:
|
||||
return err;
|
||||
}
|
||||
|
||||
static void p54_stop(struct ieee80211_hw *dev)
|
||||
static void p54_stop(struct ieee80211_hw *dev, bool suspend)
|
||||
{
|
||||
struct p54_common *priv = dev->priv;
|
||||
int i;
|
||||
|
@ -267,7 +267,7 @@ static int lbtf_op_start(struct ieee80211_hw *hw)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void lbtf_op_stop(struct ieee80211_hw *hw)
|
||||
static void lbtf_op_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct lbtf_private *priv = hw->priv;
|
||||
unsigned long flags;
|
||||
|
@ -4768,7 +4768,7 @@ static int mwl8k_start(struct ieee80211_hw *hw)
|
||||
return rc;
|
||||
}
|
||||
|
||||
static void mwl8k_stop(struct ieee80211_hw *hw)
|
||||
static void mwl8k_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mwl8k_priv *priv = hw->priv;
|
||||
int i;
|
||||
@ -6023,7 +6023,7 @@ static int mwl8k_reload_firmware(struct ieee80211_hw *hw, char *fw_image)
|
||||
struct mwl8k_priv *priv = hw->priv;
|
||||
struct mwl8k_vif *vif, *tmp_vif;
|
||||
|
||||
mwl8k_stop(hw);
|
||||
mwl8k_stop(hw, false);
|
||||
mwl8k_rxq_deinit(hw, 0);
|
||||
|
||||
/*
|
||||
|
@ -23,7 +23,7 @@ mt7603_start(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
static void
|
||||
mt7603_stop(struct ieee80211_hw *hw)
|
||||
mt7603_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt7603_dev *dev = hw->priv;
|
||||
|
||||
|
@ -91,7 +91,7 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void mt7615_stop(struct ieee80211_hw *hw)
|
||||
static void mt7615_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt7615_dev *dev = mt7615_hw_dev(hw);
|
||||
struct mt7615_phy *phy = mt7615_hw_phy(hw);
|
||||
|
@ -79,7 +79,7 @@ static void mt7663u_copy(struct mt76_dev *dev, u32 offset,
|
||||
mutex_unlock(&usb->usb_ctrl_mtx);
|
||||
}
|
||||
|
||||
static void mt7663u_stop(struct ieee80211_hw *hw)
|
||||
static void mt7663u_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt7615_phy *phy = mt7615_hw_phy(hw);
|
||||
struct mt7615_dev *dev = hw->priv;
|
||||
|
@ -44,7 +44,7 @@ static void mt76x0e_stop_hw(struct mt76x02_dev *dev)
|
||||
mt76_clear(dev, MT_WPDMA_GLO_CFG, MT_WPDMA_GLO_CFG_RX_DMA_EN);
|
||||
}
|
||||
|
||||
static void mt76x0e_stop(struct ieee80211_hw *hw)
|
||||
static void mt76x0e_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt76x02_dev *dev = hw->priv;
|
||||
|
||||
|
@ -77,7 +77,7 @@ static void mt76x0u_cleanup(struct mt76x02_dev *dev)
|
||||
mt76u_queues_deinit(&dev->mt76);
|
||||
}
|
||||
|
||||
static void mt76x0u_stop(struct ieee80211_hw *hw)
|
||||
static void mt76x0u_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt76x02_dev *dev = hw->priv;
|
||||
|
||||
|
@ -24,7 +24,7 @@ mt76x2_start(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
static void
|
||||
mt76x2_stop(struct ieee80211_hw *hw)
|
||||
mt76x2_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt76x02_dev *dev = hw->priv;
|
||||
|
||||
|
@ -22,7 +22,7 @@ static int mt76x2u_start(struct ieee80211_hw *hw)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void mt76x2u_stop(struct ieee80211_hw *hw)
|
||||
static void mt76x2u_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt76x02_dev *dev = hw->priv;
|
||||
|
||||
|
@ -108,7 +108,7 @@ static int mt7915_start(struct ieee80211_hw *hw)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void mt7915_stop(struct ieee80211_hw *hw)
|
||||
static void mt7915_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt7915_dev *dev = mt7915_hw_dev(hw);
|
||||
struct mt7915_phy *phy = mt7915_hw_phy(hw);
|
||||
|
@ -268,7 +268,7 @@ static int mt7921_start(struct ieee80211_hw *hw)
|
||||
return err;
|
||||
}
|
||||
|
||||
static void mt7921_stop(struct ieee80211_hw *hw)
|
||||
static void mt7921_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt792x_dev *dev = mt792x_hw_dev(hw);
|
||||
int err = 0;
|
||||
@ -281,7 +281,7 @@ static void mt7921_stop(struct ieee80211_hw *hw)
|
||||
return;
|
||||
}
|
||||
|
||||
mt792x_stop(hw);
|
||||
mt792x_stop(hw, false);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -251,7 +251,7 @@ static inline bool mt792x_dma_need_reinit(struct mt792x_dev *dev)
|
||||
#define mt792x_mutex_release(dev) \
|
||||
mt76_connac_mutex_release(&(dev)->mt76, &(dev)->pm)
|
||||
|
||||
void mt792x_stop(struct ieee80211_hw *hw);
|
||||
void mt792x_stop(struct ieee80211_hw *hw, bool suspend);
|
||||
void mt792x_pm_wake_work(struct work_struct *work);
|
||||
void mt792x_pm_power_save_work(struct work_struct *work);
|
||||
void mt792x_reset(struct mt76_dev *mdev);
|
||||
@ -368,7 +368,7 @@ void mt792xu_wr(struct mt76_dev *dev, u32 addr, u32 val);
|
||||
u32 mt792xu_rmw(struct mt76_dev *dev, u32 addr, u32 mask, u32 val);
|
||||
void mt792xu_copy(struct mt76_dev *dev, u32 offset, const void *data, int len);
|
||||
void mt792xu_disconnect(struct usb_interface *usb_intf);
|
||||
void mt792xu_stop(struct ieee80211_hw *hw);
|
||||
void mt792xu_stop(struct ieee80211_hw *hw, bool suspend);
|
||||
|
||||
static inline void
|
||||
mt792x_skb_add_usb_sdio_hdr(struct mt792x_dev *dev, struct sk_buff *skb,
|
||||
|
@ -91,7 +91,7 @@ void mt792x_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt792x_tx);
|
||||
|
||||
void mt792x_stop(struct ieee80211_hw *hw)
|
||||
void mt792x_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt792x_dev *dev = mt792x_hw_dev(hw);
|
||||
struct mt792x_phy *phy = mt792x_hw_phy(hw);
|
||||
|
@ -285,12 +285,12 @@ int mt792xu_init_reset(struct mt792x_dev *dev)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt792xu_init_reset);
|
||||
|
||||
void mt792xu_stop(struct ieee80211_hw *hw)
|
||||
void mt792xu_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt792x_dev *dev = mt792x_hw_dev(hw);
|
||||
|
||||
mt76u_stop_tx(&dev->mt76);
|
||||
mt792x_stop(hw);
|
||||
mt792x_stop(hw, false);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt792xu_stop);
|
||||
|
||||
|
@ -93,7 +93,7 @@ static int mt7996_start(struct ieee80211_hw *hw)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void mt7996_stop(struct ieee80211_hw *hw)
|
||||
static void mt7996_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt7996_dev *dev = mt7996_hw_dev(hw);
|
||||
struct mt7996_phy *phy = mt7996_hw_phy(hw);
|
||||
|
@ -28,7 +28,7 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void mt7601u_stop(struct ieee80211_hw *hw)
|
||||
static void mt7601u_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mt7601u_dev *dev = hw->priv;
|
||||
|
||||
|
@ -111,7 +111,7 @@ int plfxlc_op_start(struct ieee80211_hw *hw)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void plfxlc_op_stop(struct ieee80211_hw *hw)
|
||||
void plfxlc_op_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct plfxlc_mac *mac = plfxlc_hw_mac(hw);
|
||||
|
||||
|
@ -178,7 +178,7 @@ int plfxlc_mac_rx(struct ieee80211_hw *hw, const u8 *buffer,
|
||||
void plfxlc_mac_tx_failed(struct urb *urb);
|
||||
void plfxlc_mac_tx_to_dev(struct sk_buff *skb, int error);
|
||||
int plfxlc_op_start(struct ieee80211_hw *hw);
|
||||
void plfxlc_op_stop(struct ieee80211_hw *hw);
|
||||
void plfxlc_op_stop(struct ieee80211_hw *hw, bool suspend);
|
||||
int plfxlc_restore_settings(struct plfxlc_mac *mac);
|
||||
|
||||
#endif /* PLFXLC_MAC_H */
|
||||
|
@ -408,7 +408,7 @@ void plfxlc_usb_init(struct plfxlc_usb *usb, struct ieee80211_hw *hw,
|
||||
|
||||
void plfxlc_usb_release(struct plfxlc_usb *usb)
|
||||
{
|
||||
plfxlc_op_stop(plfxlc_usb_to_hw(usb));
|
||||
plfxlc_op_stop(plfxlc_usb_to_hw(usb), false);
|
||||
plfxlc_usb_disable_tx(usb);
|
||||
plfxlc_usb_disable_rx(usb);
|
||||
usb_set_intfdata(usb->intf, NULL);
|
||||
@ -761,7 +761,7 @@ static void plfxlc_usb_resume(struct plfxlc_usb *usb)
|
||||
|
||||
static void plfxlc_usb_stop(struct plfxlc_usb *usb)
|
||||
{
|
||||
plfxlc_op_stop(plfxlc_usb_to_hw(usb));
|
||||
plfxlc_op_stop(plfxlc_usb_to_hw(usb), false);
|
||||
plfxlc_usb_disable_tx(usb);
|
||||
plfxlc_usb_disable_rx(usb);
|
||||
|
||||
|
@ -1450,7 +1450,7 @@ void rt2x00mac_tx(struct ieee80211_hw *hw,
|
||||
struct ieee80211_tx_control *control,
|
||||
struct sk_buff *skb);
|
||||
int rt2x00mac_start(struct ieee80211_hw *hw);
|
||||
void rt2x00mac_stop(struct ieee80211_hw *hw);
|
||||
void rt2x00mac_stop(struct ieee80211_hw *hw, bool suspend);
|
||||
void rt2x00mac_reconfig_complete(struct ieee80211_hw *hw,
|
||||
enum ieee80211_reconfig_type reconfig_type);
|
||||
int rt2x00mac_add_interface(struct ieee80211_hw *hw,
|
||||
|
@ -178,7 +178,7 @@ int rt2x00mac_start(struct ieee80211_hw *hw)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rt2x00mac_start);
|
||||
|
||||
void rt2x00mac_stop(struct ieee80211_hw *hw)
|
||||
void rt2x00mac_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct rt2x00_dev *rt2x00dev = hw->priv;
|
||||
|
||||
|
@ -1249,7 +1249,7 @@ static int rtl8180_start(struct ieee80211_hw *dev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void rtl8180_stop(struct ieee80211_hw *dev)
|
||||
static void rtl8180_stop(struct ieee80211_hw *dev, bool suspend)
|
||||
{
|
||||
struct rtl8180_priv *priv = dev->priv;
|
||||
u8 reg;
|
||||
|
@ -1019,7 +1019,7 @@ rtl8187_start_exit:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void rtl8187_stop(struct ieee80211_hw *dev)
|
||||
static void rtl8187_stop(struct ieee80211_hw *dev, bool suspend)
|
||||
{
|
||||
struct rtl8187_priv *priv = dev->priv;
|
||||
struct sk_buff *skb;
|
||||
|
@ -7521,7 +7521,7 @@ error_out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void rtl8xxxu_stop(struct ieee80211_hw *hw)
|
||||
static void rtl8xxxu_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct rtl8xxxu_priv *priv = hw->priv;
|
||||
unsigned long flags;
|
||||
|
@ -144,7 +144,7 @@ static int rtl_op_start(struct ieee80211_hw *hw)
|
||||
return err;
|
||||
}
|
||||
|
||||
static void rtl_op_stop(struct ieee80211_hw *hw)
|
||||
static void rtl_op_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
|
||||
@ -547,7 +547,7 @@ static int rtl_op_suspend(struct ieee80211_hw *hw,
|
||||
rtlhal->enter_pnp_sleep = true;
|
||||
|
||||
rtl_lps_leave(hw, true);
|
||||
rtl_op_stop(hw);
|
||||
rtl_op_stop(hw, false);
|
||||
device_set_wakeup_enable(wiphy_dev(hw->wiphy), true);
|
||||
return 0;
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ static int rtw_ops_start(struct ieee80211_hw *hw)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void rtw_ops_stop(struct ieee80211_hw *hw)
|
||||
static void rtw_ops_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct rtw_dev *rtwdev = hw->priv;
|
||||
|
||||
|
@ -66,7 +66,7 @@ static int rtw89_ops_start(struct ieee80211_hw *hw)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void rtw89_ops_stop(struct ieee80211_hw *hw)
|
||||
static void rtw89_ops_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct rtw89_dev *rtwdev = hw->priv;
|
||||
|
||||
|
@ -410,10 +410,11 @@ static int rsi_mac80211_start(struct ieee80211_hw *hw)
|
||||
/**
|
||||
* rsi_mac80211_stop() - This is the last handler that 802.11 module calls.
|
||||
* @hw: Pointer to the ieee80211_hw structure.
|
||||
* @suspend: true if the this was called from suspend flow.
|
||||
*
|
||||
* Return: None.
|
||||
*/
|
||||
static void rsi_mac80211_stop(struct ieee80211_hw *hw)
|
||||
static void rsi_mac80211_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct rsi_hw *adapter = hw->priv;
|
||||
struct rsi_common *common = adapter->priv;
|
||||
|
@ -805,7 +805,7 @@ int wfx_start(struct ieee80211_hw *hw)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void wfx_stop(struct ieee80211_hw *hw)
|
||||
void wfx_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct wfx_dev *wdev = hw->priv;
|
||||
|
||||
|
@ -20,7 +20,7 @@ struct wfx_sta_priv {
|
||||
|
||||
/* mac80211 interface */
|
||||
int wfx_start(struct ieee80211_hw *hw);
|
||||
void wfx_stop(struct ieee80211_hw *hw);
|
||||
void wfx_stop(struct ieee80211_hw *hw, bool suspend);
|
||||
int wfx_config(struct ieee80211_hw *hw, u32 changed);
|
||||
int wfx_set_rts_threshold(struct ieee80211_hw *hw, u32 value);
|
||||
void wfx_set_default_unicast_key(struct ieee80211_hw *hw, struct ieee80211_vif *vif, int idx);
|
||||
|
@ -90,7 +90,7 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
void cw1200_stop(struct ieee80211_hw *dev)
|
||||
void cw1200_stop(struct ieee80211_hw *dev, bool suspend)
|
||||
{
|
||||
struct cw1200_common *priv = dev->priv;
|
||||
LIST_HEAD(list);
|
||||
|
@ -13,7 +13,7 @@
|
||||
/* mac80211 API */
|
||||
|
||||
int cw1200_start(struct ieee80211_hw *dev);
|
||||
void cw1200_stop(struct ieee80211_hw *dev);
|
||||
void cw1200_stop(struct ieee80211_hw *dev, bool suspend);
|
||||
int cw1200_add_interface(struct ieee80211_hw *dev,
|
||||
struct ieee80211_vif *vif);
|
||||
void cw1200_remove_interface(struct ieee80211_hw *dev,
|
||||
|
@ -415,7 +415,7 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void wl1251_op_stop(struct ieee80211_hw *hw)
|
||||
static void wl1251_op_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct wl1251 *wl = hw->priv;
|
||||
|
||||
|
@ -2085,7 +2085,7 @@ static void wlcore_op_stop_locked(struct wl1271 *wl)
|
||||
memset(wl->reg_ch_conf_last, 0, sizeof(wl->reg_ch_conf_last));
|
||||
}
|
||||
|
||||
static void wlcore_op_stop(struct ieee80211_hw *hw)
|
||||
static void wlcore_op_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct wl1271 *wl = hw->priv;
|
||||
|
||||
|
@ -2098,7 +2098,7 @@ static int mac80211_hwsim_start(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
|
||||
static void mac80211_hwsim_stop(struct ieee80211_hw *hw)
|
||||
static void mac80211_hwsim_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct mac80211_hwsim_data *data = hw->priv;
|
||||
int i;
|
||||
|
@ -326,7 +326,7 @@ out:
|
||||
return r;
|
||||
}
|
||||
|
||||
void zd_op_stop(struct ieee80211_hw *hw)
|
||||
void zd_op_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct zd_mac *mac = zd_hw_mac(hw);
|
||||
struct zd_chip *chip = &mac->chip;
|
||||
|
@ -303,7 +303,7 @@ void zd_mac_tx_failed(struct urb *urb);
|
||||
void zd_mac_tx_to_dev(struct sk_buff *skb, int error);
|
||||
|
||||
int zd_op_start(struct ieee80211_hw *hw);
|
||||
void zd_op_stop(struct ieee80211_hw *hw);
|
||||
void zd_op_stop(struct ieee80211_hw *hw, bool suspend);
|
||||
int zd_restore_settings(struct zd_mac *mac);
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -1476,7 +1476,7 @@ static void zd_usb_stop(struct zd_usb *usb)
|
||||
{
|
||||
dev_dbg_f(zd_usb_dev(usb), "\n");
|
||||
|
||||
zd_op_stop(zd_usb_to_hw(usb));
|
||||
zd_op_stop(zd_usb_to_hw(usb), false);
|
||||
|
||||
zd_usb_disable_tx(usb);
|
||||
zd_usb_disable_rx(usb);
|
||||
|
@ -1339,7 +1339,7 @@ err_free_rings:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void vnt_stop(struct ieee80211_hw *hw)
|
||||
static void vnt_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct vnt_private *priv = hw->priv;
|
||||
|
||||
|
@ -613,7 +613,7 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void vnt_stop(struct ieee80211_hw *hw)
|
||||
static void vnt_stop(struct ieee80211_hw *hw, bool suspend)
|
||||
{
|
||||
struct vnt_private *priv = hw->priv;
|
||||
int i;
|
||||
|
@ -4444,7 +4444,7 @@ struct ieee80211_ops {
|
||||
struct ieee80211_tx_control *control,
|
||||
struct sk_buff *skb);
|
||||
int (*start)(struct ieee80211_hw *hw);
|
||||
void (*stop)(struct ieee80211_hw *hw);
|
||||
void (*stop)(struct ieee80211_hw *hw, bool suspend);
|
||||
#ifdef CONFIG_PM
|
||||
int (*suspend)(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan);
|
||||
int (*resume)(struct ieee80211_hw *hw);
|
||||
|
@ -33,7 +33,7 @@ int drv_start(struct ieee80211_local *local)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void drv_stop(struct ieee80211_local *local)
|
||||
void drv_stop(struct ieee80211_local *local, bool suspend)
|
||||
{
|
||||
might_sleep();
|
||||
lockdep_assert_wiphy(local->hw.wiphy);
|
||||
@ -41,8 +41,8 @@ void drv_stop(struct ieee80211_local *local)
|
||||
if (WARN_ON(!local->started))
|
||||
return;
|
||||
|
||||
trace_drv_stop(local);
|
||||
local->ops->stop(&local->hw);
|
||||
trace_drv_stop(local, suspend);
|
||||
local->ops->stop(&local->hw, suspend);
|
||||
trace_drv_return_void(local);
|
||||
|
||||
/* sync away all work on the tasklet before clearing started */
|
||||
|
@ -88,7 +88,7 @@ static inline int drv_get_et_sset_count(struct ieee80211_sub_if_data *sdata,
|
||||
}
|
||||
|
||||
int drv_start(struct ieee80211_local *local);
|
||||
void drv_stop(struct ieee80211_local *local);
|
||||
void drv_stop(struct ieee80211_local *local, bool suspend);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static inline int drv_suspend(struct ieee80211_local *local,
|
||||
|
@ -2246,7 +2246,7 @@ int ieee80211_parse_ch_switch_ie(struct ieee80211_sub_if_data *sdata,
|
||||
|
||||
/* Suspend/resume and hw reconfiguration */
|
||||
int ieee80211_reconfig(struct ieee80211_local *local);
|
||||
void ieee80211_stop_device(struct ieee80211_local *local);
|
||||
void ieee80211_stop_device(struct ieee80211_local *local, bool suspend);
|
||||
|
||||
int __ieee80211_suspend(struct ieee80211_hw *hw,
|
||||
struct cfg80211_wowlan *wowlan);
|
||||
|
@ -698,7 +698,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, bool going_do
|
||||
wiphy_delayed_work_flush(local->hw.wiphy, &local->scan_work);
|
||||
|
||||
if (local->open_count == 0) {
|
||||
ieee80211_stop_device(local);
|
||||
ieee80211_stop_device(local, false);
|
||||
|
||||
/* no reconfiguring after stop! */
|
||||
return;
|
||||
@ -1435,7 +1435,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
|
||||
drv_remove_interface(local, sdata);
|
||||
err_stop:
|
||||
if (!local->open_count)
|
||||
drv_stop(local);
|
||||
drv_stop(local, false);
|
||||
err_del_bss:
|
||||
sdata->bss = NULL;
|
||||
if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
|
||||
|
@ -1,7 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Portions
|
||||
* Copyright (C) 2020-2021, 2023 Intel Corporation
|
||||
* Copyright (C) 2020-2021, 2023-2024 Intel Corporation
|
||||
*/
|
||||
#include <net/mac80211.h>
|
||||
#include <net/rtnetlink.h>
|
||||
@ -171,7 +171,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
|
||||
WARN_ON(!list_empty(&local->chanctx_list));
|
||||
|
||||
/* stop hardware - this must stop RX */
|
||||
ieee80211_stop_device(local);
|
||||
ieee80211_stop_device(local, true);
|
||||
|
||||
suspend:
|
||||
local->suspended = true;
|
||||
|
@ -328,9 +328,18 @@ TRACE_EVENT(drv_set_wakeup,
|
||||
TP_printk(LOCAL_PR_FMT " enabled:%d", LOCAL_PR_ARG, __entry->enabled)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(local_only_evt, drv_stop,
|
||||
TP_PROTO(struct ieee80211_local *local),
|
||||
TP_ARGS(local)
|
||||
TRACE_EVENT(drv_stop,
|
||||
TP_PROTO(struct ieee80211_local *local, bool suspend),
|
||||
TP_ARGS(local, suspend),
|
||||
TP_STRUCT__entry(
|
||||
LOCAL_ENTRY
|
||||
__field(bool, suspend)
|
||||
),
|
||||
TP_fast_assign(
|
||||
LOCAL_ASSIGN;
|
||||
__entry->suspend = suspend;
|
||||
),
|
||||
TP_printk(LOCAL_PR_FMT " suspend:%d", LOCAL_PR_ARG, __entry->suspend)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(local_sdata_addr_evt, drv_add_interface,
|
||||
|
@ -1565,7 +1565,7 @@ u32 ieee80211_sta_get_rates(struct ieee80211_sub_if_data *sdata,
|
||||
return supp_rates;
|
||||
}
|
||||
|
||||
void ieee80211_stop_device(struct ieee80211_local *local)
|
||||
void ieee80211_stop_device(struct ieee80211_local *local, bool suspend)
|
||||
{
|
||||
ieee80211_handle_queued_frames(local);
|
||||
|
||||
@ -1576,7 +1576,7 @@ void ieee80211_stop_device(struct ieee80211_local *local)
|
||||
|
||||
flush_workqueue(local->workqueue);
|
||||
wiphy_work_flush(local->hw.wiphy, NULL);
|
||||
drv_stop(local);
|
||||
drv_stop(local, suspend);
|
||||
}
|
||||
|
||||
static void ieee80211_flush_completed_scan(struct ieee80211_local *local,
|
||||
|
Loading…
Reference in New Issue
Block a user