static void ieee80211_restart_sta_timer(struct ieee80211_sub_if_data *sdata)
 {
+       u32 flags;
+
        if (sdata->vif.type == NL80211_IFTYPE_STATION) {
                sdata->u.mgd.flags &= ~(IEEE80211_STA_BEACON_POLL |
                                        IEEE80211_STA_CONNECTION_POLL);
 
                /* let's probe the connection once */
-               ieee80211_queue_work(&sdata->local->hw,
-                          &sdata->u.mgd.monitor_work);
+               flags = sdata->local->hw.flags;
+               if (!(flags & IEEE80211_HW_CONNECTION_MONITOR))
+                       ieee80211_queue_work(&sdata->local->hw,
+                                            &sdata->u.mgd.monitor_work);
                /* and do all the other regular work too */
                ieee80211_queue_work(&sdata->local->hw, &sdata->work);
        }