bnxt: correct more mappings for 400G optics and 100G LR

- Support 400G-DR4 optics
- Support 400G-CR8 and -SR8 with their types, rather than generic 400G-AUI8
- Use the generic 400G-AUI8 for 400G-SR4, rather than mislabeling it -DR4
(We probably should add a 400G-SR media type, but I don't have any to test ATM)
- Add missing legacy PAM4 100G LR entry and matching media-selection cases.

Reviewed by: sumit.saxena_broadcom.com
Differential Revision: https://reviews.freebsd.org/D61162
Sponsored by: Netflix
This commit is contained in:
Andrew Gallatin committed 2026-11-03 12:43:56 -05:00
1 parent 510331fa37
commit 28d8abeaa5
2 files changed
+17 -3

No files matched your search

+1
View File
@@ -505,6 +505,7 @@ enum bnxt_phy_type {
BNXT_MEDIA_BASET,
BNXT_MEDIA_BASEKX,
BNXT_MEDIA_BASESGMII,
BNXT_MEDIA_DR,
BNXT_MEDIA_END
};
+16 -3
View File
@@ -4353,6 +4353,8 @@ bnxt_media_change(if_ctx_t ctx)
break;
case IFM_400G_CR8:
case IFM_400G_SR8:
case IFM_400G_FR8:
case IFM_400G_LR8:
case IFM_400G_AUI8:
@@ -5250,7 +5252,7 @@ add_media(struct bnxt_softc *softc, u8 media_type, u16 supported_NRZ_speeds,
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_50GB_PAM4_56, IFM_50G_CP);
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_100GB_PAM4_56, IFM_100G_CP2);
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_200GB_PAM4_56, IFM_200G_CR4_PAM4);
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_400GB_PAM4_56, IFM_400G_AUI8);
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_400GB_PAM4_56, IFM_400G_CR8);
/* thor2 PAM112 */
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_100GB_PAM4_112, IFM_100G_CR_PAM4);
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_200GB_PAM4_112, IFM_200G_AUI4);
@@ -5260,6 +5262,7 @@ add_media(struct bnxt_softc *softc, u8 media_type, u16 supported_NRZ_speeds,
case BNXT_MEDIA_LR:
BNXT_IFMEDIA_ADD(supported_pam4_speeds, PAM4_SPEEDS_50G, IFM_50G_LR);
BNXT_IFMEDIA_ADD(supported_pam4_speeds, PAM4_SPEEDS_100G, IFM_100G_AUI2);
BNXT_IFMEDIA_ADD(supported_pam4_speeds, PAM4_SPEEDS_200G, IFM_200G_LR4);
BNXT_IFMEDIA_ADD(supported_NRZ_speeds, SPEEDS_100GB, IFM_100G_LR4);
BNXT_IFMEDIA_ADD(supported_NRZ_speeds, SPEEDS_50GB, IFM_50G_LR2);
@@ -5305,11 +5308,12 @@ add_media(struct bnxt_softc *softc, u8 media_type, u16 supported_NRZ_speeds,
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_50GB_PAM4_56, IFM_50G_SR);
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_100GB_PAM4_56, IFM_100G_SR2);
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_200GB_PAM4_56, IFM_200G_SR4);
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_400GB_PAM4_56, IFM_400G_AUI8);
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_400GB_PAM4_56, IFM_400G_SR8);
/* thor2 PAM112 */
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_100GB_PAM4_112, IFM_100G_AUI2_AC);
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_200GB_PAM4_112, IFM_200G_AUI4);
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_400GB_PAM4_112, IFM_400G_DR4);
/* No IFM_400G_SR4; use the generic media type. */
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_400GB_PAM4_112, IFM_400G_AUI8_AC);
break;
case BNXT_MEDIA_ER:
@@ -5326,6 +5330,11 @@ add_media(struct bnxt_softc *softc, u8 media_type, u16 supported_NRZ_speeds,
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_400GB_PAM4_112, IFM_400G_AUI8_AC);
break;
case BNXT_MEDIA_DR:
/* thor2 PAM112 */
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_400GB_PAM4_112, IFM_400G_DR4);
break;
case BNXT_MEDIA_FR:
/* thor2 PAM112 */
BNXT_IFMEDIA_ADD(supported_speeds2, SPEEDS2_400GB_PAM4_112, IFM_400G_FR4);
@@ -5485,6 +5494,10 @@ bnxt_add_media_types(struct bnxt_softc *softc)
media_type = BNXT_MEDIA_KR;
break;
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_400G_BASEDR4:
media_type = BNXT_MEDIA_DR;
break;
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_400G_BASEFR4:
media_type = BNXT_MEDIA_FR;
break;