Page MenuHomeFreeBSD

D12423.id33239.diff
No OneTemporary

D12423.id33239.diff

Index: sys/dev/bnxt/bnxt.h
===================================================================
--- sys/dev/bnxt/bnxt.h
+++ sys/dev/bnxt/bnxt.h
@@ -226,6 +226,10 @@
#define clamp_t(type, _x, min, max) min_t(type, max_t(type, _x, min), max)
+#define BNXT_IFMEDIA_ADD(supported, fw_speed, ifm_speed) \
+ if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_ ## fw_speed) \
+ ifmedia_add(softc->media, IFM_ETHER | ifm_speed, 0, NULL); \
+
/* NVRAM access */
enum bnxt_nvm_directory_type {
BNX_DIR_TYPE_UNUSED = 0,
Index: sys/dev/bnxt/if_bnxt.c
===================================================================
--- sys/dev/bnxt/if_bnxt.c
+++ sys/dev/bnxt/if_bnxt.c
@@ -2124,128 +2124,139 @@
switch (phy_type) {
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_BASECR:
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_100GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_100G_CR4, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_50GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_50G_CR2, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_40GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_40G_CR4, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_25GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_25G_CR, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_10GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_10G_CR1, 0,
- NULL);
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_25G_BASECR_CA_L:
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_25G_BASECR_CA_S:
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_25G_BASECR_CA_N:
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_40G_BASECR4:
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_100G_BASECR4:
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_1G_BASECX:
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MBHD, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MB, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GBHD, IFM_1000_CX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GB, IFM_1000_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_10GB, IFM_10G_CR1);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_20GB, IFM_20G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_25GB, IFM_25G_CR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_40GB, IFM_40G_CR4);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_50GB, IFM_50G_CR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100GB, IFM_100G_CR4);
break;
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_BASEKR4:
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_BASEKR2:
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_BASEKR:
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_100GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_100G_KR4, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_50GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_50G_KR2, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_40GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_40G_KR4, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_25GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_25G_KR, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_20GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_20G_KR2, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_10GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_10G_KR, 0,
- NULL);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MBHD, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MB, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GBHD, IFM_1000_CX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GB, IFM_1000_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_10GB, IFM_10G_KR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_20GB, IFM_20G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_25GB, IFM_25G_KR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_40GB, IFM_40G_KR4);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_50GB, IFM_50G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100GB, IFM_100G_KR4);
break;
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_BASELR:
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_100GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_100G_LR4, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_40GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_40G_LR4, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_10GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_10G_LR, 0,
- NULL);
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_40G_BASELR4:
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_100G_BASELR4:
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MBHD, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MB, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GBHD, IFM_1000_CX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GB, IFM_1000_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_10GB, IFM_10G_LR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_20GB, IFM_20G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_25GB, IFM_25G_KR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_40GB, IFM_40G_LR4);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_50GB, IFM_50G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100GB, IFM_100G_LR4);
break;
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_BASESR:
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_100GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_100G_SR4, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_40GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_40G_SR4, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_25GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_25G_SR, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_10GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_10G_SR, 0,
- NULL);
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_100G_BASESR10:
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_40G_BASESR4:
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_25G_BASESR:
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_100G_BASESR4:
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_1G_BASESX:
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MBHD, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MB, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GBHD, IFM_1000_CX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GB, IFM_1000_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_10GB, IFM_10G_SR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_20GB, IFM_20G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_25GB, IFM_25G_SR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_40GB, IFM_40G_SR4);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_50GB, IFM_50G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100GB, IFM_100G_SR4);
break;
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_BASEKX:
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_10GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_10G_KX4, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_2_5GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_2500_KX, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_1GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_1000_KX, 0,
- NULL);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MBHD, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MB, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GBHD, IFM_1000_CX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GB, IFM_1000_KX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_2_5GB, IFM_2500_KX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_10GB, IFM_10G_SR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_20GB, IFM_20G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_25GB, IFM_25G_SR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_40GB, IFM_40G_SR4);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_50GB, IFM_50G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100GB, IFM_100G_KR4);
break;
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_BASET:
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_BASETE:
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_10MB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_10_T, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_100MB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_100_T, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_1GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_1000_T, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_2_5GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_2500_T, 0,
- NULL);
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_10GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_10G_T, 0,
- NULL);
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_1G_BASET:
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_10MB, IFM_10_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MBHD, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MB, IFM_100_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GBHD, IFM_1000_CX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GB, IFM_1000_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_2_5GB, IFM_2500_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_10GB, IFM_10G_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_20GB, IFM_20G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_25GB, IFM_25G_SR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_40GB, IFM_40G_SR4);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_50GB, IFM_50G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100GB, IFM_100G_KR4);
break;
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_SGMIIEXTPHY:
- if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_1GB)
- ifmedia_add(softc->media, IFM_ETHER | IFM_1000_SGMII, 0,
- NULL);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_10MB, IFM_10_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MBHD, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MB, IFM_100_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GBHD, IFM_1000_CX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GB, IFM_1000_SGMII);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_2_5GB, IFM_2500_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_10GB, IFM_10G_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_20GB, IFM_20G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_25GB, IFM_25G_SR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_40GB, IFM_40G_SR4);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_50GB, IFM_50G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100GB, IFM_100G_KR4);
break;
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_100G_BASEER4:
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_40G_BASEER4:
+ case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_40G_ACTIVE_CABLE:
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_10MB, IFM_10_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MBHD, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MB, IFM_100_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GBHD, IFM_1000_CX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GB, IFM_1000_SGMII);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_2_5GB, IFM_2500_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_10GB, IFM_10G_ER);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_20GB, IFM_20G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_25GB, IFM_25G_SR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_40GB, IFM_40G_SR4);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_50GB, IFM_50G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100GB, IFM_100G_KR4);
+ break;
case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_UNKNOWN:
default:
- /*
- * Workaround for Cumulus & Stratus
- * For Stratus:
- * media_type is being returned as 0x0
- * Return support speeds as 10G, 25G, 50G & 100G
- *
- * For Cumulus:
- * phy_type is being returned as 0x14 (PHY_TYPE_40G_BASECR4)
- * Return support speeds as 1G, 10G, 25G & 50G
- */
- if (pci_get_device(softc->dev) == BCM57454) {
- /* For Stratus: 10G, 25G, 50G & 100G */
- ifmedia_add(softc->media, IFM_ETHER | IFM_100G_CR4, 0, NULL);
- ifmedia_add(softc->media, IFM_ETHER | IFM_50G_CR2, 0, NULL);
- ifmedia_add(softc->media, IFM_ETHER | IFM_25G_CR, 0, NULL);
- ifmedia_add(softc->media, IFM_ETHER | IFM_10G_CR1, 0, NULL);
- } else if (pci_get_device(softc->dev) == BCM57414) {
- /* For Cumulus: 1G, 10G, 25G & 50G */
- ifmedia_add(softc->media, IFM_ETHER | IFM_50G_CR2, 0, NULL);
- ifmedia_add(softc->media, IFM_ETHER | IFM_25G_CR, 0, NULL);
- ifmedia_add(softc->media, IFM_ETHER | IFM_10G_CR1, 0, NULL);
- ifmedia_add(softc->media, IFM_ETHER | IFM_1000_T, 0, NULL);
- }
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MBHD, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100MB, IFM_100_FX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GBHD, IFM_1000_CX);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_1GB, IFM_1000_T);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_10GB, IFM_10G_CR1);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_20GB, IFM_20G_KR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_25GB, IFM_25G_CR);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_40GB, IFM_40G_CR4);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_50GB, IFM_50G_CR2);
+ BNXT_IFMEDIA_ADD(supported, SPEEDS_100GB, IFM_100G_CR4);
break;
}

File Metadata

Mime Type
text/plain
Expires
Mon, Dec 22, 3:03 AM (20 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27132561
Default Alt Text
D12423.id33239.diff (12 KB)

Event Timeline