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,32 ****
* 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.
*/
#ifndef _SYS_MAC_CLIENT_IMPL_H
#define _SYS_MAC_CLIENT_IMPL_H
--- 22,32 ----
* Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
* Copyright (c) 2012, Joyent, Inc. All rights reserved.
*/
/*
! * Copyright 2018 Joyent, Inc.
*/
#ifndef _SYS_MAC_CLIENT_IMPL_H
#define _SYS_MAC_CLIENT_IMPL_H
*** 55,65 ****
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_VNIC_PRIMARY 0x0002
#define MAC_CLIENT_FLAGS_MULTI_PRIMARY 0x0004
#define MAC_CLIENT_FLAGS_PASSIVE_PRIMARY 0x0008
/*
--- 55,65 ----
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_VNIC_PRIMARY 0x0002
#define MAC_CLIENT_FLAGS_MULTI_PRIMARY 0x0004
#define MAC_CLIENT_FLAGS_PASSIVE_PRIMARY 0x0008
/*
*** 129,144 ****
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
* own flow entry, but the rest underlying components SRS, etc,
* are common.
*/
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 */
--- 129,149 ----
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 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,320 ****
--- 316,393 ----
#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,333 ****
#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_RX_BYPASS_DISABLE 0x1000
#define MCIS_NO_UNICAST_ADDR 0x2000
/* Mac protection flags */
#define MPT_FLAG_V6_LOCAL_ADDR_SET 0x0001
--- 396,406 ----
#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_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