1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * CDDL HEADER START
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * The contents of this file are subject to the terms of the
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Common Development and Distribution License (the "License").
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * You may not use this file except in compliance with the License.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * See the License for the specific language governing permissions
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * and limitations under the License.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * When distributing Covered Code, include this CDDL HEADER in each
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * If applicable, add the following below this CDDL HEADER, with the
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * fields enclosed by brackets "[]" replaced with your own identifying
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * information: Portions Copyright [yyyy] [name of copyright owner]
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * CDDL HEADER END
7bd3a2e26cc8569257b88c1691d559138e1d32d0Sriharsha Basavapatna * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Use is subject to license terms.
06db247c678f0e3956535e8a6dec31d6c2108827raghuram * This header file contains the data structures which the
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * virtual switch (vsw) uses to communicate with its clients and
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * the outside world.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppoextern "C" {
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Only support ETHER mtu at moment.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/* ID of the source of a frame being switched */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VSW_VNETPORT 2 /* port connected to vnet (over ldc) */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VSW_LOCALDEV 4 /* vsw configured as an eth interface */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Number of hash chains in the multicast forwarding database.
7bd3a2e26cc8569257b88c1691d559138e1d32d0Sriharsha Basavapatna/* Number of descriptors - must be power of 2 */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * State of interface if switch plumbed as network device.
ba2e4443695ee6a6f420a35cd4fc3d3346d22932seb#define VSW_IF_PROMISC 0x4 /* Interface in promiscious mode */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Switching modes.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VSW_LAYER2_PROMISC 0x2 /* Layer 2 + promisc mode */
f0ca1d9a12d54d304791bc74525e2010ca924726sb#define VSW_PRI_ETH_DEFINED(vswp) ((vswp)->pri_num_types != 0)
6f09f0fef8e4582cfa771d87fe2a1f777bfb5cf0WENTAO YANGtypedef enum {
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng * vlan-id information.
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng mac_unicast_handle_t vl_muh; /* mac unicast handle */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * vsw instance state information.
6f09f0fef8e4582cfa771d87fe2a1f777bfb5cf0WENTAO YANG vsw_attach_progress_t attach_progress; /* attach progress flags */
808f26a819b6259a3340d8d53074a2f1635315cbSriharsha Basavapatna kmutex_t sw_thr_lock; /* setup switching thr lock */
808f26a819b6259a3340d8d53074a2f1635315cbSriharsha Basavapatna kcondvar_t sw_thr_cv; /* cv for setup switching thr */
808f26a819b6259a3340d8d53074a2f1635315cbSriharsha Basavapatna kthread_t *sw_thread; /* setup switching thread */
808f26a819b6259a3340d8d53074a2f1635315cbSriharsha Basavapatna sw_thr_flags_t sw_thr_flags; /* setup switching thr flags */
19b65a69adc64b3289ccb2fc32b805782e3f4540sb uint32_t switching_setup_done; /* setup switching done */
7b1f684a14f99a2b9b1b2561f484ff648eff6d9bSriharsha Basavapatna uint32_t mtu_physdev_orig; /* orig mtu of the physdev */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo /* mac layer */
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng krwlock_t maccl_rwlock; /* protect fields below */
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng mac_unicast_handle_t muh; /* mac unicast handle */
1107ea9346159bcc8ea154084897667347c4e6d5Sriharsha Basavapatna mac_notify_handle_t mnh; /* mac notify handle */
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng /* mac layer switching flag */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo /* Machine Description updates */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo /* if configured as an ethernet interface */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo /* multicast addresses when configured as eth interface */
678453a8ed49104d8adad58f3ba591bdc39883e8speer /* HybridIO related fields */
1107ea9346159bcc8ea154084897667347c4e6d5Sriharsha Basavapatna /* Link-state related fields */
1107ea9346159bcc8ea154084897667347c4e6d5Sriharsha Basavapatna boolean_t phys_no_link_update; /* no link-update supp */
1107ea9346159bcc8ea154084897667347c4e6d5Sriharsha Basavapatna boolean_t pls_update; /* phys link state update ? */
1107ea9346159bcc8ea154084897667347c4e6d5Sriharsha Basavapatna link_state_t phys_link_state; /* physical link state */
bce0a86e5d4d65341c5aca6da2595c848297b2aaWENTAO YANG /* bandwidth related fields */
06db247c678f0e3956535e8a6dec31d6c2108827raghuram * The flags that are used by vsw_mac_rx().
06db247c678f0e3956535e8a6dec31d6c2108827raghuramtypedef enum {
06db247c678f0e3956535e8a6dec31d6c2108827raghuramextern void vswdebug(vsw_t *vswp, const char *fmt, ...);
06db247c678f0e3956535e8a6dec31d6c2108827raghuram#endif /* DEBUG */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#endif /* _VSW_H */