summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorRobert Mustacchi <rm@joyent.com>2017-07-07 01:22:04 +0000
committerRobert Mustacchi <rm@joyent.com>2017-07-07 01:22:04 +0000
commitbf74c488e9db30727ab39d3ec804fa1ef8250e9e (patch)
tree648091ddd45b752837fa27b8d73438751a6601e0 /usr/src
parent1f9e4a419db604c08c1951b4164ef2fa77d66e77 (diff)
downloadillumos-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.c80
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);