From patchwork Fri Mar 7 00:37:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muna Sinada X-Patchwork-Id: 872160 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11C5D9454 for ; Fri, 7 Mar 2025 00:37:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741307872; cv=none; b=gN3mBXJZ42CALWupV3qNmynVuRBxLnxA8UXEOoxssy4e40SQq344jKFrSe+2qr1/B9zg+wSf/AhsKhD15EX2Rgj5UA84wpVo/PLegoQFZPH0uG+6w8XdVgfv2SVELzykHNZugMVuQUmtPNpeQo+sJiXSJ5VDecjGECJ2IbFIMnA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741307872; c=relaxed/simple; bh=mlqVMxB4erT8Xq7SiHR181pnbZK052Q3iJfvX6k0oWs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LbgsXmThWFZ+LWejomk9Om7NV/IF0gMNG8Q74tfg9lJ1ln8eEq0BH3IcZXjTqDxhQAV16ksYZRol43E2l8fX7/QrWgyM5Ie1Esa3Mv4DVYlOQECxPHBazwbKaHvsXchc3vwYHUcmT1sSgslGR+mQLa2kJaFTjfjnkuQJs2RWS0E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=NrGCO0hn; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="NrGCO0hn" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 526G8h77005496 for ; Fri, 7 Mar 2025 00:37:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=mx3ArUN7ekz 5VVT16aGsegJVxVTNRtF6nFZeS6A3Q4Y=; b=NrGCO0hnj5IV9LWZhrhXvO933kG LxP+i1u0JvozTwOrrH/nnOClJ8l4hdoc1B/mPeWGXouwxItkFhU/G/1RUxMKFyYY 071oB/Ij8Vp6P1Fnh6odxewwOBjzMZn2jqa+fH4twDjpuOFx1yyp+5glMFSLZzkQ eqLlZ6fkxJBOQbz/w3SPDhalUWgxuIw68UtP9tjNSo9t/6O2h2XxAO78VTfhvRnC 8GwrwOzKz2V6rWShi+t+AiTU6XcCS2mjYxTo6tznvD9E8eXPmOMvdhBEiJp2OfEh iEB8Ct8tpGz1a6XwMrla8TPnr/5g8ffkRXO6/HI57joqchDf4gvcHsSsfqw== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4577mxapaa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 07 Mar 2025 00:37:49 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-22368a8979cso22217625ad.2 for ; Thu, 06 Mar 2025 16:37:49 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741307868; x=1741912668; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mx3ArUN7ekz5VVT16aGsegJVxVTNRtF6nFZeS6A3Q4Y=; b=EqaDoNPo5EyOLT7caCGQ9+IIHFzzqOHXPVWt/VBCOaWk9GlRZYaGpqsYU5ag+belBU x2UsnZM5wtTkt25j8Y7/2uAuWELSTv9DS8xiWe5kagyXKTZDTs7BFhhDWcgVLCabIbcV YA6vQl+y9qs39Nsq8AXLx306lzu7no8zX0biWVDJabLq4RzWFnnmD4m2Z4gIns8MPRxg KZmxwq5YMeTu70LyyIOK6xLsMwPyiX1UEsogRNvZ07uo+XQiuU7dZTc2atIBJTgdmNXM TqcAA5Ulxqi8GR6awrrLVSe8awCCOb2GMLg8H68we8ukrt3aKRdiR6s/zbgUIoCfqrse eoOw== X-Gm-Message-State: AOJu0YyGR5Y3CAbTI044SNCPRgO72YiaojpElGUz+Z6oX5c32kiZGFc+ ApfaNHYOvA3pIjuYQM0Z7+y37fmXuwIC16MLTJQKswWrQCd9q7qLXoGEND/M/+1yLFV/FPoorZL 8x3A6TBToGMWCOeV0mzDPL2u9U9T3MgIap2WYvJmzWEXKfjDo8x+FG9u2TTAXKiJnUA== X-Gm-Gg: ASbGncsFuUpRr7ygkvZn0mJYXNMQxv2A4f3LRADiXPcjRZmwr7GSjAHaG0gVK7EPN5o Di1kbSD0zwc5qKugt+UkkmLwufH/OFWJdubGTcIdiCyrcEKH9ibwK4FvbunTj3nVoARvtq+RIzi 8IrVnQ2hSW6K7PMom73G61SMGLOWC7yGNkFrsULALAZKPYZzAk2yvgfRD0MM/hsVYrzVnwaFgWW GMwcW1/6zszIImcLNQ8KqceiEVG88huPv0fOlYv4eH5upON66w16LSUoTELT1XqN3x2kGnVMUMw A9kAfv7YQhgjdrblVW1cGInlnZzcOUQcEu2kLDoOI+UMYndR9leoEkxqW3SRrIZPNvXf1ZT7 X-Received: by 2002:a17:902:f54e:b0:223:54aa:6d15 with SMTP id d9443c01a7336-2242888bfcemr25169565ad.12.1741307868068; Thu, 06 Mar 2025 16:37:48 -0800 (PST) X-Google-Smtp-Source: AGHT+IFofBiJEEItktv9y6ue5riplfOtPVGn2WQ+G/PDPOOQXvXhrN245JSEvnh4sAuPC4Z0GTsFlg== X-Received: by 2002:a17:902:f54e:b0:223:54aa:6d15 with SMTP id d9443c01a7336-2242888bfcemr25169165ad.12.1741307867546; Thu, 06 Mar 2025 16:37:47 -0800 (PST) Received: from msinada-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22410a7f8b6sm18559185ad.136.2025.03.06.16.37.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Mar 2025 16:37:47 -0800 (PST) From: Muna Sinada To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Muna Sinada Subject: [wireless-next v2 1/2] wifi: mac80211: Create separate links for VLAN interfaces Date: Thu, 6 Mar 2025 16:37:39 -0800 Message-Id: <20250307003740.1329351-2-muna.sinada@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250307003740.1329351-1-muna.sinada@oss.qualcomm.com> References: <20250307003740.1329351-1-muna.sinada@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Proofpoint-GUID: AWUhQAVIwxEPaWv1kK5dWdmyr_TvDxnR X-Authority-Analysis: v=2.4 cv=cOIaskeN c=1 sm=1 tr=0 ts=67ca3fdd cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=Vs1iUdzkB0EA:10 a=EUspDBNiAAAA:8 a=oePGa5o3w2l9G-cHKo0A:9 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-ORIG-GUID: AWUhQAVIwxEPaWv1kK5dWdmyr_TvDxnR X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-06_08,2025-03-06_04,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 suspectscore=0 adultscore=0 phishscore=0 spamscore=0 lowpriorityscore=0 bulkscore=0 mlxscore=0 impostorscore=0 mlxlogscore=965 malwarescore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503070001 Currently, MLD links for an AP_VLAN interface type is not fully supported. Add allocation of separate links for each VLAN interface and copy chanctx and chandef of AP bss to VLAN where necessary. Separate links are created because for Dynamic VLAN each link will have its own default_multicast_key. Signed-off-by: Muna Sinada --- v2: - move clearing links for AP_VLAN into seperate function: ieee80211_apvlan_link_clear() - remove use of goto - replaced "master" terminalogy with "AP bss" - update Author signoff to new email --- net/mac80211/chan.c | 3 ++ net/mac80211/ieee80211_i.h | 3 ++ net/mac80211/iface.c | 22 +++++++++- net/mac80211/link.c | 90 ++++++++++++++++++++++++++++++++++++-- 4 files changed, 112 insertions(+), 6 deletions(-) diff --git a/net/mac80211/chan.c b/net/mac80211/chan.c index a442cb667520..553fc998f5d0 100644 --- a/net/mac80211/chan.c +++ b/net/mac80211/chan.c @@ -2124,6 +2124,9 @@ void ieee80211_link_release_channel(struct ieee80211_link_data *link) { struct ieee80211_sub_if_data *sdata = link->sdata; + if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) + return; + lockdep_assert_wiphy(sdata->local->hw.wiphy); if (rcu_access_pointer(link->conf->chanctx_conf)) diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 9f0db39b28ff..a7778d9b401c 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -2057,6 +2057,9 @@ static inline void ieee80211_vif_clear_links(struct ieee80211_sub_if_data *sdata ieee80211_vif_set_links(sdata, 0, 0); } +void ieee80211_apvlan_link_setup(struct ieee80211_sub_if_data *sdata); +void ieee80211_apvlan_link_clear(struct ieee80211_sub_if_data *sdata); + /* tx handling */ void ieee80211_clear_tx_pending(struct ieee80211_local *local); void ieee80211_tx_pending(struct tasklet_struct *t); diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index 806dffa48ef9..e688e7eb3ad4 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c @@ -493,6 +493,9 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, bool going_do break; list_del_rcu(&sdata->u.mntr.list); break; + case NL80211_IFTYPE_AP_VLAN: + ieee80211_apvlan_link_clear(sdata); + break; default: break; } @@ -1236,7 +1239,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) struct net_device *dev = wdev->netdev; struct ieee80211_local *local = sdata->local; u64 changed = 0; - int res; + int link_id, res; u32 hw_reconf_flags = 0; lockdep_assert_wiphy(local->hw.wiphy); @@ -1268,6 +1271,8 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) sdata->crypto_tx_tailroom_needed_cnt += master->crypto_tx_tailroom_needed_cnt; + ieee80211_apvlan_link_setup(sdata); + break; } case NL80211_IFTYPE_AP: @@ -1324,7 +1329,20 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) case NL80211_IFTYPE_AP_VLAN: /* no need to tell driver, but set carrier and chanctx */ if (sdata->bss->active) { - ieee80211_link_vlan_copy_chanctx(&sdata->deflink); + struct ieee80211_link_data *link; + unsigned long valid_links = sdata->vif.valid_links; + + if (valid_links) { + for_each_set_bit(link_id, &valid_links, + IEEE80211_MLD_MAX_NUM_LINKS) { + link = sdata_dereference(sdata->link[link_id], + sdata); + ieee80211_link_vlan_copy_chanctx(link); + } + } else { + ieee80211_link_vlan_copy_chanctx(&sdata->deflink); + } + netif_carrier_on(dev); ieee80211_set_vif_encap_ops(sdata); } else { diff --git a/net/mac80211/link.c b/net/mac80211/link.c index 58a76bcd6ae6..d40c2bd3b50b 100644 --- a/net/mac80211/link.c +++ b/net/mac80211/link.c @@ -12,6 +12,71 @@ #include "key.h" #include "debugfs_netdev.h" +static void ieee80211_update_apvlan_links(struct ieee80211_sub_if_data *sdata) +{ + struct ieee80211_sub_if_data *vlan; + struct ieee80211_link_data *link; + u16 ap_bss_links = sdata->vif.valid_links; + u16 new_links, vlan_links; + unsigned long add; + + list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) { + int link_id; + + if (!vlan) + continue; + + /* No support for 4addr with MLO yet */ + if (vlan->wdev.use_4addr) + return; + + vlan_links = vlan->vif.valid_links; + + new_links = ap_bss_links; + + add = new_links & ~vlan_links; + if (!add) + continue; + + ieee80211_vif_set_links(vlan, add, 0); + + for_each_set_bit(link_id, &add, IEEE80211_MLD_MAX_NUM_LINKS) { + link = sdata_dereference(vlan->link[link_id], vlan); + ieee80211_link_vlan_copy_chanctx(link); + } + } +} + +void ieee80211_apvlan_link_setup(struct ieee80211_sub_if_data *sdata) +{ + struct ieee80211_sub_if_data *ap_bss = container_of(sdata->bss, + struct ieee80211_sub_if_data, u.ap); + u16 new_links = ap_bss->vif.valid_links; + unsigned long add; + int link_id; + + if (!ap_bss->vif.valid_links) + return; + + add = new_links; + for_each_set_bit(link_id, &add, IEEE80211_MLD_MAX_NUM_LINKS) { + sdata->wdev.valid_links |= BIT(link_id); + ether_addr_copy(sdata->wdev.links[link_id].addr, + ap_bss->wdev.links[link_id].addr); + } + + ieee80211_vif_set_links(sdata, new_links, 0); +} + +void ieee80211_apvlan_link_clear(struct ieee80211_sub_if_data *sdata) +{ + if (!sdata->wdev.valid_links) + return; + + sdata->wdev.valid_links = 0; + ieee80211_vif_clear_links(sdata); +} + void ieee80211_link_setup(struct ieee80211_link_data *link) { if (link->sdata->vif.type == NL80211_IFTYPE_STATION) @@ -31,6 +96,17 @@ void ieee80211_link_init(struct ieee80211_sub_if_data *sdata, rcu_assign_pointer(sdata->vif.link_conf[link_id], link_conf); rcu_assign_pointer(sdata->link[link_id], link); + if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) { + struct ieee80211_sub_if_data *ap_bss; + struct ieee80211_bss_conf *ap_bss_conf; + + ap_bss = container_of(sdata->bss, + struct ieee80211_sub_if_data, u.ap); + ap_bss_conf = sdata_dereference(ap_bss->vif.link_conf[link_id], + ap_bss); + memcpy(link_conf, ap_bss_conf, sizeof(*link_conf)); + } + link->sdata = sdata; link->link_id = link_id; link->conf = link_conf; @@ -54,6 +130,7 @@ void ieee80211_link_init(struct ieee80211_sub_if_data *sdata, if (!deflink) { switch (sdata->vif.type) { case NL80211_IFTYPE_AP: + case NL80211_IFTYPE_AP_VLAN: ether_addr_copy(link_conf->addr, sdata->wdev.links[link_id].addr); link_conf->bssid = link_conf->addr; @@ -177,6 +254,7 @@ static void ieee80211_set_vif_links_bitmaps(struct ieee80211_sub_if_data *sdata, switch (sdata->vif.type) { case NL80211_IFTYPE_AP: + case NL80211_IFTYPE_AP_VLAN: /* in an AP all links are always active */ sdata->vif.active_links = valid_links; @@ -278,12 +356,16 @@ static int ieee80211_vif_update_links(struct ieee80211_sub_if_data *sdata, ieee80211_set_vif_links_bitmaps(sdata, new_links, dormant_links); /* tell the driver */ - ret = drv_change_vif_links(sdata->local, sdata, - old_links & old_active, - new_links & sdata->vif.active_links, - old); + if (sdata->vif.type != NL80211_IFTYPE_AP_VLAN) + ret = drv_change_vif_links(sdata->local, sdata, + old_links & old_active, + new_links & sdata->vif.active_links, + old); if (!new_links) ieee80211_debugfs_recreate_netdev(sdata, false); + + if (sdata->vif.type == NL80211_IFTYPE_AP) + ieee80211_update_apvlan_links(sdata); } if (ret) { From patchwork Fri Mar 7 00:37:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muna Sinada X-Patchwork-Id: 871469 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 74A32B67A for ; Fri, 7 Mar 2025 00:37:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741307874; cv=none; b=AJLcHvACm287mtbdTYsc1YBZSiAe7aqUupnumGYVYEuWNPJK1CCrbLWPEKtpEd7vteb4Lc0ksdFz5nEKQSW8CNrLPUa0uOavrtt7BzuphAc1gRQqZrdM1wQ89Ift+oyPoUx7qbBhgcKXNkkav7W0NpIb5XemfLsoeX/oYeECGbE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741307874; c=relaxed/simple; bh=JMBt47SgKKOyTNSBQOjOqrfyyJJzRsyzBeNO6m2guFg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bXC4YU7HLH2Cy4X5sDbcUkCoLYS97VryWXxO2OTT8SqS3CszsUi7WpVonNLwtwMozPAkJmPHHpMkewqCHOjtp9lNmldSTj9+7MZP/V1bNiLMpuGdoGMMtzacgkIqM51HrsOoVnJNWyFSHmyKCOkCyHekUJ62PvogVd/kl/iidPI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=jOj83+rx; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="jOj83+rx" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 526I57h3027093 for ; Fri, 7 Mar 2025 00:37:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=ayxwWAhnlkr KFVj8puGeGpKxFLpXu42p0gvQT+pvOzA=; b=jOj83+rxk7mpne0Mja39wtxWWs/ N9eXjQSOXXjvah/n9ffJK4AKIhgbn3Ai/gpbYHPJrzY7Jb1fhqvHb7LbKb1hSOtt IH5mQfKXa+72gsVD4odxiILpCiONQKgEoZSjWzGNIf60ogHApVeSoVouErcRpf04 62zCIbjacuVDYzrNjoct9j9+1VeQwySjZ8VQ0zTPySLMz2a9S7KbrM3yPldaNnCA eGX5lsARUHl/jP4nG82vN73mgBKkdSAUKZszJRj5HXe5MkeLD226A4ntdUsTtKg7 rynZBsfZM8n197CutP3hH7pYlwxwMf5hA6Qdo9zm+wj4qOV5ucbMCdzp1qA== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 455p6ttusp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 07 Mar 2025 00:37:51 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2237f73c669so20893535ad.1 for ; Thu, 06 Mar 2025 16:37:50 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741307870; x=1741912670; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ayxwWAhnlkrKFVj8puGeGpKxFLpXu42p0gvQT+pvOzA=; b=A0JX+I2Bfz6C6FKn8+qAvcpz9cNzQrkA310CGpMWaFDycZJsrKMe+vwyfWoPvX2YLr jH0SwHRp/+QFHq3e6nS+OBSYhaxlm/uaZz8Gr7QB2JACk/2dPP/Q7BwdyJ2FdY/cix8o Tjok4Eh8vWywyz26Pv93dHaH+0fDLDA0qEaDdltrDb+ASeo2YYYR6jX2KDgTz4IrFiKQ 6ycLBwkCA4BVndSeDNPiNRdrKACiO1BhS9QauT++259I/56utyf4x03QDxxv01ZhxxFL X7Wk3c2aXU0SiZ3Ipb0t1mg2SLTXxRtzRs5skrO1FWYXtLL7QU1+6NDwVHjBhzCe3hgF YIGA== X-Gm-Message-State: AOJu0YyKErhdX2l9kxpTUyErvgOePCe5Ns6Fxjv9bMdUkT54nDc6OkvM owreIzneKJJJ4G1n9cT0y8dDpfjN4cYWoKqBpxTZPOlafIaNmIM6UN9FPK+hA7Uqk1XFFw/99c0 Y5IyFQ5e5EG6Y0lD2Zh5m/Mi4zsaqlWAISHgFbsgJ0cbJxU+eeMOQ5sQEDgSxnRxXtA== X-Gm-Gg: ASbGncvzPtk+qzgSx9KqMniFWhkwFPmzRWVhUAi+YuHXnCKI+L5o3b7AcU0olkScitF ev5h+lY98rI0PIk3cZedK2q86Ng4e30kFgxGjbESQz1hxZ2iasFguURGMKoovJiCTb7ClP0v7gz jjfK4mS9Mx8KzPhXSqxe1Xk+JM55294D5juKccMPhN/2+SEmJd69eNB8hVvuwkRuFu7X0SUZzdG kEzkrExJCS6nhkQuaUSOf9KbEI+EpFiLd/z80+QHiYFPoz/LRNk73gXRPC8MJ9JLjqK7ni5HGIH mjMXyYuGpKARCY08gNXpRlCwsMhOndSVQzJ6l3QdkiWjQYdI0v9hdtDFVIdTGoe64XrGCeWO X-Received: by 2002:a17:903:22c1:b0:223:5525:6239 with SMTP id d9443c01a7336-22428c075d8mr21750995ad.38.1741307869698; Thu, 06 Mar 2025 16:37:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IGagEilmowmTYuxav69WI43VMbxWDVFL3gsd/z7DvwGNEz/R6hxAQwqr2+TclGDS4en4mJV6Q== X-Received: by 2002:a17:903:22c1:b0:223:5525:6239 with SMTP id d9443c01a7336-22428c075d8mr21750685ad.38.1741307869260; Thu, 06 Mar 2025 16:37:49 -0800 (PST) Received: from msinada-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22410a7f8b6sm18559185ad.136.2025.03.06.16.37.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Mar 2025 16:37:48 -0800 (PST) From: Muna Sinada To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Muna Sinada Subject: [wireless-next v2 2/2] wifi: mac80211: VLAN traffic in multicast path Date: Thu, 6 Mar 2025 16:37:40 -0800 Message-Id: <20250307003740.1329351-3-muna.sinada@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250307003740.1329351-1-muna.sinada@oss.qualcomm.com> References: <20250307003740.1329351-1-muna.sinada@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Authority-Analysis: v=2.4 cv=HZbuTjE8 c=1 sm=1 tr=0 ts=67ca3fdf cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=Vs1iUdzkB0EA:10 a=EUspDBNiAAAA:8 a=gyU_N_hUvND95jcV2lsA:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-GUID: tHCs4sobHNtQQ6EhwSFVGSozHxXuWDjA X-Proofpoint-ORIG-GUID: tHCs4sobHNtQQ6EhwSFVGSozHxXuWDjA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-06_08,2025-03-06_04,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 adultscore=0 mlxscore=0 spamscore=0 clxscore=1015 phishscore=0 bulkscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 malwarescore=0 mlxlogscore=841 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503070001 Currently for MLO, sending out multicast frames on each link is handled by mac80211 only when IEEE80211_HW_MLO_MCAST_MULTI_LINK_TX flag is not set. Dynamic VLAN multicast traffic utilizes software encryption. Due to this, mac80211 should handle transmitting multicast frames on all links for multicast VLAN traffic. Signed-off-by: Muna Sinada --- v2: update Author signoff to new email --- net/mac80211/tx.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index a24636bda679..40f95bc6ddce 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c @@ -4525,8 +4525,10 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, IEEE80211_TX_CTRL_MLO_LINK_UNSPEC, NULL); } else if (ieee80211_vif_is_mld(&sdata->vif) && - sdata->vif.type == NL80211_IFTYPE_AP && - !ieee80211_hw_check(&sdata->local->hw, MLO_MCAST_MULTI_LINK_TX)) { + ((sdata->vif.type == NL80211_IFTYPE_AP && + !ieee80211_hw_check(&sdata->local->hw, MLO_MCAST_MULTI_LINK_TX)) || + ((sdata->vif.type == NL80211_IFTYPE_AP_VLAN) && + !sdata->wdev.use_4addr))) { ieee80211_mlo_multicast_tx(dev, skb); } else { normal: