diff options
| author | Robert Mustacchi <rm@joyent.com> | 2017-07-07 01:22:04 +0000 |
|---|---|---|
| committer | Robert Mustacchi <rm@joyent.com> | 2017-07-07 01:22:04 +0000 |
| commit | bf74c488e9db30727ab39d3ec804fa1ef8250e9e (patch) | |
| tree | 648091ddd45b752837fa27b8d73438751a6601e0 /usr/src | |
| parent | 1f9e4a419db604c08c1951b4164ef2fa77d66e77 (diff) | |
| download | illumos-joyent-bf74c488e9db30727ab39d3ec804fa1ef8250e9e.tar.gz | |
Add 25/40/100 Gb properties
Diffstat (limited to 'usr/src')
| -rw-r--r-- | usr/src/uts/common/io/cxgbe/t4nex/t4_mac.c | 80 |
1 files changed, 78 insertions, 2 deletions
diff --git a/usr/src/uts/common/io/cxgbe/t4nex/t4_mac.c b/usr/src/uts/common/io/cxgbe/t4nex/t4_mac.c index 97f6382f10..0515aed173 100644 --- a/usr/src/uts/common/io/cxgbe/t4nex/t4_mac.c +++ b/usr/src/uts/common/io/cxgbe/t4nex/t4_mac.c @@ -229,6 +229,22 @@ t4_mc_getstat(void *arg, uint_t stat, uint64_t *val) case ETHER_STAT_XCVR_INUSE: return (ENOTSUP); + case ETHER_STAT_CAP_100GFDX: + *val = !!(lc->supported & FW_PORT_CAP_SPEED_100G); + break; + + case ETHER_STAT_CAP_40GFDX: + *val = !!(lc->supported & FW_PORT_CAP_SPEED_40G); + break; + + case ETHER_STAT_CAP_25GFDX: + *val = !!(lc->supported & FW_PORT_CAP_SPEED_25G); + break; + + case ETHER_STAT_CAP_10GFDX: + *val = !!(lc->supported & FW_PORT_CAP_SPEED_10G); + break; + case ETHER_STAT_CAP_1000FDX: *val = !!(lc->supported & FW_PORT_CAP_SPEED_1G); break; @@ -292,16 +308,62 @@ t4_mc_getstat(void *arg, uint_t stat, uint64_t *val) *val = (lc->requested_fc & PAUSE_TX) ? 1 : 0; break; + case ETHER_STAT_ADV_CAP_100GFDX: + *val = !!(lc->advertising & FW_PORT_CAP_SPEED_100G); + break; + + case ETHER_STAT_ADV_CAP_40GFDX: + *val = !!(lc->advertising & FW_PORT_CAP_SPEED_40G); + break; + + case ETHER_STAT_ADV_CAP_25GFDX: + *val = !!(lc->advertising & FW_PORT_CAP_SPEED_25G); + break; + + case ETHER_STAT_ADV_CAP_10GFDX: + *val = !!(lc->advertising & FW_PORT_CAP_SPEED_10G); + break; + case ETHER_STAT_ADV_CAP_1000FDX: + *val = !!(lc->advertising & FW_PORT_CAP_SPEED_1G); + break; + + case ETHER_STAT_ADV_CAP_AUTONEG: + *val = !!(lc->advertising & FW_PORT_CAP_ANEG); + break; + case ETHER_STAT_ADV_CAP_1000HDX: case ETHER_STAT_ADV_CAP_100FDX: case ETHER_STAT_ADV_CAP_100HDX: case ETHER_STAT_ADV_CAP_10FDX: case ETHER_STAT_ADV_CAP_10HDX: - case ETHER_STAT_ADV_CAP_AUTONEG: return (ENOTSUP); /* TODO */ + + case ETHER_STAT_LP_CAP_100GFDX: + *val = !!(lc->lp_advertising & FW_PORT_CAP_SPEED_100G); + break; + + case ETHER_STAT_LP_CAP_40GFDX: + *val = !!(lc->lp_advertising & FW_PORT_CAP_SPEED_40G); + break; + + case ETHER_STAT_LP_CAP_25GFDX: + *val = !!(lc->lp_advertising & FW_PORT_CAP_SPEED_25G); + break; + + case ETHER_STAT_LP_CAP_10GFDX: + *val = !!(lc->lp_advertising & FW_PORT_CAP_SPEED_10G); + break; + case ETHER_STAT_LP_CAP_1000FDX: + *val = !!(lc->lp_advertising & FW_PORT_CAP_SPEED_1G); + break; + + case ETHER_STAT_LP_CAP_AUTONEG: + *val = !!(lc->lp_advertising & FW_PORT_CAP_ANEG); + break; + case ETHER_STAT_LP_CAP_1000HDX: case ETHER_STAT_LP_CAP_100FDX: case ETHER_STAT_LP_CAP_100HDX: @@ -309,7 +371,6 @@ t4_mc_getstat(void *arg, uint_t stat, uint64_t *val) case ETHER_STAT_LP_CAP_10HDX: case ETHER_STAT_LP_CAP_ASMPAUSE: case ETHER_STAT_LP_CAP_PAUSE: - case ETHER_STAT_LP_CAP_AUTONEG: return (ENOTSUP); case ETHER_STAT_LINK_ASMPAUSE: @@ -968,6 +1029,21 @@ t4_mc_getprop(void *arg, const char *name, mac_prop_id_t id, uint_t size, *(link_flowctrl_t *)val = LINK_FLOWCTRL_NONE; break; + case MAC_PROP_ADV_100GFDX_CAP: + case MAC_PROP_EN_100GFDX_CAP: + *u = !!(lc->advertising & FW_PORT_CAP_SPEED_100G); + break; + + case MAC_PROP_ADV_40GFDX_CAP: + case MAC_PROP_EN_40GFDX_CAP: + *u = !!(lc->advertising & FW_PORT_CAP_SPEED_40G); + break; + + case MAC_PROP_ADV_25GFDX_CAP: + case MAC_PROP_EN_25GFDX_CAP: + *u = !!(lc->advertising & FW_PORT_CAP_SPEED_25G); + break; + case MAC_PROP_ADV_10GFDX_CAP: case MAC_PROP_EN_10GFDX_CAP: *u = !!(lc->advertising & FW_PORT_CAP_SPEED_10G); |
