Print this page
11490 SRS ring polling disabled for VLANs
11491 Want DLS bypass for VLAN traffic
11492 add VLVF bypass to ixgbe core
2869 duplicate packets with vnics over aggrs
11489 DLS stat delete and aggr kstat can deadlock
Portions contributed by: Theo Schlossnagle <jesus@omniti.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Dan McDonald <danmcd@joyent.com>

@@ -22,11 +22,11 @@
  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  * Copyright (c) 2012, Joyent, Inc.  All rights reserved.
  */
 /*
- * Copyright (c) 2013, Joyent, Inc.  All rights reserved.
+ * Copyright 2018 Joyent, Inc.
  */
 
 #ifndef _SYS_MAC_CLIENT_IMPL_H
 #define _SYS_MAC_CLIENT_IMPL_H
 

@@ -55,11 +55,11 @@
         struct mac_unicast_impl_s       *mui_next;      /* SL */
         mac_address_t                   *mui_map;       /* SL */
         uint16_t                        mui_vid;        /* SL */
 } mac_unicast_impl_t;
 
-#define MAC_CLIENT_FLAGS_PRIMARY                0X0001
+#define MAC_CLIENT_FLAGS_PRIMARY                0x0001
 #define MAC_CLIENT_FLAGS_VNIC_PRIMARY           0x0002
 #define MAC_CLIENT_FLAGS_MULTI_PRIMARY          0x0004
 #define MAC_CLIENT_FLAGS_PASSIVE_PRIMARY        0x0008
 
 /*

@@ -129,16 +129,21 @@
 
         mac_address_t           *mci_unicast;
         uint32_t                mci_flags;              /* SL */
         krwlock_t               mci_rw_lock;
         mac_unicast_impl_t      *mci_unicast_list;      /* mci_rw_lock */
+
         /*
          * The mac_client_impl_t may be shared by multiple clients, i.e
          * multiple VLANs sharing the same MAC client. In this case the
-         * address/vid tubles differ and are each associated with their
+         * address/vid tuples differ and are each associated with their
          * own flow entry, but the rest underlying components SRS, etc,
          * are common.
+         *
+         * This is only needed to support sun4v vsw. There are several
+         * places in MAC we could simplify the code if we removed
+         * sun4v support.
          */
         flow_entry_t            *mci_flent_list;        /* mci_rw_lock */
         uint_t                  mci_nflents;            /* mci_rw_lock */
         uint_t                  mci_nvids;              /* mci_rw_lock */
         volatile uint32_t       mci_vidcache;           /* VID cache */

@@ -311,10 +316,78 @@
 
 #define MAC_TAG_NEEDED(mcip)                                            \
         (((mcip)->mci_state_flags & MCIS_TAG_DISABLE) == 0 &&           \
         (mcip)->mci_nvids == 1)                                         \
 
+/*
+ * MAC Client Implementation State (mci_state_flags)
+ *
+ * MCIS_IS_VNIC
+ *
+ *      The client is a VNIC.
+ *
+ * MCIS_EXCLUSIVE
+ *
+ *      The client has exclusive control over the MAC, such that it is
+ *      the sole client of the MAC.
+ *
+ * MCIS_TAG_DISABLE
+ *
+ *      MAC will not add VLAN tags to outgoing traffic. If this flag
+ *      is set it is up to the client to add the correct VLAN tag.
+ *
+ * MCIS_STRIP_DISABLE
+ *
+ *      MAC will not strip the VLAN tags on incoming traffic before
+ *      passing it to mci_rx_fn. This only applies to non-bypass
+ *      traffic.
+ *
+ * MCIS_IS_AGGR_PORT
+ *
+ *      The client represents a port on an aggr.
+ *
+ * MCIS_CLIENT_POLL_CAPABLE
+ *
+ *      The client is capable of polling the Rx TCP/UDP softrings.
+ *
+ * MCIS_DESC_LOGGED
+ *
+ *      This flag is set when the client's link info has been logged
+ *      by the mac_log_linkinfo() timer. This ensures that the
+ *      client's link info is only logged once.
+ *
+ * MCIS_SHARE_BOUND
+ *
+ *      This client has an HIO share bound to it.
+ *
+ * MCIS_DISABLE_TX_VID_CHECK
+ *
+ *      MAC will not check the VID of the client's Tx traffic.
+ *
+ * MCIS_USE_DATALINK_NAME
+ *
+ *      The client is using the same name as its underlying MAC. This
+ *      happens when dlmgmtd is unreachable during client creation.
+ *
+ * MCIS_UNICAST_HW
+ *
+ *      The client requires MAC address hardware classification. This
+ *      is only used by sun4v vsw.
+ *
+ * MCIS_IS_AGGR_CLIENT
+ *
+ *      The client sits atop an aggr.
+ *
+ * MCIS_RX_BYPASS_DISABLE
+ *
+ *      Do not allow the client to enable DLS bypass.
+ *
+ * MCIS_NO_UNICAST_ADDR
+ *
+ *      This client has no MAC unicast addresss associated with it.
+ *
+ */
 /* MCI state flags */
 #define MCIS_IS_VNIC                    0x0001
 #define MCIS_EXCLUSIVE                  0x0002
 #define MCIS_TAG_DISABLE                0x0004
 #define MCIS_STRIP_DISABLE              0x0008

@@ -323,11 +396,11 @@
 #define MCIS_DESC_LOGGED                0x0040
 #define MCIS_SHARE_BOUND                0x0080
 #define MCIS_DISABLE_TX_VID_CHECK       0x0100
 #define MCIS_USE_DATALINK_NAME          0x0200
 #define MCIS_UNICAST_HW                 0x0400
-#define MCIS_IS_AGGR                    0x0800
+#define MCIS_IS_AGGR_CLIENT             0x0800
 #define MCIS_RX_BYPASS_DISABLE          0x1000
 #define MCIS_NO_UNICAST_ADDR            0x2000
 
 /* Mac protection flags */
 #define MPT_FLAG_V6_LOCAL_ADDR_SET      0x0001