From nobody Sun Jun 14 02:34:41 2026 Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EE4FD3DD519 for ; Mon, 4 May 2026 13:58:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777903101; cv=none; b=JHuBjKxBgkT4vUK3NsCKfps7DV0ySH/CXTctG/AHsOUWFiJC1wGIzmBfnCrZ4oK8RiVjCDb9WToS+xnYvlZZGJnvTFjiwHuEEXWZFaC7ihwZH08bNo6pvzAo1USX7SzzePElkOIusqdolqhyTjUtRFmPZhr3zDfRbCySm5XP+PY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777903101; c=relaxed/simple; bh=q7tI3n4SWOo3NDQnNZRJsS/zndwtGxYY9hjK8ioYRIU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=G1V2vfnlVymgebZnTIjZMSEQ5/P9YrjphmxYdPjTigf15BPTRmNQbcPfuq24gR9nTuexrFOcjIiybI4pTyGKpsdZ5uDYhNw1Fg+cIBQzc1/VW1x+bezNBWSCGclEGAnFokb18h90tIXV21tiNGQZtxz8JOsMLVFd+owAxnE2c+c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=sXSfyOB2; arc=none smtp.client-ip=209.85.222.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="sXSfyOB2" Received: by mail-qk1-f171.google.com with SMTP id af79cd13be357-8cbc593a67aso369752785a.2 for ; Mon, 04 May 2026 06:58:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777903099; x=1778507899; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SisvOL+tJ31Sva3YbBAzenwkJNsUltz/h4VPNt+Yuf0=; b=sXSfyOB2+WgyMSi3PZhhjGgGWjWmFagPYHYL4z9u4N95wU38jd3+eoE/WM0y8FwAZH uWdGP53hKAx7omVANJ+Aw3NKnwc0GhroaWjlvbn7h8zdFFnKywN6dFPbjioLFhLPEy9O 1C/DHOhy/CUvUGF86iI+JXWxblR1/vcFSs4w+84CEil5ZMgEZJiPry3mtdM8rY+8eFF5 ogg3eQwo6lIjy1uR3SmRkh3a+fM3SNiBqpSc5m7W8B2huM7rAAAXgL3JaA7FZBpxi2// ywishCXtyKmY6hTtI+a0X0l+w6Wz87/HDJTPBgGcWAx3pjBTfadbC45NTHa2G8z4xscK Z4cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777903099; x=1778507899; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=SisvOL+tJ31Sva3YbBAzenwkJNsUltz/h4VPNt+Yuf0=; b=IfoHjnyMTUFjp9MCfBIZF6Q+QTuCJaGcLZzSkOTn8LEWZMwJtUtkAjxXdBzlTe7cGW qzxyCpZG2IwDN3ia76llGiQIOD+/10IAj5PX4K44bnT4HNuFhS5vUptx1l9mx5yGyIta 3gF+7Us2ejwQOyWETzSbsnMqm+25KF3ahL1sZQh4DLhnA0D3tOVHBlFK51/giAs1umSo zdhlL04lYjguXA48JSVfaSzy8LAhgYqN1ntTwqrWtNMGkM86MFxWRTrQOmcomK2s3iCp 3itiVwkpGsL7wWInEYmjACveDKwous2nQ8gLpeykwbxpYxPIcFiIO4JwdR4iujRzv6FW G4PQ== X-Forwarded-Encrypted: i=1; AFNElJ/NVXNn4Y/vNPeymO2AQOKMgSRaujhxBOLW4vAOCpRmaaMDYjCWm9jw90o7Eq495nktab6C3wP3ERpJv9E=@vger.kernel.org X-Gm-Message-State: AOJu0Yw5rkvFwwy0rKe49xg5Aw0R9W5buEKSX2hj8wAX9GlXkJhaxric VQWW5FZNxSMSMEuN3cIEUTc9JMAUT34J1SYLg0AAh0vjusrm5bxvNYsQ X-Gm-Gg: AeBDievhMnsSpf/ARsjlFsTY0NhfNnX1vGKvUj2BIpJn6bw9T+/IHZBtQLxY28NKyeG sjb6gwG0SlrkcDKltqlf38B1PBn73/NJUx3aykK4dRtjgjj3yhyc6twgJogFrkK/kMzgIlpJAE8 nG+mfgv4ax2yHAow4wsRoiHeKgM0KUJy1hvcU9AWgxBL03eYGnlV7O8obifGnd7BiMgsskEJ+X2 6Q5vsAu7h9wxDlNfkRVOQxShHWKcHR/79IPVGz/yeGIQF90OqVK1XZ5UzIar+nOXU3Ir0V8AzZ/ xxVws8s8c9ocL3eUUFIfp8edECtEQz7T8pKdw0efRVrAB1SO34dd0uFDMS22JoilThyiE5kxD8o 43b11kcWmeFlAk3G+jVXZlLt35Fad69xWN/0xlnH/asGCxoHry2xzBVET3sYQ0u+BAc8aGX4GlT OjtgQ/6TvYI+ICzaEPSrZNeCMqvd1mNrR8lyVn84ATEXSRVXchkkN1dwy5tD5pwTQBPK3TlQL74 pIwpQ== X-Received: by 2002:a05:620a:489b:b0:8cf:d441:c7bd with SMTP id af79cd13be357-8fd178677b8mr1463526185a.38.1777903098759; Mon, 04 May 2026 06:58:18 -0700 (PDT) Received: from PF5YBGDS.localdomain ([163.114.130.7]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8fc2c91cd89sm1062878585a.35.2026.05.04.06.58.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 May 2026 06:58:18 -0700 (PDT) From: mike.marciniszyn@gmail.com To: Alexander Duyck , Jakub Kicinski , kernel-team@meta.com, Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , Heiner Kallweit , Russell King , Jacob Keller , Mohsin Bashir , Simon Horman , Lee Trager , Andrew Lunn Cc: mike.marciniszyn@gmail.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v3 1/4] net: eth: fbnic: Fix addr validation in pcs write Date: Mon, 4 May 2026 09:58:12 -0400 Message-ID: <20260504135815.44226-2-mike.marciniszyn@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260504135815.44226-1-mike.marciniszyn@gmail.com> References: <20260504135815.44226-1-mike.marciniszyn@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Mike Marciniszyn (Meta)" The DW IP has two distinct PCS address ranges cooresponding to the C45 PCS registers. The shim translates the PCS addr/regno into specific CSR writes into one of those two zero-relative. This patch fixes a one off in the test that could allow an invalid CSR write if an addr =3D=3D 2 was called. This patch contains a fix for addr validation in fbnic_mdio_write_pcs() to only return actual CSR reads for addr 0 and 1. There are as of yet, no real impact for the bug as no PCS writes are not yet present. Signed-off-by: Mike Marciniszyn (Meta) --- v3: - put back into the series based on https://lore.kernel.org/all/9ec11642-= 8035-419c-a896-52f902020bb8@lunn.ch/ - revised commit message will additional details v2: - omitted from patch series v1: https://lore.kernel.org/all/20260428172810.175077-2-mike.marciniszyn@gm= ail.com/ drivers/net/ethernet/meta/fbnic/fbnic_mdio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_mdio.c b/drivers/net/eth= ernet/meta/fbnic/fbnic_mdio.c index 709041f7fc43..d6a124889f52 100644 --- a/drivers/net/ethernet/meta/fbnic/fbnic_mdio.c +++ b/drivers/net/ethernet/meta/fbnic/fbnic_mdio.c @@ -125,7 +125,7 @@ fbnic_mdio_write_pcs(struct fbnic_dev *fbd, int addr, i= nt regnum, u16 val) addr, regnum, val); =20 /* Allow access to both halves of PCS for 50R2 config */ - if (addr > 2) + if (addr >=3D 2) return; =20 /* Skip write for reserved registers */ --=20 2.43.0 From nobody Sun Jun 14 02:34:41 2026 Received: from mail-qk1-f179.google.com (mail-qk1-f179.google.com [209.85.222.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AD1B83DDDD6 for ; Mon, 4 May 2026 13:58:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777903103; cv=none; b=jPYhSSBWGIlsHZiTSfGhwO4IEA4Phie6PSsrvIt7xuASZSOyD+OYXFHgqTBFCYG3+qQ09FRZ2SBCUGJjsLXCKIDbX+YeUgLFFqQsBZrPHirJ3oRlipGLtFl/3wCJlAJJFCASnaLpLRZJTw+5AG1Q4AcWRW4FqoAMYhDnq4MLG9g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777903103; c=relaxed/simple; bh=zQP8odavyv/r1PaNAVRRd+rSYxP8yZJJFzPjfrZtPAk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RVNNApRxNtC2sE7POfTHqSLzkdUiCR7Dbo8fuLUGHMC0vqz/mNFeaUQI6tqGeNGMzW+5PeIl978jYa+mLVM0mRhAueOGgWROQgOJqjXij6Cbtcsycsco1PE+BfnT/yT5oXMN8paPXjAA2D5TpqRP99WGjnG3LBERzx03FllgzCI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NE3hD8wx; arc=none smtp.client-ip=209.85.222.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NE3hD8wx" Received: by mail-qk1-f179.google.com with SMTP id af79cd13be357-8ee63e91acfso313993085a.2 for ; Mon, 04 May 2026 06:58:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777903101; x=1778507901; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=r323mEYZ+RPIpmsRGgRnwpYWGnkGIyjDWiXj2+LZkxk=; b=NE3hD8wxJOrjJh/GJIY84Io/FpnIQuLCQAhbfxMwhihumtR+hi5PepRQO/hQOpGPpf COsEYy2wgsxGQzKv3By7tWZQjnDWm9RZxOsuP/SWn7xIQOoXZ1RLMj7pwr+dzc91Qcru BCwA/oJVIKZoT0Mtk3DSmyLlftFS7xm/14F3Yg1hgQkFszMqMLm7A/8CDVMd4iJ2rjCQ /KPngR7LpZQi5vXDsyIUeGUKigynILhEUPIDx5Fdcxr6lB8JE9O+843QOKA3ljm/0tnT +w0eTMy6XbNzPwBQac5Vx8rNYU4K+NxWGAcQ6xgayLffwx2LfhZNwDx9JxWet337ertK GA1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777903101; x=1778507901; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=r323mEYZ+RPIpmsRGgRnwpYWGnkGIyjDWiXj2+LZkxk=; b=EZdisSuc1Jm5JRRSXxn/4nkCRkwinLfbz6wgVbjaz2X/8B413AjhPO9P5A1rE2LW5I 5qqnxC6MRgMgW5rpRXFBL0+B6M3YGjC0mK/kYu3isLzx/suWctPAocbpjtWdMx4kOwgY 5RxbRh7U7AXnWS14A12QWIqT5ZpQjdh0ZQei3Xk7+mmSgEu7s35EZQmbYCP/paPw0dgt W5LmG4ffI6XSSJ5ok9BHP2VKRJ1B6iqeNx5aGwSqVVtq9zdp3VN/8nIYtJCtaweWDAwX wRguQ2k582gFvTwr82hCUCgqDASXzL0xJNbnN2TknL3c7sDVAwp2gft7NRYuV2yTCZo8 W77A== X-Forwarded-Encrypted: i=1; AFNElJ+HK5YWM04a9c6E+zfzqH+ypilsMly6+v5d/JW9E+xnKR2HW/QUIGlXXPAOuPSol4L8mIS0quYX0vD6Wz0=@vger.kernel.org X-Gm-Message-State: AOJu0YwH4XSQFmDbW+imsLxTovJCZCFM/TFjqPYugvgd+flXJKMjWOCs 2vG7yJgvQHE2sFuWGL4NNRcdD5GvS7kJtgP/ow/J1aVumuwd6juLyM0E X-Gm-Gg: AeBDieveV/jpDdE5UbAahkQWiX8KA4OcWl2O2qfL31RBjL+EULyYjZxNCSrviGnSwLk ybSilS4kcxWUMKsRokf43cZqDFuyKMMdzRrYZ83uev6YEHke19PPAhis7ToM6jfMJPWlu3b9bj2 l5QVW0Q0yzgfYUVKTSvof+tocQAKRnWcq8L9bfJzWDF3kw7idPD3A/4Zny4AO4CkULdeGhrIPiL OnBvHZjP80q3QDsu12FV623d5OLqh8sp/FOdsRiR6LEaJZhQlMJfX0tOIRnmi/vgsZY57occgYQ f2Fei2EkMsVeuosnePmK1T5hCyGxCWHPGku+k9USLMcHoj39rIEdW0wMnJ+Th5RgBvf80JIA4IB HhpSN4dvyZKYW5NmQtcQAEYeGFrinf7TUgpRu4vYiFKkgvikgnndYW6Pf3BG2Nx+lT26NASGhUC FMiiBi/suN7dt++G0+zaKgaZBMj9y8ttyf/uzPjPmgbxwfaLTK8VDcc8XJ3oCcDDZUFHs= X-Received: by 2002:a05:620a:4054:b0:8d1:d0db:392e with SMTP id af79cd13be357-8fd18137d02mr1499591185a.32.1777903100476; Mon, 04 May 2026 06:58:20 -0700 (PDT) Received: from PF5YBGDS.localdomain ([163.114.130.7]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8fc2c91cd89sm1062878585a.35.2026.05.04.06.58.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 May 2026 06:58:19 -0700 (PDT) From: mike.marciniszyn@gmail.com To: Alexander Duyck , Jakub Kicinski , kernel-team@meta.com, Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , Heiner Kallweit , Russell King , Jacob Keller , Mohsin Bashir , Simon Horman , Lee Trager , Andrew Lunn Cc: mike.marciniszyn@gmail.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v3 2/4] net: mdio: Add support for RSFEC Control register for PMA Date: Mon, 4 May 2026 09:58:13 -0400 Message-ID: <20260504135815.44226-3-mike.marciniszyn@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260504135815.44226-1-mike.marciniszyn@gmail.com> References: <20260504135815.44226-1-mike.marciniszyn@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Mike Marciniszyn (Meta)" Add the constants associated with RS-FEC configuration and status as well as the indicated separated bits for DEVS1 to convey a separated PMA. Reviewed-by: Andrew Lunn Signed-off-by: Mike Marciniszyn (Meta) --- v3: - no changes v2:https://lore.kernel.org/all/20260430150802.3521-2-mike.marciniszyn@gmail= .com/ - Added Reviewed-by v1: https://lore.kernel.org/all/20260428172810.175077-3-mike.marciniszyn@gm= ail.com/ - initial revision include/uapi/linux/mdio.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/uapi/linux/mdio.h b/include/uapi/linux/mdio.h index 8d769f100de6..b2541c948fc1 100644 --- a/include/uapi/linux/mdio.h +++ b/include/uapi/linux/mdio.h @@ -23,6 +23,10 @@ #define MDIO_MMD_DTEXS 5 /* DTE Extender Sublayer */ #define MDIO_MMD_TC 6 /* Transmission Convergence */ #define MDIO_MMD_AN 7 /* Auto-Negotiation */ +#define MDIO_MMD_SEP_PMA1 8 /* Separated PMA (1) */ +#define MDIO_MMD_SEP_PMA2 9 /* Separated PMA (2) */ +#define MDIO_MMD_SEP_PMA3 10 /* Separated PMA (3) */ +#define MDIO_MMD_SEP_PMA4 11 /* Separated PMA (4) */ #define MDIO_MMD_POWER_UNIT 13 /* PHY Power Unit */ #define MDIO_MMD_C22EXT 29 /* Clause 22 extension */ #define MDIO_MMD_VEND1 30 /* Vendor specific 1 */ @@ -63,6 +67,8 @@ * Lanes B-D are numbered 134-136. */ #define MDIO_PMA_10GBR_FSRT_CSR 147 /* 10GBASE-R fast retrain status and c= ontrol */ #define MDIO_PMA_10GBR_FECABLE 170 /* 10GBASE-R FEC ability */ +#define MDIO_PMA_RSFEC_CTRL 200 /* RSFEC control */ +#define MDIO_PMA_RSFEC_LANE_MAP 206 /* RSFEC lane mapping */ #define MDIO_PCS_10GBX_STAT1 24 /* 10GBASE-X PCS status 1 */ #define MDIO_PCS_10GBRT_STAT1 32 /* 10GBASE-R/-T PCS status 1 */ #define MDIO_PCS_10GBRT_STAT2 33 /* 10GBASE-R/-T PCS status 2 */ @@ -175,6 +181,10 @@ #define MDIO_DEVS_DTEXS MDIO_DEVS_PRESENT(MDIO_MMD_DTEXS) #define MDIO_DEVS_TC MDIO_DEVS_PRESENT(MDIO_MMD_TC) #define MDIO_DEVS_AN MDIO_DEVS_PRESENT(MDIO_MMD_AN) +#define MDIO_DEVS_SEP_PMA1 MDIO_DEVS_PRESENT(MDIO_MMD_SEP_PMA1) +#define MDIO_DEVS_SEP_PMA2 MDIO_DEVS_PRESENT(MDIO_MMD_SEP_PMA2) +#define MDIO_DEVS_SEP_PMA3 MDIO_DEVS_PRESENT(MDIO_MMD_SEP_PMA3) +#define MDIO_DEVS_SEP_PMA4 MDIO_DEVS_PRESENT(MDIO_MMD_SEP_PMA4) #define MDIO_DEVS_C22EXT MDIO_DEVS_PRESENT(MDIO_MMD_C22EXT) #define MDIO_DEVS_VEND1 MDIO_DEVS_PRESENT(MDIO_MMD_VEND1) #define MDIO_DEVS_VEND2 MDIO_DEVS_PRESENT(MDIO_MMD_VEND2) --=20 2.43.0 From nobody Sun Jun 14 02:34:41 2026 Received: from mail-qk1-f182.google.com (mail-qk1-f182.google.com [209.85.222.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0E0673DE422 for ; Mon, 4 May 2026 13:58:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777903105; cv=none; b=RofB0jHokFaNX325z06cIqkjikBzULHLnQu6rsiG8z2wgU6aeFktgkRqUjRBoScOkNLzh/gyB3dgEy35W0wICAw1x+zRGy8D9et2Z+3gSXOGkyHnCzsK4QgooZQzVBZUJNHBzjoyY2/x0eYOWHU4N+0TmOhg28L/lNJdXj1Y0UE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777903105; c=relaxed/simple; bh=5MH+eiieYN8/gZNZRVkYIpI14qODtezNFPLW5Q9sLK8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RvZQdyBsl/+j0hZVhqLiuYfZVSiZtXnu0zAZ/A5Q6ZQjaJ9uuSQTc67o1tgFOf6IdAx+njyCZgsA9FF/1VZ1V1kxfocduI3bKQ/TikZh6a9IitmUFH6fJbNSqCdKx35jYJmLrE2c524lVF3syNV0nv2b69Na9jjBK1fvkrnfgCY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=W55+T4x1; arc=none smtp.client-ip=209.85.222.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="W55+T4x1" Received: by mail-qk1-f182.google.com with SMTP id af79cd13be357-8c70b5594f4so438306585a.1 for ; Mon, 04 May 2026 06:58:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777903102; x=1778507902; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DhxLbT8/zsSgwq5f8w11BHu+0+FsfNH5LorDR212ejI=; b=W55+T4x164nVgHVpBJOHAHkGM5RIwYarNMo4i9/RpEsPwfYhAwRxzf2zs/n6OVeWl3 6Fjg4Cd60LQvE4yk6bl8goW333hvkmedNzd5NZ3cmFeHIUX2jMKLv4itpUni1U8O84SS BWj6/kM1c0m7VxmxQ6FXB0FZlGV+L/1n5w2wWlm1rdW8JeOIbcMqy1q/nnUJ2jq1wjKM 16rZMXgHOShwuNohTNYdZEnwWdBCIhwGf2Xtyb87JHoGXs+OByqVsUn5Yg80dg8Mvu61 mdRwAM5iU0tkfQEIKzFeq+Emoc8e0v2X1rKHQ5Wz/ch4mDavZD/7alaOtn9g0vaiZYNn 3hoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777903102; x=1778507902; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=DhxLbT8/zsSgwq5f8w11BHu+0+FsfNH5LorDR212ejI=; b=OCEy/iH9nbqk9NaWP0yDjIhU5SH4a4QYbzVbX+z4CEaZ4rDxY/DrSf9Uww/eu5IkPr 7hD/3b0+pXjN/SuqkzvUP5JoIMBE596tg3G4uRF7PiVk3wJUmGgUam0PHOQpa6aSg/py 8SxgSkBmBh36tYUNtMJJd67h8fY4WzujPvCpLcJpUrvZmXt5J172Tm4lDdQMrStph5U8 QalWEIhw9MTQxzhgRFwHDfQJOyt6gEp6NQviZ3o/OpeuneLJsICNXYGGqAgWHIXz5WEb rfSV7HrkNTObkP1wYY/3nynP3+f+6WZnyLOJrTn0btCVoMdnmDQIsgRX6H+d4rntWf0m CYWw== X-Forwarded-Encrypted: i=1; AFNElJ9ZITYjBkJ+lKhDRybGBr0vO60OeagzWsZE1By8pogRYJZ9OJiGRiYiL72FMhyOMLiRF7p7Qs/Kv3ZrGGU=@vger.kernel.org X-Gm-Message-State: AOJu0Yx8e32/9PbGqYRRj/l8zqG08hsA/L2WOSDvSnQRlDNt4XqQ+meo GMII4ratNjrC3ZOoK24JUJ2GYIrQN5jun5DmRHsMCJ89bZ4OLwj2/N8Q X-Gm-Gg: AeBDietG95+9y2e5UzHUXCu3DuQZqeO9zyhQxxSAbHcmYeKXJEQBd8+QdnrXUOQakSJ T1lwK5hcY3qAwMQP+xI7bkBoOv8fKv+9Fi+qeos/q2HebOWLfzyJr649uILzax3mD2hq5g89z0c XmZNoEX2+MNK9j1aHx0iB6b5mmMFPASmnJkoFEJrZUSlA4aueCRFmhvb4KxM3OLYMmpq1EUp8sL ywkpne/Msj9/EJcvpKeTSn7qWwrhdpqOOo2G3XIy5lsZyhcpdidLjXwIQg4CMRy0hjxHgBOR9ia Fy9EBwPSJ4JGzwJs5X7a0VViQztNNX/HsFTCTVc8qHkPWf/B756TlHYoxuBPcr22/mENpyX6YdR 7yrtWh1saZ3AmQ24pCpVx//K2+20nOwi7Zo9hkhXh3CTJkiSfJ/TySd56g2BLjjU/K84nqSjZVh MSYHRHmDrtMMlg8oyR7XpjjO0iyVQ/hJ17OzNxJLxMcBiEh2y4ZexwtUaWu0lockKGbQY= X-Received: by 2002:a05:620a:7113:b0:8ee:3715:212b with SMTP id af79cd13be357-8fabb1f5b74mr2183987885a.29.1777903101870; Mon, 04 May 2026 06:58:21 -0700 (PDT) Received: from PF5YBGDS.localdomain ([163.114.130.7]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8fc2c91cd89sm1062878585a.35.2026.05.04.06.58.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 May 2026 06:58:21 -0700 (PDT) From: mike.marciniszyn@gmail.com To: Alexander Duyck , Jakub Kicinski , kernel-team@meta.com, Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , Heiner Kallweit , Russell King , Jacob Keller , Mohsin Bashir , Simon Horman , Lee Trager , Andrew Lunn Cc: mike.marciniszyn@gmail.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v3 3/4] net: eth: fbnic: Consolidate register reads for ids and devs Date: Mon, 4 May 2026 09:58:14 -0400 Message-ID: <20260504135815.44226-4-mike.marciniszyn@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260504135815.44226-1-mike.marciniszyn@gmail.com> References: <20260504135815.44226-1-mike.marciniszyn@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Mike Marciniszyn (Meta)" Consolidate the register reads for boiler plate registers to reduce LOC and cleanup pcs reads for DEVS1 to fetch overrides for reserved bits that the hardware does not return. Signed-off-by: Mike Marciniszyn (Meta) --- v3: - no changes v2: https://lore.kernel.org/all/20260430150802.3521-3-mike.marciniszyn@gmai= l.com/ - Restore pcs register read for DEVS2 - read pcs DEVS1 overrides and or into return v1: https://lore.kernel.org/all/20260428172810.175077-4-mike.marciniszyn@gm= ail.com/ drivers/net/ethernet/meta/fbnic/fbnic_mdio.c | 64 ++++++++++++-------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_mdio.c b/drivers/net/eth= ernet/meta/fbnic/fbnic_mdio.c index d6a124889f52..d794f5d8d84f 100644 --- a/drivers/net/ethernet/meta/fbnic/fbnic_mdio.c +++ b/drivers/net/ethernet/meta/fbnic/fbnic_mdio.c @@ -11,6 +11,26 @@ #define FBNIC_PCS_VENDOR BIT(9) #define FBNIC_PCS_ZERO_MASK (DW_VENDOR - FBNIC_PCS_VENDOR) =20 +static int +fbnic_mdio_ids(int id, int regnum) +{ + /* return correct IDs */ + switch (regnum) { + case MDIO_DEVID1: + return id >> 16; + case MDIO_DEVID2: + return id & 0xffff; + case MDIO_DEVS1: + return MDIO_DEVS_SEP_PMA1 | MDIO_DEVS_PMAPMD | MDIO_DEVS_PCS; + case MDIO_DEVS2: + return 0; + case MDIO_STAT2: + return MDIO_STAT2_DEVPRST_VAL; + } + + return 0; +} + static int fbnic_mdio_read_pmd(struct fbnic_dev *fbd, int addr, int regnum) { @@ -29,18 +49,6 @@ fbnic_mdio_read_pmd(struct fbnic_dev *fbd, int addr, int= regnum) } =20 switch (regnum) { - case MDIO_DEVID1: - ret =3D MP_FBNIC_XPCS_PMA_100G_ID >> 16; - break; - case MDIO_DEVID2: - ret =3D MP_FBNIC_XPCS_PMA_100G_ID & 0xffff; - break; - case MDIO_DEVS1: - ret =3D MDIO_DEVS_PMAPMD | MDIO_DEVS_PCS; - break; - case MDIO_STAT2: - ret =3D MDIO_STAT2_DEVPRST_VAL; - break; case MDIO_PMA_RXDET: /* If training isn't complete default to 0 */ if (fbd->pmd_state !=3D FBNIC_PMD_SEND_DATA) @@ -51,6 +59,7 @@ fbnic_mdio_read_pmd(struct fbnic_dev *fbd, int addr, int = regnum) (MDIO_PMD_RXDET_1 / FBNIC_AUI_MODE_R2)); break; default: + ret =3D fbnic_mdio_ids(MP_FBNIC_XPCS_PMA_100G_ID, regnum); break; } =20 @@ -64,7 +73,7 @@ fbnic_mdio_read_pmd(struct fbnic_dev *fbd, int addr, int = regnum) static int fbnic_mdio_read_pcs(struct fbnic_dev *fbd, int addr, int regnum) { - int ret, offset =3D 0; + int ret, offset =3D 0, overrides =3D 0; =20 /* We will need access to both PCS instances to get config info */ if (addr >=3D 2) @@ -75,18 +84,25 @@ fbnic_mdio_read_pcs(struct fbnic_dev *fbd, int addr, in= t regnum) return 0; =20 /* Intercept and return correct ID for PCS */ - if (regnum =3D=3D MDIO_DEVID1) - return DW_XPCS_ID >> 16; - if (regnum =3D=3D MDIO_DEVID2) - return DW_XPCS_ID & 0xffff; - if (regnum =3D=3D MDIO_DEVS1) - return MDIO_DEVS_PMAPMD | MDIO_DEVS_PCS; - - /* Swap vendor page bit for FBNIC PCS vendor page bit */ - if (regnum & DW_VENDOR) - offset ^=3D DW_VENDOR | FBNIC_PCS_VENDOR; + switch (regnum) { + case MDIO_DEVID1 ... MDIO_DEVID2: + ret =3D fbnic_mdio_ids(DW_XPCS_ID, regnum); + break; + case MDIO_DEVS1: + /* DW IP returns MDIO_DEVS_SEP_PMA1, MDIO_DEVS_PMAPMD, + * and MDIO_DEVS_PCS as 0 + */ + overrides =3D fbnic_mdio_ids(DW_XPCS_ID, regnum); + fallthrough; + default: + /* Swap vendor page bit for FBNIC PCS vendor page bit */ + if (regnum & DW_VENDOR) + offset ^=3D DW_VENDOR | FBNIC_PCS_VENDOR; =20 - ret =3D fbnic_rd32(fbd, FBNIC_PCS_PAGE(addr) + (regnum ^ offset)); + ret =3D fbnic_rd32(fbd, FBNIC_PCS_PAGE(addr) + (regnum ^ offset)); + ret |=3D overrides; + break; + } =20 dev_dbg(fbd->dev, "SWMII PCS Rd: Addr: %d RegNum: %d Value: 0x%04x\n", --=20 2.43.0 From nobody Sun Jun 14 02:34:41 2026 Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D9DF3DEAFA for ; Mon, 4 May 2026 13:58:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777903110; cv=none; b=jx9RoJolPAeAho+vNVPCXnd3ni47Y2pVRXe+mjlbTrWFLw0zdMOPaST1+q4Ln/8rgwbplOEWR5sfQYPdICBgjEXbCy8nuthmysl/W+sSLjwjuIaIbxmrC2jOPtOik0CobzQpV8iNK9shWZ+QIP7Mg7s6AK424gi8BlI90ezKew0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777903110; c=relaxed/simple; bh=3pFnDC0mCujMX012oSF4vMSTWQu20p02Xga6M+J1OmA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=P0zSoDIgCVDRWiYCBKZvII3xIC6x5yAgAhyGbChWW5If8AKl7lZJuZbyJtRIk1HzYHZxQS+hp385Tk9Vv0HmctQnpdSrwrJQXsP18h1p+2B3Fcb8OMIcPX65G36WFCkZFl77RD7QLB8jVr9kGpZRT2QNPYcdfLA7UktJWF6HlcA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lt6IIFhT; arc=none smtp.client-ip=209.85.222.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lt6IIFhT" Received: by mail-qk1-f172.google.com with SMTP id af79cd13be357-8ee62a19730so448465185a.3 for ; Mon, 04 May 2026 06:58:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777903103; x=1778507903; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=L+t4PaXqbMYHZCpeonJmlbU+PizLvuoOJyIOEFPFoGA=; b=lt6IIFhTWtXLNE8HTU5KXAyZWSL5B9AlMwOpmurBBLGzMxJkBgvBvK3AvoHLEqKyWU wRwKjj1VnQA5itlaE3hRtoaiekNOGOoxwQIvLxYk7ueCW/0LIgmlVC4P7JZJ4gN2Duag uSpZ3GtWYI/QyEkB0XkCcPK+DxeSxrj+lj2xWJjC31j/CbJ9aP+XOyeoKnZlPeL/Nw5L sJH6Yw5nNvh9aY34yfawkuWWYGQNp24qIqpxgdWICYO8JqHC2bVHlTIposBc+6cZOTvP Z8kWDSi/1CMoeAmZ+GhXt9iZum92CFuPRDCfkTvoNstmhc0JiyPF33F1YuymdYGZJRLb r/FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777903103; x=1778507903; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=L+t4PaXqbMYHZCpeonJmlbU+PizLvuoOJyIOEFPFoGA=; b=oBD6bMQPB7fTMaxM+FEtKYyBOc3ifwT3rKwLRcxSrK0hUI1D9j/B8Sb92xS9RISaOg RQaH6L1euUfdd5hE2cwxYQ68+0uDJoajk6mwwfUnYkmUWZ+3mCzhTcC9t8e50MxuBzOw YaHnbaTcdzhuhQBzF3ErKtQmc0JMHiUPsGDbyqxWtULA9zmEacc3gP2+L8sQDCL6ZHNI Y518mz5DHoI2dPrFsTHWNYbs2G0al2SkIPiYgTHADBmzC+hF1t5IJSmX7tZWypL2lWnk Q6z0vZ+2tWUH+cpNaJlyXH0NUnvia/TogQcXTwCNciiL2WLa3+0g6L/fmP8H5qHsLQb/ IQJg== X-Forwarded-Encrypted: i=1; AFNElJ8tD+EsET8ZFTL6ty+GmqnYbkV8mrW+swKjm2ZpTYjVJZjkCd3A7fqARuuNwnt5piqCeXg2GedlkJj4kzU=@vger.kernel.org X-Gm-Message-State: AOJu0YwrLi8/5qVK69hrV0z1+22mNd2QdxFrg8gfs7Jnx45v7SHFauo8 Zr9gQtfebnb+tBThqf8BTalQhhBCHoSxpc4gAGKvBTqwXWVLOvU+bVLC X-Gm-Gg: AeBDiesA12F2iqSnrArzQt3R3/m2AAGar2JMg3McZyNS1+HnSAhu8UqVCIijEIlU53n RjInm8BhTxuIfMbVs8qlUhRGDLLyfrOt0ZIKHWy1+mlIgZfJSBEvgGdwtzohAaIzUKpN5yX3ZJh U1vbYGiuXjV+rBqycy4CxXsvQOGOlB/MhWAcAm6wmEUuiUtSw0UI+WDS7fjgIZBC2IK3kxfwXm/ /HWBFKOe1MWWQuvrLR/FrxEiE6sSv7c4cFcqrqbQ15T3ID50F0IzXEOLVxeuaEOKSiQp6lQlLud /CFZIf8wqE5mMJ07y4+hGip0cd8+mM7nGy9aR+DCJ0/fRSg9pXN73Gj0DxAn1+Dm9eknu5oQo3K wHLlhAG6CqfoWTsHVidsBqU9rPza0bFjQCTL242BV9IWU/Aa2WJyDEUsdSz+q1EJbHOSM2IKBH+ vnaeMq4TctU6qkELuh3337e3d+mNKQo2SksEfsyIUpSu/61kdRS+ORJUwleL+w+G+JL14= X-Received: by 2002:a05:620a:4706:b0:8f8:8860:fb8b with SMTP id af79cd13be357-8fd18633adfmr1527413985a.52.1777903103463; Mon, 04 May 2026 06:58:23 -0700 (PDT) Received: from PF5YBGDS.localdomain ([163.114.130.7]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8fc2c91cd89sm1062878585a.35.2026.05.04.06.58.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 May 2026 06:58:22 -0700 (PDT) From: mike.marciniszyn@gmail.com To: Alexander Duyck , Jakub Kicinski , kernel-team@meta.com, Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , Heiner Kallweit , Russell King , Jacob Keller , Mohsin Bashir , Simon Horman , Lee Trager , Andrew Lunn Cc: mike.marciniszyn@gmail.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v3 4/4] net: eth: fbnic: Add pma read and write access Date: Mon, 4 May 2026 09:58:15 -0400 Message-ID: <20260504135815.44226-5-mike.marciniszyn@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260504135815.44226-1-mike.marciniszyn@gmail.com> References: <20260504135815.44226-1-mike.marciniszyn@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Mike Marciniszyn (Meta)" Document the MDIO interface topology with an ASCII diagram showing the MAC, PCS (MMD 3), FEC, Separated PMA (MMD 8), and PMD (MMD 1) blocks and their interconnects. The diagram illustrates how 4 lanes connect the MAC through PCS, FEC, and PMA, then narrow to 2 lanes at the PMD. The c45 read and write routines are enhanced to support read and write of the separated PMA for the fbnic. Co-developed-by: Alexander Duyck Signed-off-by: Alexander Duyck Signed-off-by: Mike Marciniszyn (Meta) --- v2: https://lore.kernel.org/all/20260430150802.3521-4-mike.marciniszyn@gmai= l.com/ - no changes v1: https://lore.kernel.org/all/20260428172810.175077-5-mike.marciniszyn@gm= ail.com/ drivers/net/ethernet/meta/fbnic/fbnic_csr.h | 1 + drivers/net/ethernet/meta/fbnic/fbnic_mdio.c | 71 ++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_csr.h b/drivers/net/ethe= rnet/meta/fbnic/fbnic_csr.h index 81794bd326e1..64b958df7774 100644 --- a/drivers/net/ethernet/meta/fbnic/fbnic_csr.h +++ b/drivers/net/ethernet/meta/fbnic/fbnic_csr.h @@ -805,6 +805,7 @@ enum { #define FBNIC_CSR_END_PCS 0x10668 /* CSR section delimiter */ =20 #define FBNIC_CSR_START_RSFEC 0x10800 /* CSR section delimiter */ +#define FBNIC_RSFEC_CONTROL(n) (0x10800 + 8 * (n)) /* 0x42000 + 32*n */ =20 /* We have 4 RSFEC engines present in our part, however we are only using = 1. * As such only CCW(0) and NCCW(0) will never be non-zero and the other diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_mdio.c b/drivers/net/eth= ernet/meta/fbnic/fbnic_mdio.c index d794f5d8d84f..fe3a4ce88413 100644 --- a/drivers/net/ethernet/meta/fbnic/fbnic_mdio.c +++ b/drivers/net/ethernet/meta/fbnic/fbnic_mdio.c @@ -7,6 +7,25 @@ #include "fbnic.h" #include "fbnic_netdev.h" =20 +/* fbnic MDIO Interface Layout + * + * +-------------------+ + * | MAC | + * +-------------------+ + * | | | | <-- 25GMII, 50GMII, or CGMII + * +-------------------+ + * MMD 3 | PCS | + * +-------------------+ + * | FEC | + * +-------------------+ + * MMD 8 | Separated PMA | + * +-------------------+ + * | | <-- PMD Service Interface + * +-------------------+ + * MMD 1 | PMD | + * +-------------------+ + */ + #define DW_VENDOR BIT(15) #define FBNIC_PCS_VENDOR BIT(9) #define FBNIC_PCS_ZERO_MASK (DW_VENDOR - FBNIC_PCS_VENDOR) @@ -111,6 +130,32 @@ fbnic_mdio_read_pcs(struct fbnic_dev *fbd, int addr, i= nt regnum) return ret; } =20 +static int +fbnic_mdio_read_pma(struct fbnic_dev *fbd, int addr, int regnum) +{ + int ret =3D 0; + + /* We will need access to both PMA instances to get config info */ + if (addr >=3D 2) + return 0; + + switch (regnum) { + case MDIO_PMA_RSFEC_CTRL ... MDIO_PMA_RSFEC_LANE_MAP: + ret =3D fbnic_rd32(fbd, FBNIC_RSFEC_CONTROL(addr) + + regnum - MDIO_PMA_RSFEC_CTRL); + break; + default: + ret =3D fbnic_mdio_ids(MP_FBNIC_XPCS_PMA_100G_ID, regnum); + break; + } + + dev_dbg(fbd->dev, + "SWMII PMA Rd: Addr: %d RegNum: %d Value: 0x%04x\n", + addr, regnum, ret); + + return ret; +} + static int fbnic_mdio_read_c45(struct mii_bus *bus, int addr, int devnum, int regnum) { @@ -122,6 +167,9 @@ fbnic_mdio_read_c45(struct mii_bus *bus, int addr, int = devnum, int regnum) if (devnum =3D=3D MDIO_MMD_PCS) return fbnic_mdio_read_pcs(fbd, addr, regnum); =20 + if (devnum =3D=3D MDIO_MMD_SEP_PMA1) + return fbnic_mdio_read_pma(fbd, addr, regnum); + return 0; } =20 @@ -155,6 +203,26 @@ fbnic_mdio_write_pcs(struct fbnic_dev *fbd, int addr, = int regnum, u16 val) fbnic_wr32(fbd, FBNIC_PCS_PAGE(addr) + regnum, val); } =20 +static void +fbnic_mdio_write_pma(struct fbnic_dev *fbd, int addr, int regnum, u16 val) +{ + dev_dbg(fbd->dev, + "SWMII PMA Wr: Addr: %d RegNum: %d Value: 0x%04x\n", + addr, regnum, val); + + if (addr >=3D 2) + return; + + switch (regnum) { + case MDIO_PMA_RSFEC_CTRL ... MDIO_PMA_RSFEC_LANE_MAP: + fbnic_wr32(fbd, FBNIC_RSFEC_CONTROL(addr) + + regnum - MDIO_PMA_RSFEC_CTRL, val); + break; + default: + break; + } +} + static int fbnic_mdio_write_c45(struct mii_bus *bus, int addr, int devnum, int regnum, u16 val) @@ -167,6 +235,9 @@ fbnic_mdio_write_c45(struct mii_bus *bus, int addr, int= devnum, if (devnum =3D=3D MDIO_MMD_PCS) fbnic_mdio_write_pcs(fbd, addr, regnum, val); =20 + if (devnum =3D=3D MDIO_MMD_SEP_PMA1) + fbnic_mdio_write_pma(fbd, addr, regnum, val); + return 0; } =20 --=20 2.43.0