summaryrefslogtreecommitdiff
path: root/usr/src/lib/libdladm
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libdladm')
-rw-r--r--usr/src/lib/libdladm/Makefile3
-rw-r--r--usr/src/lib/libdladm/Makefile.com4
-rw-r--r--usr/src/lib/libdladm/common/linkprop.c80
-rw-r--r--usr/src/lib/libdladm/i386/Makefile4
-rw-r--r--usr/src/lib/libdladm/sparc/Makefile4
5 files changed, 82 insertions, 13 deletions
diff --git a/usr/src/lib/libdladm/Makefile b/usr/src/lib/libdladm/Makefile
index 275c1c0866..dc61aabd00 100644
--- a/usr/src/lib/libdladm/Makefile
+++ b/usr/src/lib/libdladm/Makefile
@@ -64,11 +64,10 @@ all := TARGET = all
clean := TARGET = clean
clobber := TARGET = clobber
install := TARGET = install
-lint := TARGET = lint
.KEEP_STATE:
-all clean clobber install lint: $(SUBDIRS)
+all clean clobber install: $(SUBDIRS)
install_h: $(ROOTHDRS)
diff --git a/usr/src/lib/libdladm/Makefile.com b/usr/src/lib/libdladm/Makefile.com
index 348061cb54..19db4ccace 100644
--- a/usr/src/lib/libdladm/Makefile.com
+++ b/usr/src/lib/libdladm/Makefile.com
@@ -36,12 +36,11 @@ include ../../Makefile.lib
# install this library in the root filesystem
include ../../Makefile.rootfs
-LIBS = $(DYNLIB) $(LINTLIB)
+LIBS = $(DYNLIB)
LDLIBS += -ldevinfo -lc -linetutil -lsocket -lscf -lrcm -lnvpair \
-lexacct -lkstat -lpool -lvarpd
SRCDIR = ../common
-$(LINTLIB) := SRCS = $(SRCDIR)/$(LINTSRC)
CFLAGS += $(CCVERBOSE)
CERRWARN += -_gcc=-Wno-parentheses
@@ -57,6 +56,5 @@ SMATCH=off
all: $(LIBS)
-lint: lintcheck
include $(SRC)/lib/Makefile.targ
diff --git a/usr/src/lib/libdladm/common/linkprop.c b/usr/src/lib/libdladm/common/linkprop.c
index 703fca8d4e..3791784ab1 100644
--- a/usr/src/lib/libdladm/common/linkprop.c
+++ b/usr/src/lib/libdladm/common/linkprop.c
@@ -22,6 +22,7 @@
* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2017 Joyent, Inc.
* Copyright 2015 Garrett D'Amore <garrett@damore.org>
+ * Copyright 2020 RackTop Systems, Inc.
*/
#include <stdlib.h>
@@ -154,13 +155,13 @@ static pd_getf_t get_zone, get_autopush, get_rate_mod, get_rate,
get_bridge_pvid, get_protection, get_rxrings,
get_txrings, get_cntavail, get_secondary_macs,
get_allowallcids, get_allowedips, get_allowedcids,
- get_pool, get_rings_range, get_linkmode_prop,
+ get_pool, get_rings_range, get_linkmode_prop, get_bits,
get_promisc_filtered, get_dynamic_methods;
static pd_setf_t set_zone, set_rate, set_powermode, set_radio,
set_public_prop, set_resource, set_stp_prop,
set_bridge_forward, set_bridge_pvid, set_secondary_macs,
- set_promisc_filtered;
+ set_promisc_filtered, set_public_bitprop;
static pd_checkf_t check_zone, check_autopush, check_rate, check_hoplimit,
check_encaplim, check_uint32, check_maxbw, check_cpus,
@@ -255,6 +256,10 @@ static link_attr_t link_attr[] = {
{ MAC_PROP_FLOWCTRL, sizeof (link_flowctrl_t), "flowctrl"},
+ { MAC_PROP_ADV_FEC_CAP, sizeof (link_fec_t), "adv_fec_cap"},
+
+ { MAC_PROP_EN_FEC_CAP, sizeof (link_fec_t), "en_fec_cap"},
+
{ MAC_PROP_ZONE, sizeof (dld_ioc_zid_t), "zone"},
{ MAC_PROP_AUTOPUSH, sizeof (struct dlautopush), "autopush"},
@@ -433,6 +438,12 @@ static val_desc_t link_flow_vals[] = {
{ "rx", LINK_FLOWCTRL_RX },
{ "bi", LINK_FLOWCTRL_BI }
};
+static val_desc_t link_fec_vals[] = {
+ { "none", LINK_FEC_NONE },
+ { "auto", LINK_FEC_AUTO },
+ { "rs", LINK_FEC_RS },
+ { "base-r", LINK_FEC_BASE_R }
+};
static val_desc_t link_priority_vals[] = {
{ "low", MPL_LOW },
{ "medium", MPL_MEDIUM },
@@ -563,6 +574,16 @@ static prop_desc_t prop_table[] = {
set_public_prop, NULL, get_flowctl, NULL,
0, DATALINK_CLASS_PHYS, DL_ETHER },
+ { "adv_fec_cap", { "", LINK_FEC_AUTO },
+ link_fec_vals, VALCNT(link_fec_vals),
+ NULL, NULL, get_bits, NULL,
+ 0, DATALINK_CLASS_PHYS, DL_ETHER },
+
+ { "en_fec_cap", { "", LINK_FEC_AUTO },
+ link_fec_vals, VALCNT(link_fec_vals),
+ set_public_bitprop, NULL, get_bits, NULL,
+ 0, DATALINK_CLASS_PHYS, DL_ETHER },
+
{ "secondary-macs", { "--", 0 }, NULL, 0,
set_secondary_macs, NULL,
get_secondary_macs, check_secondary_macs, PD_CHECK_ALLOC,
@@ -3958,6 +3979,33 @@ done:
return (status);
}
+static dladm_status_t
+set_public_bitprop(dladm_handle_t handle, prop_desc_t *pdp,
+ datalink_id_t linkid, val_desc_t *vdp, uint_t val_cnt, uint_t flags,
+ datalink_media_t media)
+{
+ uint_t i, j;
+ val_desc_t vd = { 0 };
+
+ if ((pdp->pd_flags & PD_CHECK_ALLOC) != 0)
+ return (DLADM_STATUS_BADARG);
+
+ for (i = 0; i < val_cnt; i++) {
+ for (j = 0; j < pdp->pd_noptval; j++) {
+ if (strcasecmp(vdp[i].vd_name,
+ pdp->pd_optval[j].vd_name) == 0) {
+ vd.vd_val |= pdp->pd_optval[j].vd_val;
+ break;
+ }
+ }
+ }
+
+ if (vd.vd_val == 0)
+ return (DLADM_STATUS_BADARG);
+
+ return (set_public_prop(handle, pdp, linkid, &vd, 1, flags, media));
+}
+
dladm_status_t
i_dladm_macprop(dladm_handle_t handle, void *dip, boolean_t set)
{
@@ -4270,6 +4318,34 @@ get_flowctl(dladm_handle_t handle, prop_desc_t *pdp,
return (DLADM_STATUS_OK);
}
+static dladm_status_t
+get_bits(dladm_handle_t handle, prop_desc_t *pdp,
+ datalink_id_t linkid, char **prop_val, uint_t *val_cnt,
+ datalink_media_t media, uint_t flags, uint_t *perm_flags)
+{
+ uint32_t v;
+ dladm_status_t status;
+ uint_t i, cnt;
+
+ status = i_dladm_get_public_prop(handle, linkid, pdp->pd_name, flags,
+ perm_flags, &v, sizeof (v));
+ if (status != DLADM_STATUS_OK)
+ return (status);
+
+ cnt = 0;
+ for (i = 0; cnt < *val_cnt && i < pdp->pd_noptval; i++) {
+ if ((v & pdp->pd_optval[i].vd_val) != 0) {
+ (void) snprintf(prop_val[cnt++], DLADM_STRSIZE,
+ pdp->pd_optval[i].vd_name);
+ }
+ }
+
+ if (i < pdp->pd_noptval)
+ return (DLADM_STATUS_BADVALCNT);
+
+ *val_cnt = cnt;
+ return (DLADM_STATUS_OK);
+}
/* ARGSUSED */
static dladm_status_t
diff --git a/usr/src/lib/libdladm/i386/Makefile b/usr/src/lib/libdladm/i386/Makefile
index 7eae19fff7..703879a954 100644
--- a/usr/src/lib/libdladm/i386/Makefile
+++ b/usr/src/lib/libdladm/i386/Makefile
@@ -23,9 +23,7 @@
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
-#pragma ident "%Z%%M% %I% %E% SMI"
-#
include ../Makefile.com
-install: all $(ROOTLIBS) $(ROOTLINKS) $(ROOTLINT)
+install: all $(ROOTLIBS) $(ROOTLINKS)
diff --git a/usr/src/lib/libdladm/sparc/Makefile b/usr/src/lib/libdladm/sparc/Makefile
index 7eae19fff7..703879a954 100644
--- a/usr/src/lib/libdladm/sparc/Makefile
+++ b/usr/src/lib/libdladm/sparc/Makefile
@@ -23,9 +23,7 @@
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
-#pragma ident "%Z%%M% %I% %E% SMI"
-#
include ../Makefile.com
-install: all $(ROOTLIBS) $(ROOTLINKS) $(ROOTLINT)
+install: all $(ROOTLIBS) $(ROOTLINKS)