From nobody Tue Jun 16 16:52:53 2026 Received: from mail-qt1-f180.google.com (mail-qt1-f180.google.com [209.85.160.180]) (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 6850631AF2D for ; Thu, 30 Apr 2026 15:08:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777561693; cv=none; b=q4dgeQzBkZxig0Tjfr5lb+9+SqC67l7hpPyKpKMgNUyHzK6wb61JNcmMuczAXjtA1EpdbDgKr9LNZR5DXkHAuRpGgzBKt/qCKGu9E1az8cGW2oG96Mbcwgn8SMDROzhe0ZHAYjFK8vz+Vy6cdRxRrpJXTeSt4YSJKbch6DtU5T0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777561693; c=relaxed/simple; bh=7N60anyk7vTUNeKX3EaP5ZxqXVISZE0kv9CxvPy/Z9c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HwaCgArRZEJaLtO3N1KHSRhEJ7eJV0d2SBwBCB72X3FTUzYCBwdSKfDuP8InNkF+axVz4w+O2q2OH98r7JpyorUPRhz4ZfzJmPSnnYKkHANUEMnvIbzaebhs9UKlR2ssLVqYzVFQfPkziSkAb0Ke3q6KW3MmhZuR8K7n9RjIQDo= 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=UrdHtGzp; arc=none smtp.client-ip=209.85.160.180 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="UrdHtGzp" Received: by mail-qt1-f180.google.com with SMTP id d75a77b69052e-506a6cf8242so6460301cf.1 for ; Thu, 30 Apr 2026 08:08:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777561687; x=1778166487; 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=ImH4ahwmrHT+su2dG25ToH0WN0C8iXg+vRobO5a6Jcg=; b=UrdHtGzp45bXh/U13Rm/YozBL1+EN4tYsB8J1r3BtXissoUlWIbSIMDPcsqIsn8Xmo aeTvitbOs3Njz8OsQhgKEnUR8QW+6dmJUr32jlqRP+lwVvIclU8t8ENqG1gv7OW9gI1F SuNEWz2mR8zIPhloup1h2dQg/xam99er6Kkxixrrnl6YgJzyaHDxINY5tV2mCSTI4Jsp vWTubQ0eyzQybN3cIabLZAHplOFLmilm7XzGKXU6SAQJ5vTs2zMId/cwaoDQlwnxdkDK PFoJDsNwS/HA8DoBgN0wAXonb3cadC7oNgNeJbovkImX48l2opaQjQXPDO+JCoy491YI R4Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777561687; x=1778166487; 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=ImH4ahwmrHT+su2dG25ToH0WN0C8iXg+vRobO5a6Jcg=; b=NXkbVBhSmhi1yo4t5SHDCi2qa/xlIx/BTDER9/cVjL02cG4QLBv1gmo+xYz3YsR6AJ G8kuV6JJ3QSrSFP+h2X5V0atlVi1vX1lzMY18TwIkkAbspkHjsoy5v21oOugzwAd5GQR T+OZAjYyqSgoyhDUR2gQOoPiHxH93b17qwCOMxYFA/xKvH7x27eNa8+Oc9vFAgDsKSH9 9p1nW0Zm7KRAW5XYTAGO+J/OzFehQkWyxd51DhjHREVFwyJeYica246SQjHYFrZKkalX a1pYUuCSHzYWlRLmmckZTd/JaGn+sLMEcGATIsnAa4ofSkvQO2RhP4CGLs8WPp6OB1+D tsJg== X-Forwarded-Encrypted: i=1; AFNElJ9qlknBoxOMJoNtfU1dnFaDb0AnMCNxesMLRGjSwmXWcOmktFhbUADcwTHuIqMwIZhbxTwmM1/p9CRSC0g=@vger.kernel.org X-Gm-Message-State: AOJu0YyWUOWEvzfsTpReA9lXrEe4BvXqItHC/38wWYq3JnfBQ2YrPg5s 0Nu588pF4cmDw3V/1/x66UmTiTUVWCqxWZBcxpzDQqIlYjTxZyCMsOYO X-Gm-Gg: AeBDieuUVSB4Bg16un/aU3Yfph0RYMPmev//n6/UiEOyshy4USm/Uf6JoGdnU+iV8VT zB8Cq1WEWV3T+S6UwTHF7F5iBeEk9qcAFexKvMI51yUEAOfDYpNAATCDch7ZH0V+fGpa2E8o5Ax wJhISxVi1Q8CtAClRSwdYWXOo0nF3zB2ww49q0IebIy0u27enWPNLP21p2+XvkpRpm/yG/35Zgp nrMDxlHn3LYQnOmzk4DJMZSqMg+Bp5+xLSAimHFQAB9TT6khJL7wH0bVbYKevXuZS5p6dr1fF8V fg9KQYsfmRlB1tC+hQAHEaV68TYVfbX8eOhRh7hgvou0S3W5VOyXUjQkSoky+wCaQMZxhiW9say mbNcpCXTu5sJgzCa+SA7qRayt2EDO0g6z4lE5iCHDOq49LEITya6Y4FaYK6XExmw6NJAwl3Wkvd PuJJBGCOFqWaEpLBt7AwfgmRo4Tcqm+xLEtWKkso8bhOn89mqLoUiHzcA8v3bK+DnoZwE= X-Received: by 2002:a05:622a:1195:b0:50f:b978:82e9 with SMTP id d75a77b69052e-5102ab12393mr47350921cf.14.1777561686925; Thu, 30 Apr 2026 08:08:06 -0700 (PDT) Received: from PF5YBGDS.localdomain ([163.114.130.4]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5103b397c38sm450731cf.7.2026.04.30.08.08.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 08:08:05 -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 , Lee Trager , Andrew Lunn Cc: mike.marciniszyn@gmail.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 1/3] net: mdio: Add support for RSFEC Control register for PMA Date: Thu, 30 Apr 2026 11:08:00 -0400 Message-ID: <20260430150802.3521-2-mike.marciniszyn@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430150802.3521-1-mike.marciniszyn@gmail.com> References: <20260430150802.3521-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) --- v2: - 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) -- 2.43.0 From nobody Tue Jun 16 16:52:53 2026 Received: from mail-qt1-f182.google.com (mail-qt1-f182.google.com [209.85.160.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 2E8E7375ACF for ; Thu, 30 Apr 2026 15:08:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777561693; cv=none; b=b6CceJyhfN0e+Wk7sJSWrMHD3aGSmOZLY0SGIdNPqU3o7dv+Y2wUJK04sBXbdbDyIqe3fkKFJ3QW+EnLxnt01zuZrL0ZHK/gCn3Vxf/FwH15m8w8NRW6kRn+yP16ZABqqIz3OHzxkZdEG6RUawn6FFyQInSntWMWNFTZJUXsndQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777561693; c=relaxed/simple; bh=aHwhNUgUunEsuCx5PWSlpnspb7dCR3q1nJ8+AeBsZI8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AnaI1c/Zatx0+w3Ym0WXjmbz0whscrEdnu1LVcbK6HYGB7KYvkK2qOFfI/Mz4KFL1wTyVL+AqNj8k88CPfH6M4MhE1WmW4qR0/JEC/qNIbb8yM+FkyyPNeAykdJJ1wzCtyBnlGe3RtCzcGk3zobjbSRG7anXzwg/65iYNDY1te4= 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=J8cKgCvk; arc=none smtp.client-ip=209.85.160.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="J8cKgCvk" Received: by mail-qt1-f182.google.com with SMTP id d75a77b69052e-506a6cf8242so6460551cf.1 for ; Thu, 30 Apr 2026 08:08:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777561689; x=1778166489; 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=exOWp3uV0NKcyfspEwFa1OV17okj3o/cEeqBYuta5Ho=; b=J8cKgCvksINmscyqdaHwbmuPrlbVne9SWfhrySc1P5e0VBGBnyaUzHkHvBmxdGGJzz l52lCWhDHQVF1ZjshP3nSTBlTdw6zdowiD3xprQfGf4zxb+cVts/u0RRDqz4axZjwKZh zRh7RKTQ6LKXwCmfbtkp4xoKlXmG8L8ilNSSuGHkgPBiOVwsDTeXF9TfyZtMTz4q3KZd 68s8rKeLOd5EVyJxUsXJbVBUQgLu+6lEvQQxTH8qdJs/eNviXp9mAUdltNJGc83hToVK cXlZNqW5O2Ubj4vlyeRJ6xfLXrY+IapLiZa/oUurgb3kyMc1RvVP9+OPIenX5B3PWstY 86IA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777561689; x=1778166489; 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=exOWp3uV0NKcyfspEwFa1OV17okj3o/cEeqBYuta5Ho=; b=l9X823dOKdMDlL8njj/jL6UaFfTBK1dYsi8oCxHDILAyvheAfGj8CrhLExRyFxQcJG 7rkc7JL7QmzJn1dlMFaaWktNJ18UVcBEwIFA1DmVrp311K9d/tE7DF4SRMvybYciYR5B TaNX3YjukN1/YHYqE61HZ/95ydS1dabYpmlF2DLAjtcu5FLE1rc0HGvSfgMWLsABLCSv TcH3Z70D07T3y/adOWORMe97keq7nvNWmXTIlu/rLqLcGkLuj6Rmmj5I0Sdk0f7fPSXc sTD/zpWS5F265a6dBlAsFK4hgOBk3cIDemVheF3TG9NYF8al32nKT9CoiQqOI+AgDO0L iEMA== X-Forwarded-Encrypted: i=1; AFNElJ8B4ERgL4sDbGiKu0QyaNh3oxjZnUmnbBaqovxFPmi4ykBAIOJSHqd6zBRQtFuxiEiqfXE6chv54nLRySw=@vger.kernel.org X-Gm-Message-State: AOJu0YxYJJ5YnqVfRRspVLAqmpbx8W57rrsBO3bvkjKpjZ2Rj7cTi2Ao GDmkYPHQ+2L96gm8CpbFDnOV1jLuEJl5eBOUy7CbTCuZTJcLJYB2/J51 X-Gm-Gg: AeBDietY1zcujPZPYWPeclKGEBFzdMIHDMgxaGf15i/GfQgEOmh79JQW00HM/UkgW1z 1Dj5dk5qK8naXMLp9/79tnwMhULmY13R4+s7uIrW0DixJfLfKVTtsS/zXDgU22BVfNX1wIxRrrN Hft8HV++E2TZ1EVUnHhsD4coP9mFCx6EltoJ1QprvfETZwi9TG7ZkuJInZ8a+ci8VgzfvJFJhue LO2wUGh1gsi1nsMcZQxBBo3yGkgrK2w25wqkrJred9QpwH+9HnfueKGAsYKCD/LsZF5qWf8XUy4 Fi72Mg+Tp66wOIEvxnnII/zctwLmWHPbgx8hA6Xp9/yUvB0n/qr1ZYe7Nue8OL0TmrcA4fWTno4 Ta67oZVkvl1HWqY9QGmF7SXzwjHOrd4toN5Yywy/RnOZyFnnPgVjYwUlZ7X/HyH09xB8aAF5LKe k8h0L724Fmes09CwBf/z+UAIzW8SA5oikt2xu+R8c1GSgINW4j1Ma6kukXH8sizfXcnSxrPQa/U 4iFhg== X-Received: by 2002:ac8:5a0e:0:b0:510:1b61:d103 with SMTP id d75a77b69052e-5102adbeb71mr44488361cf.36.1777561689349; Thu, 30 Apr 2026 08:08:09 -0700 (PDT) Received: from PF5YBGDS.localdomain ([163.114.130.4]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5103b397c38sm450731cf.7.2026.04.30.08.08.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 08:08:07 -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 , Lee Trager , Andrew Lunn Cc: mike.marciniszyn@gmail.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 2/3] net: eth: fbnic: Consolidate register reads for ids and devs Date: Thu, 30 Apr 2026 11:08:01 -0400 Message-ID: <20260430150802.3521-3-mike.marciniszyn@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430150802.3521-1-mike.marciniszyn@gmail.com> References: <20260430150802.3521-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) --- v2: - 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 709041f7fc43..a3a072597a2c 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) +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) } 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; } @@ -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; /* 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; /* 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; - 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; + } dev_dbg(fbd->dev, "SWMII PCS Rd: Addr: %d RegNum: %d Value: 0x%04x\n", -- 2.43.0 From nobody Tue Jun 16 16:52:53 2026 Received: from mail-qk1-f169.google.com (mail-qk1-f169.google.com [209.85.222.169]) (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 CCC6B436370 for ; Thu, 30 Apr 2026 15:08:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777561695; cv=none; b=gq0+QymAe7szVFN+1d3j1zy6h/ZcMBigt4zI9ULS3Lh2LzVUIN1iBDE8Nfh3fP1Tm3DPEXgZwPYiowZEDrO6FX/ruoln03SX33kWwh3RsAcBZNGqTzq81jPjnoml46kD4FbU05UT3KmPbXVHRUqYCiseky5veEDNZSLHhn6+HrY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777561695; c=relaxed/simple; bh=4/PXjA5wui8riVIOeSTDKTzLDfB5K2L0rU+nCg+H4co=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nAYQalf+5nBMKHqgrL5dmxz83QBrupjEczShoc18S00BIwzB9Ot/Czb9DOKF7EmS75rSyzoNQ8rDkBZ4QhBXOqFH7DznXN6tuw88B6HoElStvnM101VtL7qZ1dIKCt1vbJ+1JBOH5e5UhYCICYc2Tt1WLu7Y603mHEv/ccE97Oc= 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=Hj9fxcls; arc=none smtp.client-ip=209.85.222.169 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="Hj9fxcls" Received: by mail-qk1-f169.google.com with SMTP id af79cd13be357-8ee9ec26edaso110033485a.2 for ; Thu, 30 Apr 2026 08:08:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777561691; x=1778166491; 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=GjLCv7/Lm3Fd1vFVHO/bH+3GFNPBrRzS27c9E9pX0+I=; b=Hj9fxclsGD+xISFute/bPAgdCLVFcq+q6v0UHWT2yaRWXAwrux339P3LnTHZUW1Wnu W8CAoDHZIGmalBW8z/w98Y5EKf0xKU/MJ+wVEu4EQ1bCNp8aqU2O1jMAHoHXXldXeDOv ndog7KxiIvaMu5tIdcYi/DRlgXZpc4SMEwnquDqKboLRat7mjwtKpvfrDHhnZcyYUFMf gTG1YVSVut0hCbDlDgFDK6rqvDu6rW2Q5Ucvkxf+7xDfgcn2CExM0zbgAvZ3Ed8E/Lai 5Nq8B6UfbhZ0Ec3FPyShxQNPgkC/yt6hbA47BenPa5ciPOMQ3KT5IOfSRzJBmhtZIy8G aI/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777561691; x=1778166491; 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=GjLCv7/Lm3Fd1vFVHO/bH+3GFNPBrRzS27c9E9pX0+I=; b=eYkNnxRR0a4M0kPLbFYJ0XeIqsv0G1dJcsdyZj6KluPtPVvsT4LoaU564U7czsAxDL u1MemW0kyviFrCOTqEM2jPXnz+GjN5gxeLrkVBlosnSr8hMbBuZ1jrvDtz53y9K3GGBX 76U5reQ0RYFWL65cOBpMWUnOma/BnKW7LLhe240J1b55Uq0xwnDTwo9NjTuClSMjHHty qki423fLYRXJJxWkYJ9woI31Seawh34j/l5aErSVveCa7L3gpLokwkNSi+PxKPC9+osP wnVSBz/uCMZo9+gTdkgZzEXWz+vyF5eVqsz6c5C2UKuxmE8pmmTGJe4RsXcW1k0O/MvW puCg== X-Forwarded-Encrypted: i=1; AFNElJ+YtyAKX44eMJqYN3GJ08usQrWxcs7v+0oyHidtcpi1Xw5zEJQ9Rwh+jhoddlYq81Clj5zdmZ8LVBA9s0c=@vger.kernel.org X-Gm-Message-State: AOJu0YzEElkkgVykmbBKrZQW3KkVNJC560n3hgP32I9OTKgs97p0ikiu ogR1/y6ntEXEsasHg0Ya2IRECZifTASmg0Wgmene00o9ecTbYnVBWFkk X-Gm-Gg: AeBDiev8KyiSz1OEqdYKDKybl16Zxf9x+HlQ0XkvUmt9QHgMHeeX2Icq9PURxKgQ9fe Iy+Nh3Qd+0PhpTUJadIGG85IWphmpXs2dUImFprAEz908k9q6KZq7SBI+GSo0Qj0koVAkL23CXA nxgaUPpZeIZALJtXUcdd1aDMM6YNh7h+JbUgYk4LmFWJR/Gg4A1YpLKfE5mr0qO38XyVtaoo4A+ 3SLzcp64NVjHFUBngykE3dAtaWho3Y57gwafBBWcAYAthn3QitwVIOsOq24sffDbmFywoLWSffR 28vHImwvmMY3EmJe7nhUtMJ/unqvnh398tzP2Npj41SJrS/detg6v6DP9zxhhNxJCLgf72L6W8l yz1dMxiQnVNlRFWH1pQelSdHKvwsAYXOBwIanrQXyVEnLc0An/U2iI1o62TMhdyx4+R96CqEYLZ 34Hei124J0myZny1uBLTbegd5IOpVBKALVDAjQJtUlpICEjYjW2weCyEwoOvJbivz1xIY= X-Received: by 2002:a05:622a:250e:b0:50e:d316:fa35 with SMTP id d75a77b69052e-5102ada86c3mr45222281cf.36.1777561691282; Thu, 30 Apr 2026 08:08:11 -0700 (PDT) Received: from PF5YBGDS.localdomain ([163.114.130.4]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5103b397c38sm450731cf.7.2026.04.30.08.08.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 08:08:10 -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 , Lee Trager , Andrew Lunn Cc: mike.marciniszyn@gmail.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 3/3] net: eth: fbnic: Add pma read and write access Date: Thu, 30 Apr 2026 11:08:02 -0400 Message-ID: <20260430150802.3521-4-mike.marciniszyn@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430150802.3521-1-mike.marciniszyn@gmail.com> References: <20260430150802.3521-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: - 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 */ #define FBNIC_CSR_START_RSFEC 0x10800 /* CSR section delimiter */ +#define FBNIC_RSFEC_CONTROL(n) (0x10800 + 8 * (n)) /* 0x42000 + 32*n */ /* 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 a3a072597a2c..7a8727e8f6f2 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" +/* 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; } +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); + if (devnum =3D=3D MDIO_MMD_SEP_PMA1) + return fbnic_mdio_read_pma(fbd, addr, regnum); + return 0; } @@ -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); } +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); + if (devnum =3D=3D MDIO_MMD_SEP_PMA1) + fbnic_mdio_write_pma(fbd, addr, regnum, val); + return 0; } -- 2.43.0