]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
wifi: rtl8xxxu: prepare supporting two virtual interfaces
authorMartin Kaistra <martin.kaistra@linutronix.de>
Fri, 22 Dec 2023 10:14:23 +0000 (11:14 +0100)
committerKalle Valo <kvalo@kernel.org>
Wed, 10 Jan 2024 14:52:55 +0000 (16:52 +0200)
To prepare for concurrent mode, add an array ("vifs") to rtl8xxxu_priv
to keep track of both interfaces.

Keep the old priv->vif as long there are still users of it and let
priv->vifs[0] point to the same location.

Signed-off-by: Martin Kaistra <martin.kaistra@linutronix.de>
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://msgid.link/20231222101442.626837-3-martin.kaistra@linutronix.de
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c

index 4695fb4e2d2dbaf0ecd78686c0f963205e5d33e5..b63fe084de92bd2e7a016ae42344eab896965999 100644 (file)
@@ -1897,6 +1897,8 @@ struct rtl8xxxu_priv {
         * is supported and no iface_combinations are provided.
         */
        struct ieee80211_vif *vif;
+
+       struct ieee80211_vif *vifs[2];
        struct delayed_work ra_watchdog;
        struct work_struct c2hcmd_work;
        struct sk_buff_head c2hcmd_queue;
index f82b51383377f3edb9a8ef87a6e0f7b5f1960c9a..0e20e7b4552b8ae4ddf1dba6c41f7d6381f0b18a 100644 (file)
@@ -6569,10 +6569,12 @@ static int rtl8xxxu_add_interface(struct ieee80211_hw *hw,
        int ret;
        u8 val8;
 
-       if (!priv->vif)
+       if (!priv->vif) {
                priv->vif = vif;
-       else
+               priv->vifs[0] = vif;
+       } else {
                return -EOPNOTSUPP;
+       }
 
        switch (vif->type) {
        case NL80211_IFTYPE_STATION:
@@ -6622,8 +6624,10 @@ static void rtl8xxxu_remove_interface(struct ieee80211_hw *hw,
 
        dev_dbg(&priv->udev->dev, "%s\n", __func__);
 
-       if (priv->vif)
+       if (priv->vif) {
                priv->vif = NULL;
+               priv->vifs[0] = NULL;
+       }
 }
 
 static int rtl8xxxu_config(struct ieee80211_hw *hw, u32 changed)