return vif->valid_links != 0;
 }
 
+/**
+ * ieee80211_vif_link_active - check if a given link is active
+ * @vif: the vif
+ * @link_id: the link ID to check
+ * Return: %true if the vif is an MLD and the link is active, or if
+ *     the vif is not an MLD and the link ID is 0; %false otherwise.
+ */
+static inline bool ieee80211_vif_link_active(const struct ieee80211_vif *vif,
+                                            unsigned int link_id)
+{
+       if (!ieee80211_vif_is_mld(vif))
+               return link_id == 0;
+       return vif->active_links & BIT(link_id);
+}
+
 #define for_each_vif_active_link(vif, link, link_id)                           \
        for (link_id = 0; link_id < ARRAY_SIZE((vif)->link_conf); link_id++)    \
                if ((!(vif)->active_links ||                                    \
 
        if (WARN_ON_ONCE(sdata->vif.type != NL80211_IFTYPE_STATION))
                return -EINVAL;
 
-       if (ieee80211_vif_is_mld(&sdata->vif) &&
-           !(sdata->vif.active_links & BIT(link->link_id)))
+       if (!ieee80211_vif_link_active(&sdata->vif, link->link_id))
                return 0;
 
        old_req = link->u.mgd.req_smps;
 
 
        lockdep_assert_wiphy(local->hw.wiphy);
 
-       if (sdata->vif.active_links &&
-           !(sdata->vif.active_links & BIT(link->link_id))) {
+       if (!ieee80211_vif_link_active(&sdata->vif, link->link_id)) {
                ieee80211_link_update_chanreq(link, chanreq);
                return 0;
        }
 
 // SPDX-License-Identifier: GPL-2.0-only
 /*
  * Copyright 2015 Intel Deutschland GmbH
- * Copyright (C) 2022-2023 Intel Corporation
+ * Copyright (C) 2022-2024 Intel Corporation
  */
 #include <net/mac80211.h>
 #include "ieee80211_i.h"
        if (!check_sdata_in_driver(sdata))
                return -EIO;
 
-       if (sdata->vif.active_links &&
-           !(sdata->vif.active_links & BIT(link->link_id)))
+       if (!ieee80211_vif_link_active(&sdata->vif, link->link_id))
                return 0;
 
        if (params->cw_min == 0 || params->cw_min > params->cw_max) {
        if (!check_sdata_in_driver(sdata))
                return -EIO;
 
-       if (sdata->vif.active_links &&
-           !(sdata->vif.active_links & BIT(link_conf->link_id)))
+       if (!ieee80211_vif_link_active(&sdata->vif, link_conf->link_id))
                return 0;
 
        trace_drv_assign_vif_chanctx(local, sdata, link_conf, ctx);
        if (!check_sdata_in_driver(sdata))
                return;
 
-       if (sdata->vif.active_links &&
-           !(sdata->vif.active_links & BIT(link_conf->link_id)))
+       if (!ieee80211_vif_link_active(&sdata->vif, link_conf->link_id))
                return;
 
        trace_drv_unassign_vif_chanctx(local, sdata, link_conf, ctx);
        if (!check_sdata_in_driver(sdata))
                return;
 
-       if (sdata->vif.active_links &&
-           !(sdata->vif.active_links & BIT(link_id)))
+       if (!ieee80211_vif_link_active(&sdata->vif, link_id))
                return;
 
        trace_drv_link_info_changed(local, sdata, info, changed);
 
                for (link_id = 0;
                     link_id < ARRAY_SIZE(sdata->vif.link_conf);
                     link_id++) {
-                       if (ieee80211_vif_is_mld(&sdata->vif) &&
-                           !(sdata->vif.active_links & BIT(link_id)))
+                       if (!ieee80211_vif_link_active(&sdata->vif, link_id))
                                continue;
 
                        link = sdata_dereference(sdata->link[link_id], sdata);