if (ps)
                set_bit(MT_WCID_FLAG_PS, &wcid->flags);
 
-       dev->drv->sta_ps(dev, sta, ps);
+       if (dev->drv->sta_ps)
+               dev->drv->sta_ps(dev, sta, ps);
 
        if (!ps)
                clear_bit(MT_WCID_FLAG_PS, &wcid->flags);
 
        return 0;
 }
 
-void mt7615_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta, bool ps)
-{
-}
-EXPORT_SYMBOL_GPL(mt7615_sta_ps);
-
 static u16
 mt7615_mac_tx_rate_val(struct mt7615_dev *dev,
                       struct mt76_phy *mphy,
 
                .rx_check = mt7615_rx_check,
                .rx_skb = mt7615_queue_rx_skb,
                .rx_poll_complete = mt7615_rx_poll_complete,
-               .sta_ps = mt7615_sta_ps,
                .sta_add = mt7615_mac_sta_add,
                .sta_remove = mt7615_mac_sta_remove,
                .update_survey = mt7615_update_channel,
 
 bool mt7615_rx_check(struct mt76_dev *mdev, void *data, int len);
 void mt7615_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
                         struct sk_buff *skb, u32 *info);
-void mt7615_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta, bool ps);
 int mt7615_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,
                       struct ieee80211_sta *sta);
 void mt7615_mac_sta_remove(struct mt76_dev *mdev, struct ieee80211_vif *vif,
 
                .tx_status_data = mt7663_usb_sdio_tx_status_data,
                .rx_skb = mt7615_queue_rx_skb,
                .rx_check = mt7615_rx_check,
-               .sta_ps = mt7615_sta_ps,
                .sta_add = mt7615_mac_sta_add,
                .sta_remove = mt7615_mac_sta_remove,
                .update_survey = mt7615_update_channel,
 
                .tx_status_data = mt7663_usb_sdio_tx_status_data,
                .rx_skb = mt7615_queue_rx_skb,
                .rx_check = mt7615_rx_check,
-               .sta_ps = mt7615_sta_ps,
                .sta_add = mt7615_mac_sta_add,
                .sta_remove = mt7615_mac_sta_remove,
                .update_survey = mt7615_update_channel,
 
        return &sta->vif->sta.wcid;
 }
 
-void mt7915_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta, bool ps)
-{
-}
-
 bool mt7915_mac_wtbl_update(struct mt7915_dev *dev, int idx, u32 mask)
 {
        mt76_rmw(dev, MT_WTBL_UPDATE, MT_WTBL_UPDATE_WLAN_IDX,
 
                .rx_skb = mt7915_queue_rx_skb,
                .rx_check = mt7915_rx_check,
                .rx_poll_complete = mt7915_rx_poll_complete,
-               .sta_ps = mt7915_sta_ps,
                .sta_add = mt7915_mac_sta_add,
                .sta_remove = mt7915_mac_sta_remove,
                .update_survey = mt7915_update_channel,
 
 void mt7915_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
                         struct sk_buff *skb, u32 *info);
 bool mt7915_rx_check(struct mt76_dev *mdev, void *data, int len);
-void mt7915_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta, bool ps);
 void mt7915_stats_work(struct work_struct *work);
 int mt76_dfs_start_rdd(struct mt7915_dev *dev, bool force);
 int mt7915_dfs_init_radar_detector(struct mt7915_phy *phy);
 
        return &sta->vif->sta.wcid;
 }
 
-void mt7921_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta, bool ps)
-{
-}
-EXPORT_SYMBOL_GPL(mt7921_sta_ps);
-
 bool mt7921_mac_wtbl_update(struct mt7921_dev *dev, int idx, u32 mask)
 {
        mt76_rmw(dev, MT_WTBL_UPDATE, MT_WTBL_UPDATE_WLAN_IDX,
 
 bool mt7921_rx_check(struct mt76_dev *mdev, void *data, int len);
 void mt7921_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
                         struct sk_buff *skb, u32 *info);
-void mt7921_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta, bool ps);
 void mt7921_stats_work(struct work_struct *work);
 void mt7921_set_stream_he_caps(struct mt7921_phy *phy);
 void mt7921_update_channel(struct mt76_phy *mphy);
 
                .rx_check = mt7921_rx_check,
                .rx_skb = mt7921_queue_rx_skb,
                .rx_poll_complete = mt7921_rx_poll_complete,
-               .sta_ps = mt7921_sta_ps,
                .sta_add = mt7921_mac_sta_add,
                .sta_assoc = mt7921_mac_sta_assoc,
                .sta_remove = mt7921_mac_sta_remove,
 
                .tx_status_data = mt7921_usb_sdio_tx_status_data,
                .rx_skb = mt7921_queue_rx_skb,
                .rx_check = mt7921_rx_check,
-               .sta_ps = mt7921_sta_ps,
                .sta_add = mt7921_mac_sta_add,
                .sta_assoc = mt7921_mac_sta_assoc,
                .sta_remove = mt7921_mac_sta_remove,
 
                .tx_status_data = mt7921_usb_sdio_tx_status_data,
                .rx_skb = mt7921_queue_rx_skb,
                .rx_check = mt7921_rx_check,
-               .sta_ps = mt7921_sta_ps,
                .sta_add = mt7921_mac_sta_add,
                .sta_assoc = mt7921_mac_sta_assoc,
                .sta_remove = mt7921_mac_sta_remove,
 
        return &sta->vif->sta.wcid;
 }
 
-void mt7996_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta, bool ps)
-{
-}
-
 bool mt7996_mac_wtbl_update(struct mt7996_dev *dev, int idx, u32 mask)
 {
        mt76_rmw(dev, MT_WTBL_UPDATE, MT_WTBL_UPDATE_WLAN_IDX,
 
                .rx_skb = mt7996_queue_rx_skb,
                .rx_check = mt7996_rx_check,
                .rx_poll_complete = mt7996_rx_poll_complete,
-               .sta_ps = mt7996_sta_ps,
                .sta_add = mt7996_mac_sta_add,
                .sta_remove = mt7996_mac_sta_remove,
                .update_survey = mt7996_update_channel,
 
 void mt7996_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
                         struct sk_buff *skb, u32 *info);
 bool mt7996_rx_check(struct mt76_dev *mdev, void *data, int len);
-void mt7996_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta, bool ps);
 void mt7996_stats_work(struct work_struct *work);
 int mt76_dfs_start_rdd(struct mt7996_dev *dev, bool force);
 int mt7996_dfs_init_radar_detector(struct mt7996_phy *phy);