From patchwork Tue Mar 25 21:31:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muna Sinada X-Patchwork-Id: 876308 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 A5EAF193086 for ; Tue, 25 Mar 2025 21:31:33 +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=1742938295; cv=none; b=EqxMAa3riIif9IWVrblN3WlTZTcoZ7hgwy4MSNPTvTKRe75+lAV7QBbn7/lqJFG5pCuweXIi812Yop/21CM2oY8/Fa1+vJD1D+ROexb8Ea3Uml40UOqCd7yaSrG8nkn6Y2759GThX/Aa6ss1Tb0iuIhNn0yHp28AWYiQJZoR5T4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742938295; c=relaxed/simple; bh=9yWWLcK2SXmRhzjapjszLh8Y/Oebrz4VEp+1WoS9DXQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ot48Qx6rgjv5XYsn4Ja0hg0qEVUzXHXz4kH/m4I/tRPgKt8cv7PKB0bXS3zn0TZdiZbk37o79cDizYRnnlU1FsIxSyC75v8/J6hRe1qViLuiFx47yVqB8CoWbxzo3gZHwAlI2+pkAVMndNFt/nWbMqUzNFPjUIbpahoxWXPgmv4= 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=kc1rIHoJ; 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="kc1rIHoJ" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52PGacRL009902 for ; Tue, 25 Mar 2025 21:31:32 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=AMoX4nMKjD1 HOIDOePXNJPgdqV39EU/SVa5g3oq5Rg0=; b=kc1rIHoJQosd0tZbTrTbhH8gfnb sqFvRzVPbwBzQV8VcWqWb+3GAqATjP7cpiAcMiaGimHpRyQBndgS9T5Kgp2pFt7/ Ap7fxUOdyprpZEX4UapWQSzukP684dorNCn/P4VML0Ziku4wY8C2kJ07VIN6J21S +tkv0otx2HW/sQL0v0Sai9T1lWjGiJuSfqthD+mUpYLnPPV5NNiFgyq4v5cN65k7 pHxaUe6Urny7V8tO20epBvfM94HjwC+LyeT9sjMQatnM4PwApnI8hohq/fm8S00f scoteegrSwNYRRzNTaL4294gAmxyt3Fw9GZro/iSfH6hTurq/4V+aN2XCXA== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 45hm79s7bf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 25 Mar 2025 21:31:32 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-22647ff3cf5so88358865ad.0 for ; Tue, 25 Mar 2025 14:31:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742938291; x=1743543091; 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=AMoX4nMKjD1HOIDOePXNJPgdqV39EU/SVa5g3oq5Rg0=; b=EDCOF3y/o7wogaTkXfJ4EgDsGP/bGUuDwVBJK8i1WoWJ9Vo2TWEe+SqtnyRmBMy0uL zSM/WLFPQmJCN6pM8A5FMQw6lluc7rmx5lMFC7vfNejyolY5X+iqGnG2v7dlNzEDduwf eJCM6+9DuZlXI41KZH3xEzD2uanQeVIdLTs0Q5rMRPy2u/4xEMDKOF1SZf0nqYtQHeNB mCjyxBM0G65vCsfQJfyrFwSQRm6oknZxHvGuaWdVz9bMpujJJN6NNENUQfBMQYZIGi3Z M1+67zHKt03RYbu9iCxGlc6y2BeDttYJW82Y/LsZfMqdpRfLD67aCYyLgrS7nC4D8Alk 9tHg== X-Gm-Message-State: AOJu0YzPuKssYHiKqTxcDoP9Ry1mCPtENfgLUQpWWO9iSVwkjj2zwj/t wYaiA5X6WVJMaSgI3r/yCKCQBFudvZgnhkl9MgSQWXthTZVL2khpuJfKj7/LKU+Mrhf20EdkjPT xAY0NoWj3YoJt8whNd92cYgEWcP9NBje01UjZS/HR3JR+0riWmsfCr42zlsHOIAKf8Q== X-Gm-Gg: ASbGnctcApMtX/S4/gixUt820LYcRy/9VODw5/ZtUaF51Bs5dwZ+WB2L5Nb0AyeDhq4 EdXqyqLt5HWgUPMw/eQO439Y4Ov0+yKWoK4FG/Q8VFZyP6nJ0XEp38UamyRLjg4RKkG1mz2rNJZ NSVkWNKbgAtSV8lSO+h9Mi3O8RtefP1S0YJvoJhsR9MGMcpKrxVPS7mUy/D1QawAmPE4/Hx7pf7 k9Sd3HywIPDrD+cXWO9Z8bbwmDiO05vGtS+kpWwlOAX7TEHssCCz26xDSYbrvVKWl13XA9eLTn1 jdpoippV+xa/AsuWoVlPiVlqnXaVhldeRY6jjpxUstrQnA78VenzFWzNGudcSIkAdxyJMDRI X-Received: by 2002:a17:902:ebc9:b0:220:c63b:d93c with SMTP id d9443c01a7336-22780e234c5mr277072875ad.44.1742938290896; Tue, 25 Mar 2025 14:31:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHLNgf9cZotSBYbjtzrnbdOzFlQzTW3IMRbOaCvb+MZStVUreiuQX3GkPL1YxbTqNrBPsW0mg== X-Received: by 2002:a17:902:ebc9:b0:220:c63b:d93c with SMTP id d9443c01a7336-22780e234c5mr277072455ad.44.1742938290382; Tue, 25 Mar 2025 14:31:30 -0700 (PDT) Received: from msinada-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22780f3a2b5sm95599395ad.50.2025.03.25.14.31.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Mar 2025 14:31:30 -0700 (PDT) From: Muna Sinada To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Muna Sinada Subject: [PATCH wireless-next v4 1/3] wifi: mac80211: Add link iteration macro for link data Date: Tue, 25 Mar 2025 14:31:23 -0700 Message-Id: <20250325213125.1509362-2-muna.sinada@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250325213125.1509362-1-muna.sinada@oss.qualcomm.com> References: <20250325213125.1509362-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: dAdmBvUvDiH7IzQB24litw-iogUi3ugA X-Proofpoint-ORIG-GUID: dAdmBvUvDiH7IzQB24litw-iogUi3ugA X-Authority-Analysis: v=2.4 cv=IKYCChvG c=1 sm=1 tr=0 ts=67e320b4 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=Vs1iUdzkB0EA:10 a=EUspDBNiAAAA:8 a=o5T2I9SElLahcmg8vGoA:9 a=uG9DUKGECoFWVXl0Dc02:22 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-25_09,2025-03-25_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 phishscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 spamscore=0 priorityscore=1501 adultscore=0 malwarescore=0 mlxlogscore=814 mlxscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2503250143 Currently before iterating through valid links we are utilizing open-coding when checking if vif valid_links is a non-zero value. Add new macro, for_each_link_data(), which iterates through link_id and checks if it is set on vif valid_links. If it is a valid link then access link data for that link id. Signed-off-by: Muna Sinada --- v4: new patch --- net/mac80211/ieee80211_i.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index fb05f3cd37ec..c956072e0d77 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -1226,6 +1226,15 @@ struct ieee80211_sub_if_data *vif_to_sdata(struct ieee80211_vif *p) if ((_link = wiphy_dereference((_local)->hw.wiphy, \ ___sdata->link[___link_id]))) +#define for_each_link_data(sdata, __link) \ + struct ieee80211_sub_if_data *__sdata = sdata; \ + for (int __link_id = 0; \ + __link_id < ARRAY_SIZE((__sdata)->link); __link_id++) \ + if ((!(__sdata)->vif.valid_links || \ + (__sdata)->vif.valid_links & BIT(__link_id)) && \ + ((__link) = sdata_dereference((__sdata)->link[__link_id], \ + (__sdata)))) + static inline int ieee80211_get_mbssid_beacon_len(struct cfg80211_mbssid_elems *elems, struct cfg80211_rnr_elems *rnr_elems, From patchwork Tue Mar 25 21:31:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muna Sinada X-Patchwork-Id: 876526 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 B1D70269B0E for ; Tue, 25 Mar 2025 21:31:35 +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=1742938297; cv=none; b=NDenDvt1UbmlTQaz/kkPOtJLQZY3398SoiHuH7KNKiVLGRbc+GVHDsiYBWw6YjaluzlImO4IhYK+FfRUV09gxGl9TPzm5bkSYIGzixlBhx8dyUIlpR81FG6sxhO/i55cheYPBfs1rJEs6rPjJR7a1b/YA7JI78dDb0RnZGZhAWo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742938297; c=relaxed/simple; bh=xlPpYZxrEbdhDjnqvstKIsnHGp/r5OK/PMGvKLA+6FQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RQAD4Z8IAQdjBClwOWIdKaJsf6DV1PdGjKxXnbdT8O0kUc2x0ByUCH734yq/FX6gGNGA0xGrTH8e0dAi3oy0rD0m8RmXa/MT7nJIpZucOyZPP/+ijMpQrq6a7zFsaBLKWyGS4WLPIHxFnx61HU0z2BdcM0WGPiarXZLUiB1Eh3U= 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=p4VX3kb1; 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="p4VX3kb1" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52PGbRAu019493 for ; Tue, 25 Mar 2025 21:31:34 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=GemHHJ12Mto TyleGrTYWRbYILqu0SN/GN7NcVJJQTCM=; b=p4VX3kb1Xu1uSS/gaD+Ty6Ar7RG Lw2tpl9lopNAsn0vJvjoFLnzEyqD2lgZ9c3O8TcqISvtCRHMY8G/CU9tz6nfzpN7 qpnRKW3BdHBo75VOmDq2/u2gY7ixnhpsfpq23fbu3PM/8XzXH8tZmf/oLVdyRhpK mEJv8PimiV3buaWXWbshOYODhJml7acITS0aD5dm2VxScXMLw+ZELLrTgPpL3VmA CorgIE3L46Yk9XhHxWAszIKYI/+TV9B+Y0xLzRtWMuJJnek8bjebGH8jqDLLdrQM f7STwp67qRD3M3mXM0cDrrkyEgZ2Wm0AzFYlqL8DOGQFlXvx1LFylUvfKlA== 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 45kyr9gqd0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 25 Mar 2025 21:31:34 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-224347aef79so153249945ad.2 for ; Tue, 25 Mar 2025 14:31:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742938293; x=1743543093; 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=GemHHJ12MtoTyleGrTYWRbYILqu0SN/GN7NcVJJQTCM=; b=KrjWO0fiSnwO1TCRiipk1yjC4uwqem0H4AQLC0nSTlhjVSZEXC8YHqI1u2iBOip5gM wzYAS2ZjEMLZLlkoBltNpi8h0oDCAmb01PC9uRv4tpbQDjgxBwSJx2eCVZ8zt7DSWsVg xCYK2Bi2n1QhWwO0aJmyUk0E4exWCsIBVTWxEVfluR1kKQAATNBpjGOWMfpESJSATR+U kuSCxVZP+im6cUl7cYh47NIGXIRqNhm+MJbuHAaaqyWnBEj8bVsPFDZL0nf2J6MJL9Hq livP/f4O/BAWxLwPAHF84Oq1rU8G7gCmJn/JhEJU6bmLKL6KmzQHOte8EdO3SvYhdmEN /Glg== X-Gm-Message-State: AOJu0YyxLd6fQNc9aIRuK0wRsdq5NQhB9yAq9nFt6KqfbPC8phS1eezx vf0EvEG4D9UTiroSn5wkyLqwTcxn16eRhGS5hpxsxqVHczSsiZOgBiR/LbNGM1DJhrDnrdRwP6S 3AO1/j5wmLpFLyv1UWiJxmtKBrPX4t5JqUdMUkvaK+WYp78HhP2uYcKZ3FSZLTUF2HiRS6xr3Mg == X-Gm-Gg: ASbGncsK4xjQEj8UuvEDWiQHyH4AGMWdfxBYfqEt62Bbv1NlpGk/flUoxHlI8Uw6bbc 4kOXIZ/NawSTqwKMP4xAJVkYHUHVxkDIJn/KFw7k8UGhdzLXHtiNo4tudkF03fkHA5yhttbuNfW RwX7qW2Z9y65NflYT2bY/eS+8yZUrKHqTzaXi5Ap7XMyo7dx5tPhj6ILmaGu6zoDOyPE7YYQkyo jCOd4aUw3LYx4oB5HdlHZGyKQeHdjOYbDkS3HH/NA8uHtrVZll7Gi85IcHLW9LnmmA0Y+uAU2Z7 licyrlK6hNOUnKQpcTlWZTaQXCnzjOTrkapmMSb4cZPWYTgnTp9ihfzmGiU925AJSDwZuau+ X-Received: by 2002:a17:903:32ce:b0:223:6455:8752 with SMTP id d9443c01a7336-22780e17fabmr284959935ad.43.1742938292506; Tue, 25 Mar 2025 14:31:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFCBfydGL+W11JGyBDl6WakpyBds87VBOs0GA+1mhiZAMHTqv5Y8fEM4znvzdzjlsMYI9AjuQ== X-Received: by 2002:a17:903:32ce:b0:223:6455:8752 with SMTP id d9443c01a7336-22780e17fabmr284959525ad.43.1742938291972; Tue, 25 Mar 2025 14:31:31 -0700 (PDT) Received: from msinada-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22780f3a2b5sm95599395ad.50.2025.03.25.14.31.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Mar 2025 14:31:31 -0700 (PDT) From: Muna Sinada To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Muna Sinada Subject: [PATCH wireless-next v4 2/3] wifi: mac80211: Create separate links for VLAN interfaces Date: Tue, 25 Mar 2025 14:31:24 -0700 Message-Id: <20250325213125.1509362-3-muna.sinada@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250325213125.1509362-1-muna.sinada@oss.qualcomm.com> References: <20250325213125.1509362-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: 9VRmLumWeHquE8ZxEBRr8k9LNvRHfp94 X-Authority-Analysis: v=2.4 cv=UblRSLSN c=1 sm=1 tr=0 ts=67e320b6 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=Vs1iUdzkB0EA:10 a=EUspDBNiAAAA:8 a=3cN5iMaFtk8YwWzRkEUA:9 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-ORIG-GUID: 9VRmLumWeHquE8ZxEBRr8k9LNvRHfp94 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-25_09,2025-03-25_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 phishscore=0 mlxscore=0 impostorscore=0 adultscore=0 clxscore=1015 mlxlogscore=999 bulkscore=0 malwarescore=0 spamscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2503250143 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 --- v4: Utilize new link iteration macro v3: rebase to cleanly apply to wireless-next 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 | 12 ++++- net/mac80211/link.c | 90 ++++++++++++++++++++++++++++++++++++-- 4 files changed, 103 insertions(+), 5 deletions(-) diff --git a/net/mac80211/chan.c b/net/mac80211/chan.c index c3bfac58151f..3aaf5abf1acc 100644 --- a/net/mac80211/chan.c +++ b/net/mac80211/chan.c @@ -2131,6 +2131,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 c956072e0d77..e0b44dbebe00 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -2087,6 +2087,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 b0423046028c..9ab64eb4379e 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c @@ -485,6 +485,9 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, bool going_do case NL80211_IFTYPE_MONITOR: list_del_rcu(&sdata->u.mntr.list); break; + case NL80211_IFTYPE_AP_VLAN: + ieee80211_apvlan_link_clear(sdata); + break; default: break; } @@ -1265,6 +1268,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: @@ -1321,7 +1326,12 @@ 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; + + for_each_link_data(sdata, link) { + ieee80211_link_vlan_copy_chanctx(link); + } + 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 Tue Mar 25 21:31:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muna Sinada X-Patchwork-Id: 876307 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 DA8B7193086 for ; Tue, 25 Mar 2025 21:31:36 +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=1742938298; cv=none; b=k8RBrFkZKYUo6Dsj6lqLVmtZ3uPErJkSq1SXb5dUky1eG5A59s09yEKDz11HMQ2mFtkC+QNkRTTrGks3msZbM317zFJKQlwd4rSzZGk+qkfeAOZXdCXgJ8bsROaVf2kfL8hAWGGQ8vCpZr1BMK57BXXQtrS21ALl17iGROGD6uw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742938298; c=relaxed/simple; bh=RTJ+5RqOkAqF3/agsOaoLpdHmhoRqCSit92HFwq+jwY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UTAq9GXrpg1osXnQ7uKbc2MVMn+PkG95x9vwAI+7yolpmIZatZNqQANYC7+0pu7acW7n9vzLCdONFZz0yIh2O4quzAgdRa1cTkkIKFZu4YdCoP6TY4mI4LWnASi4xhdzJZ4DDXSJotm5N3PHXB3VsUSmruOkZwmiOOCkrBDBPqI= 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=Jh2O2weH; 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="Jh2O2weH" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52PGalJY018592 for ; Tue, 25 Mar 2025 21:31:35 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=DW3U8ZPosBK VswDi6IctAB4+vmf1gyaDynADSK+zG4g=; b=Jh2O2weH77Kl/xnTa1mZw9l4ICl /a24OYI+u7gEtoxT9VqwYWZNtPbye1aFzgBT/fILCbBy5nugHLAuMNX5uCgbR656 YpJ0zNzV3mq7lfGZmAMM7FvLjywVNIFqmfohMrfNezv9vHlzNHLSYjhWwlAgzzsb uvdzFqKbc0XNm30EY2w1JY+rJ9ckNLDe8pSy/Vda8mXCEy7Ch7iXX5ryTpulxPIM G1WDsdKJGBjZtAwnty1PZ083AxES+pfpYOIRWUNJKg0z0i7X/VWvdoZWGnsD2tRV vDbk3dokaBa2KXkJ+3NaxxfXpVo/Xc2qoLc9TgzrHVX721NGQ9Grqt4tx+w== 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 45kyr9gqd2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 25 Mar 2025 21:31:35 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2240a960f9cso100151385ad.0 for ; Tue, 25 Mar 2025 14:31:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742938294; x=1743543094; 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=DW3U8ZPosBKVswDi6IctAB4+vmf1gyaDynADSK+zG4g=; b=Hn0oJIsTWmODSxhnn75xadNdlp8pOEDPbMRMD7e2d7SrbHAMcq48ePPBQ8ZoN86w78 +UX1KiXEDNls5EwKCiZgnA5XDo5pezhymHgKu16uisUJlmZqP0ZoOqOlQuYsy9y2B2iZ WEDuEUs9vlCMzqWmR7CRqKHODnZp7m15+OEbMDSbvgje8S3KA+Ls68s4YmZYqB4WDOQA FMfb8H6pIxYtNoSZ3rH8Qpuk3fZk7hojVCo4WbS/QsINTgNu04KJoydmO+2C1tjKcyvC +aHoY86QSwNPat3/1XfEDU4gzn76iW6fpzuKgWID/rcm5X3faud/TQqbviBYVpQeVSGa JNiQ== X-Gm-Message-State: AOJu0YxUMbWmEGmxRI7gr2WOkBu8Xmxw2PEk9UdHYOefDnVnyPho8rF4 G6AvFmgwjqN2FdFG3LwygF6H/Ko+gUJuKb+jEpYj/6Yjdn8YlAUIfbadOku9O1xm+CoR/wwf9jv thtQEHvTYPBsqIKH60HrZQ3Ftm3/yvfUeKeObYrHMPWtUA2wwJZs+Fhbqxcm00etUuQ== X-Gm-Gg: ASbGnctCJ9UuBG8Z/vfOW7jnVsmcog3A8+MB88adfiRDDRLMMLVyURILu3dNUj1ZDOf YIBl+z01LRNTO6icaJojTPhkRyPVcwibC94k9B0aOUPFl6xOicC2t01YXKMz+/3AAsQrNfdaBi8 07nK2+PVdLumWVFDoUOVPVYnUGG5MKb+qGN6QrD12FD5lisB7Q3Ktn+vrXXDdZkO2vkCUVSUqtQ rtIrKs7nwzs1R4lZHqr2U1CRurqh0D88EDFFh0hknYPDEH3RpPkH/P+lAZvCFI6zhzLqpMLb9wM en5FdnHnUe9XIiEEZwB9ndSkjs/G+fKSksqqHm1gZeP0u4cA8WETKN5fyKXvNvOO95DwvBEa X-Received: by 2002:a17:903:22c4:b0:224:e33:889b with SMTP id d9443c01a7336-22780c7abb5mr286217295ad.12.1742938294121; Tue, 25 Mar 2025 14:31:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFLa4bLdwOuXt39O3e4bc3TVtKi3CpdJrVsmyJn87VqQVVzbSAMbEUAvHkf25U9rwS1DFS9Nw== X-Received: by 2002:a17:903:22c4:b0:224:e33:889b with SMTP id d9443c01a7336-22780c7abb5mr286216785ad.12.1742938293605; Tue, 25 Mar 2025 14:31:33 -0700 (PDT) Received: from msinada-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22780f3a2b5sm95599395ad.50.2025.03.25.14.31.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Mar 2025 14:31:33 -0700 (PDT) From: Muna Sinada To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Muna Sinada Subject: [PATCH wireless-next v4 3/3] wifi: mac80211: VLAN traffic in multicast path Date: Tue, 25 Mar 2025 14:31:25 -0700 Message-Id: <20250325213125.1509362-4-muna.sinada@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250325213125.1509362-1-muna.sinada@oss.qualcomm.com> References: <20250325213125.1509362-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: ejxpznenfzYoKDYM0qic330roWEhvtee X-Authority-Analysis: v=2.4 cv=UblRSLSN c=1 sm=1 tr=0 ts=67e320b7 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-ORIG-GUID: ejxpznenfzYoKDYM0qic330roWEhvtee 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-25_09,2025-03-25_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 phishscore=0 mlxscore=0 impostorscore=0 adultscore=0 clxscore=1015 mlxlogscore=963 bulkscore=0 malwarescore=0 spamscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2503250143 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 --- v4: no changes v3: rebase to cleanly apply to wireless-next 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/tx.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 20179db88c4a..b6d6d0658e14 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c @@ -4526,8 +4526,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: