* deauthentication frame by calling mgd_prepare_tx, if the
                 * driver requested so.
                 */
-               if (ieee80211_hw_check(&local->hw, DEAUTH_NEED_MGD_TX_PREP) &&
-                   !sdata->deflink.u.mgd.have_beacon) {
-                       drv_mgd_prepare_tx(sdata->local, sdata, &info);
+               if (ieee80211_hw_check(&local->hw, DEAUTH_NEED_MGD_TX_PREP)) {
+                       for (link_id = 0; link_id < ARRAY_SIZE(sdata->link);
+                            link_id++) {
+                               struct ieee80211_link_data *link;
+
+                               link = sdata_dereference(sdata->link[link_id],
+                                                        sdata);
+                               if (!link)
+                                       continue;
+                               if (link->u.mgd.have_beacon)
+                                       break;
+                       }
+                       if (link_id == IEEE80211_MLD_MAX_NUM_LINKS)
+                               drv_mgd_prepare_tx(sdata->local, sdata, &info);
                }
 
                ieee80211_send_deauth_disassoc(sdata, sdata->vif.cfg.ap_addr,