diff options
Diffstat (limited to 'usr/src/uts/common/sys')
-rw-r--r-- | usr/src/uts/common/sys/dld.h | 3 | ||||
-rw-r--r-- | usr/src/uts/common/sys/dlpi.h | 43 | ||||
-rw-r--r-- | usr/src/uts/common/sys/ib/mgt/ibcm/ibcm_arp.h | 21 | ||||
-rw-r--r-- | usr/src/uts/common/sys/iphada.h | 144 | ||||
-rw-r--r-- | usr/src/uts/common/sys/pattr.h | 7 | ||||
-rw-r--r-- | usr/src/uts/common/sys/softmac_impl.h | 4 | ||||
-rw-r--r-- | usr/src/uts/common/sys/squeue.h | 13 | ||||
-rw-r--r-- | usr/src/uts/common/sys/squeue_impl.h | 6 | ||||
-rw-r--r-- | usr/src/uts/common/sys/stream.h | 6 | ||||
-rw-r--r-- | usr/src/uts/common/sys/tsol/tnet.h | 39 |
10 files changed, 38 insertions, 248 deletions
diff --git a/usr/src/uts/common/sys/dld.h b/usr/src/uts/common/sys/dld.h index 9542a15a8e..ed80269fbc 100644 --- a/usr/src/uts/common/sys/dld.h +++ b/usr/src/uts/common/sys/dld.h @@ -395,7 +395,8 @@ typedef struct dld_capab_poll_s { /* * Currently supported flags for LSO. */ -#define DLD_LSO_TX_BASIC_TCP_IPV4 0x01 /* TCP LSO capability */ +#define DLD_LSO_BASIC_TCP_IPV4 0x01 /* TCP LSO over IPv4 capability */ +#define DLD_LSO_BASIC_TCP_IPV6 0x02 /* TCP LSO over IPv6 capability */ typedef struct dld_capab_lso_s { uint_t lso_flags; /* capability flags */ diff --git a/usr/src/uts/common/sys/dlpi.h b/usr/src/uts/common/sys/dlpi.h index 8b0681e2d8..6b3a5801d7 100644 --- a/usr/src/uts/common/sys/dlpi.h +++ b/usr/src/uts/common/sys/dlpi.h @@ -593,10 +593,6 @@ union DL_qos_types { /* dl_data is dl_capab_id_t */ #define DL_CAPAB_HCKSUM 0x01 /* Checksum offload */ /* dl_data is dl_capab_hcksum_t */ -#define DL_CAPAB_IPSEC_AH 0x02 /* IPsec AH acceleration */ - /* dl_data is dl_capab_ipsec_t */ -#define DL_CAPAB_IPSEC_ESP 0x03 /* IPsec ESP acceleration */ - /* dl_data is dl_capab_ipsec_t */ #define DL_CAPAB_MDT 0x04 /* Multidata Transmit capability */ /* dl_data is dl_capab_mdt_t */ #define DL_CAPAB_ZEROCOPY 0x05 /* Zero-copy capability */ @@ -611,45 +607,8 @@ typedef struct { } dl_capability_sub_t; /* - * Definitions and structures needed for DL_CONTROL_REQ and DL_CONTROL_ACK - * primitives. - * Extensible message to send down control information to the DLS provider. - * The response is a DL_CONTROL_ACK or DL_ERROR_ACK. - * - * Different types of control operations will define different format for the - * key and data fields. ADD requires key and data fields; if the <type, key> - * matches an already existing entry a DL_ERROR_ACK will be returned. DELETE - * requires a key field; if the <type, key> does not exist, a DL_ERROR_ACK - * will be returned. FLUSH requires neither a key nor data; it - * unconditionally removes all entries for the specified type. GET requires a - * key field; the get operation returns the data for the <type, key>. If - * <type, key> doesn't exist a DL_ERROR_ACK is returned. UPDATE requires key - * and data fields; if <type, key> doesn't exist a DL_ERROR_ACK is returned. - */ - -/* - * Control operations - */ -#define DL_CO_ADD 0x01 /* Add new entry matching for <type,key> */ -#define DL_CO_DELETE 0x02 /* Delete the entry matching <type,key> */ -#define DL_CO_FLUSH 0x03 /* Purge all entries of <type> */ -#define DL_CO_GET 0x04 /* Get the data for the <type,key> */ -#define DL_CO_UPDATE 0x05 /* Update the data for <type,key> */ -#define DL_CO_SET 0x06 /* Add or update as appropriate */ - -/* - * Control types (dl_type field of dl_control_req_t and dl_control_ack_t) - */ -#define DL_CT_IPSEC_AH 0x01 /* AH; key=spi,dest_addr; */ - /* data=keying material */ -#define DL_CT_IPSEC_ESP 0x02 /* ESP; key=spi,des_taddr; */ - /* data=keying material */ - -/* * Module ID token to be included in new sub-capability structures. - * Existing sub-capabilities lacking an identification token, e.g. IPSEC - * hardware acceleration, need to be encapsulated within the ID sub- - * capability. Access to this structure must be done through + * Access to this structure must be done through * dlcapab{set,check}qid(). */ typedef struct { diff --git a/usr/src/uts/common/sys/ib/mgt/ibcm/ibcm_arp.h b/usr/src/uts/common/sys/ib/mgt/ibcm/ibcm_arp.h index c307ed7575..e0b7e1e1e7 100644 --- a/usr/src/uts/common/sys/ib/mgt/ibcm/ibcm_arp.h +++ b/usr/src/uts/common/sys/ib/mgt/ibcm/ibcm_arp.h @@ -31,24 +31,11 @@ extern "C" { #endif #include <sys/ib/mgt/ibcm/ibcm_impl.h> -#include <sys/modhash.h> #include <sys/ib/clients/ibd/ibd.h> -#include <sys/strsun.h> -#include <sys/socket.h> -#include <sys/stat.h> /* for S_IFCHR */ #include <inet/ip2mac.h> #include <inet/ip6.h> -/* - * IPoIB addr lookup completion function - */ -typedef int (*ibcm_arp_pr_comp_func_t) (void *usr_arg, int status); - #define IBCM_ARP_MAX_IFNAME_LEN 24 -#define IBCM_ARP_XMIT_COUNT 6 -#define IBCM_ARP_XMIT_INTERVAL 1000 /* timeout in milliseconds */ -#define IBCM_ARP_TIMEOUT \ - ((IBCM_ARP_XMIT_COUNT + 1) * IBCM_ARP_XMIT_INTERVAL) #define IBCM_H2N_GID(gid) \ { \ @@ -68,9 +55,7 @@ typedef int (*ibcm_arp_pr_comp_func_t) (void *usr_arg, int status); * Path record wait queue node definition */ typedef struct ibcm_arp_prwqn { - ibcm_arp_pr_comp_func_t func; /* user callback function */ - void *arg; /* callback function arg */ - timeout_id_t timeout_id; + struct ibcm_arp_streams_s *ib_str; uint8_t flags; ibt_ip_addr_t usrc_addr; /* user supplied src address */ ibt_ip_addr_t dst_addr; /* user supplied dest address */ @@ -89,15 +74,11 @@ typedef struct ibcm_arp_prwqn { typedef struct ibcm_arp_streams_s { kmutex_t lock; kcondvar_t cv; - queue_t *arpqueue; - vnode_t *arp_vp; int status; boolean_t done; ibcm_arp_prwqn_t *wqnp; } ibcm_arp_streams_t; -/* GID to IP-Addr and Ip-Addr to GID look-up functions. */ - #define IBCM_ARP_IBD_INSTANCES 4 typedef struct ibcm_arp_ip_s { diff --git a/usr/src/uts/common/sys/iphada.h b/usr/src/uts/common/sys/iphada.h deleted file mode 100644 index 9d1a6e28e8..0000000000 --- a/usr/src/uts/common/sys/iphada.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright 2002-2003 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -#ifndef _SYS_IPHADA_H -#define _SYS_IPHADA_H - -#pragma ident "%Z%%M% %I% %E% SMI" - -#ifdef __cplusplus -extern "C" { -#endif - -#define DA_ICV_MAX_LEN 128 /* max ICV length [bytes] */ - -/* - * iphada.h header for IP Hardware Acceleration Data Attributes - * - * This is a contract private interface for use by the Sun - * Hardware Accelerated Ethernet driver ONLY. - */ -typedef struct da_ipsec { - int da_type; /* M_CTL message ident */ - int da_flag; - uint32_t da_icv_len; /* da_icv length in bytes */ - uchar_t da_icv[DA_ICV_MAX_LEN]; /* ICV for AH or ESP+auth */ -} da_ipsec_t; - -#define IPHADA_M_CTL 0xA1D53DE5u - -/* - * IPSec algorithms capabilities (cip_data in dl_capab_ipsec_t) - */ -typedef struct { - t_uscalar_t alg_type; - t_uscalar_t alg_prim; /* algorithm primitive */ - t_uscalar_t alg_thruput; /* approx throughput metric in Mb/s */ - t_uscalar_t alg_flag; /* flags */ - t_uscalar_t alg_minbits; /* minimum key len in bits */ - t_uscalar_t alg_maxbits; /* maximum key len in bits */ - t_uscalar_t alg_incrbits; /* key len increment in bits */ -} dl_capab_ipsec_alg_t; - -/* - * IPSec sub-capability (follows dl_capability_sub_t) - */ -typedef struct { - t_uscalar_t cip_version; /* interface version */ - t_uscalar_t cip_nciphers; /* number ciphers supported */ - dl_capab_ipsec_alg_t cip_data[1]; /* data */ -} dl_capab_ipsec_t; - -/* - * Algorithm types (alg_type field of dl_capab_ipsec_alg_t) - */ -#define DL_CAPAB_IPSEC_ALG_AUTH 0x01 /* authentication alg. */ -#define DL_CAPAB_IPSEC_ALG_ENCR 0x02 /* encryption alg. */ - -/* alg_prim ciphers */ -#define DL_CAPAB_IPSEC_ENCR_DES 0x02 -#define DL_CAPAB_IPSEC_ENCR_3DES 0x03 -#define DL_CAPAB_IPSEC_ENCR_BLOWFISH 0x07 -#define DL_CAPAB_IPSEC_ENCR_NULL 0x0b /* no encryption */ -#define DL_CAPAB_IPSEC_ENCR_AES 0x0c - -/* alg_prim authentications */ -#define DL_CAPAB_IPSEC_AUTH_NONE 0x00 /* no authentication */ -#define DL_CAPAB_IPSEC_AUTH_MD5HMAC 0x02 -#define DL_CAPAB_IPSEC_AUTH_SHA1HMAC 0x03 - -/* alg_flag values */ -#define DL_CAPAB_ALG_ENABLE 0x01 /* enable this algorithm */ - -/* - * For DL_CT_IPSEC_AH and DL_CT_IPSEC_ESP, the optional dl_key data - * that follows the dl_control_req_t or dl_control_ack_t will be the IPsec - * SPI (Security Parameters Index) value and the destination address. - * This is defined as being unique per protocol. - */ - -#define DL_CTL_IPSEC_ADDR_LEN 16 /* IP addr length in bytes */ - -typedef struct dl_ct_ipsec_key { - uint32_t dl_key_spi; /* Security Parameters Index value */ - uchar_t dl_key_dest_addr[DL_CTL_IPSEC_ADDR_LEN]; /* dest IP address */ - uint32_t dl_key_addr_family; /* family of dest IP address */ - /* (AF_INET or AF_INET6) */ -} dl_ct_ipsec_key_t; - -#define DL_CT_IPSEC_MAX_KEY_LEN 512 /* max key length in bytes */ - -/* - * Possible flags for sadb_sa_flags. - */ -#define DL_CT_IPSEC_INBOUND 0x01 /* SA can be used for inbound pkts */ -#define DL_CT_IPSEC_OUTBOUND 0x02 /* SA can be used for outbound pkts */ - -/* - * minimal SADB entry content - * fields are defined as per RFC 2367 and <net/pfkeyv2.h> - * This defines the content and format of the dl_data portion of - * the dl_control_req_t or dl_control_ack_t. - */ -typedef struct dl_ct_ipsec { - uint8_t sadb_sa_auth; /* Authentication algorithm */ - uint8_t sadb_sa_encrypt; /* Encryption algorithm */ - uint32_t sadb_sa_flags; /* SA flags. */ - uint16_t sadb_key_len_a; /* auth key length in bytes */ - uint16_t sadb_key_bits_a; /* auth key length in bits */ - uint16_t sadb_key_data_a[DL_CT_IPSEC_MAX_KEY_LEN]; /* key data */ - uint16_t sadb_key_len_e; /* encr key length in bytes */ - uint16_t sadb_key_bits_e; /* encr key length in bits */ - uint16_t sadb_key_data_e[DL_CT_IPSEC_MAX_KEY_LEN]; /* key data */ -} dl_ct_ipsec_t; - - - -#ifdef __cplusplus -} -#endif - -#endif /* _SYS_IPHADA_H */ diff --git a/usr/src/uts/common/sys/pattr.h b/usr/src/uts/common/sys/pattr.h index cac046d675..f3b8397681 100644 --- a/usr/src/uts/common/sys/pattr.h +++ b/usr/src/uts/common/sys/pattr.h @@ -19,15 +19,13 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_PATTR_H #define _SYS_PATTR_H -#pragma ident "%Z%%M% %I% %E% SMI" - #ifdef __cplusplus extern "C" { #endif @@ -92,6 +90,9 @@ typedef struct pattr_hcksum_s { /* check the attached h/w computed */ /* checksum value to determine if */ /* checksum was bad */ + +#define HCK_FLAGS (HCK_IPV4_HDRCKSUM | HCK_PARTIALCKSUM | \ + HCK_FULLCKSUM | HCK_FULLCKSUM_OK) /* * Extended hardware offloading flags that also use hcksum_flags */ diff --git a/usr/src/uts/common/sys/softmac_impl.h b/usr/src/uts/common/sys/softmac_impl.h index eb71063bc7..bd94d4982e 100644 --- a/usr/src/uts/common/sys/softmac_impl.h +++ b/usr/src/uts/common/sys/softmac_impl.h @@ -301,7 +301,9 @@ typedef struct softmac_upper_s { uint32_t su_bound : 1, /* SL */ su_active : 1, /* SL */ - su_direct : 1; /* SL */ + su_direct : 1, /* SL */ + su_is_arp : 1, + su_pad_to_32:28; /* * Used for fastpath data path. diff --git a/usr/src/uts/common/sys/squeue.h b/usr/src/uts/common/sys/squeue.h index a2d808f647..de0f18bd4d 100644 --- a/usr/src/uts/common/sys/squeue.h +++ b/usr/src/uts/common/sys/squeue.h @@ -44,21 +44,19 @@ typedef struct squeue_s squeue_t; (mp)->b_prev = (mblk_t *)(arg); \ } -#define GET_SQUEUE(mp) ((conn_t *)((mp)->b_prev))->conn_sqp - #define SQ_FILL 0x0001 #define SQ_NODRAIN 0x0002 #define SQ_PROCESS 0x0004 -#define SQUEUE_ENTER(sqp, head, tail, cnt, flag, tag) { \ - sqp->sq_enter(sqp, head, tail, cnt, flag, tag); \ +#define SQUEUE_ENTER(sqp, head, tail, cnt, ira, flag, tag) { \ + sqp->sq_enter(sqp, head, tail, cnt, ira, flag, tag); \ } -#define SQUEUE_ENTER_ONE(sqp, mp, proc, arg, flag, tag) { \ +#define SQUEUE_ENTER_ONE(sqp, mp, proc, arg, ira, flag, tag) { \ ASSERT(mp->b_next == NULL); \ ASSERT(mp->b_prev == NULL); \ SET_SQUEUE(mp, proc, arg); \ - SQUEUE_ENTER(sqp, mp, mp, 1, flag, tag); \ + SQUEUE_ENTER(sqp, mp, mp, 1, ira, flag, tag); \ } /* @@ -77,12 +75,13 @@ typedef enum { SQPRIVATE_MAX } sqprivate_t; +struct ip_recv_attr_s; extern void squeue_init(void); extern squeue_t *squeue_create(clock_t, pri_t); extern void squeue_bind(squeue_t *, processorid_t); extern void squeue_unbind(squeue_t *); extern void squeue_enter(squeue_t *, mblk_t *, mblk_t *, - uint32_t, int, uint8_t); + uint32_t, struct ip_recv_attr_s *, int, uint8_t); extern uintptr_t *squeue_getprivate(squeue_t *, sqprivate_t); struct conn_s; diff --git a/usr/src/uts/common/sys/squeue_impl.h b/usr/src/uts/common/sys/squeue_impl.h index bd934cc0b3..22550886eb 100644 --- a/usr/src/uts/common/sys/squeue_impl.h +++ b/usr/src/uts/common/sys/squeue_impl.h @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -79,9 +79,9 @@ typedef struct squeue_set_s { processorid_t sqs_cpuid; } squeue_set_t; -typedef void (*sqproc_t)(void *, mblk_t *, void *); +typedef void (*sqproc_t)(void *, mblk_t *, void *, struct ip_recv_attr_s *); typedef void (*sq_enter_proc_t)(squeue_t *, mblk_t *, mblk_t *, uint32_t, - int, uint8_t); + struct ip_recv_attr_s *, int, uint8_t); typedef void (*sq_drain_proc_t)(squeue_t *, uint_t, hrtime_t); extern void squeue_worker_wakeup(squeue_t *); diff --git a/usr/src/uts/common/sys/stream.h b/usr/src/uts/common/sys/stream.h index b9c96a8345..7a3b4e3448 100644 --- a/usr/src/uts/common/sys/stream.h +++ b/usr/src/uts/common/sys/stream.h @@ -404,9 +404,6 @@ typedef struct bcache { #define STRUIO_IP 0x04 /* IP checksum stored in db_struioun */ #define STRUIO_ZC 0x08 /* mblk eligible for zero-copy */ #define STRUIO_ZCNOTIFY 0x10 /* notify stream head when mblk acked */ -#define STRUIO_EAGER 0x20 /* new eager; db_cksumstart has squeue to use */ -#define STRUIO_POLICY 0x40 /* new eager when IPsec is enabled */ -#define STRUIO_CONNECT 0x80 /* conn did a connect */ /* * Message flags. These are interpreted by the stream head. @@ -418,8 +415,7 @@ typedef struct bcache { /* UNUSED 0x08 was MSGNOGET (can be recycled) */ #define MSGMARKNEXT 0x10 /* Private: first byte of next msg marked */ #define MSGNOTMARKNEXT 0x20 /* Private: ... not marked */ -#define MSGHASREF 0x40 /* Private: message has reference to owner */ -#define MSGWAITSYNC 0x80 /* Private: waiting for sync squeue enter */ +#define MSGWAITSYNC 0x40 /* Private: waiting for sync squeue enter */ /* * Streams message types. diff --git a/usr/src/uts/common/sys/tsol/tnet.h b/usr/src/uts/common/sys/tsol/tnet.h index 221f4c775a..0da65ae5ca 100644 --- a/usr/src/uts/common/sys/tsol/tnet.h +++ b/usr/src/uts/common/sys/tsol/tnet.h @@ -46,35 +46,30 @@ extern "C" { extern int tsol_tnrh_chk(tsol_tpent_t *, bslabel_t *, int); extern tsol_tnrhc_t *find_rhc(const void *, uchar_t, boolean_t); -extern int tsol_check_dest(const cred_t *, const void *, uchar_t, uint_t, - cred_t **); -extern int tsol_compute_label(const cred_t *, ipaddr_t, uchar_t *, - ip_stack_t *); -extern int tsol_compute_label_v6(const cred_t *, const in6_addr_t *, uchar_t *, - ip_stack_t *); -extern int tsol_check_label(const cred_t *, mblk_t **, uint_t, - ip_stack_t *, pid_t); -extern int tsol_check_label_v6(const cred_t *, mblk_t **, uint_t, - ip_stack_t *, pid_t); +extern int tsol_check_dest(const ts_label_t *, const void *, uchar_t, + uint_t, boolean_t, ts_label_t **); +extern int tsol_compute_label_v4(const ts_label_t *, zoneid_t, ipaddr_t, + uchar_t *, ip_stack_t *); +extern int tsol_compute_label_v6(const ts_label_t *, zoneid_t, + const in6_addr_t *, uchar_t *, ip_stack_t *); +extern int tsol_check_label_v4(const ts_label_t *, zoneid_t, mblk_t **, + uint_t, boolean_t, ip_stack_t *, ts_label_t **); +extern int tsol_check_label_v6(const ts_label_t *, zoneid_t, mblk_t **, + uint_t, boolean_t, ip_stack_t *, ts_label_t **); extern int tsol_prepend_option(uchar_t *, ipha_t *, int); extern int tsol_prepend_option_v6(uchar_t *, ip6_t *, int); extern int tsol_remove_secopt(ipha_t *, int); extern int tsol_remove_secopt_v6(ip6_t *, int); -extern int tsol_update_sticky(ip6_pkt_t *, uint_t *, const uchar_t *); -extern int tsol_update_options(uchar_t **, uint_t *, uint_t *, - const uchar_t *); -extern boolean_t tsol_option_set(uchar_t **, uint_t *, uint_t, const uchar_t *, - uint_t); extern tsol_ire_gw_secattr_t *ire_gw_secattr_alloc(int); extern void ire_gw_secattr_free(tsol_ire_gw_secattr_t *); -extern boolean_t tsol_can_reply_error(const mblk_t *); +extern boolean_t tsol_can_reply_error(const mblk_t *, ip_recv_attr_t *); extern boolean_t tsol_receive_local(const mblk_t *, const void *, uchar_t, - boolean_t, const conn_t *); -extern boolean_t tsol_can_accept_raw(mblk_t *, boolean_t); -extern boolean_t tsol_get_pkt_label(mblk_t *, int); -extern zoneid_t tsol_packet_to_zoneid(const mblk_t *); + ip_recv_attr_t *, const conn_t *); +extern boolean_t tsol_can_accept_raw(mblk_t *, ip_recv_attr_t *, boolean_t); +extern boolean_t tsol_get_pkt_label(mblk_t *, int, ip_recv_attr_t *); +extern zoneid_t tsol_attr_to_zoneid(const ip_recv_attr_t *); extern boolean_t tsol_get_option_v4(mblk_t *, tsol_ip_label_t *, uint8_t **); extern boolean_t tsol_get_option_v6(mblk_t *, tsol_ip_label_t *, uint8_t **); @@ -83,8 +78,8 @@ extern boolean_t tsol_find_secopt_v6(const uchar_t *, uint_t, uchar_t **, extern int tsol_ire_match_gwattr(ire_t *, const ts_label_t *); extern int tsol_rtsa_init(rt_msghdr_t *, tsol_rtsecattr_t *, caddr_t); -extern int tsol_ire_init_gwattr(ire_t *, uchar_t, tsol_gc_t *, tsol_gcgrp_t *); -extern mblk_t *tsol_ip_forward(ire_t *, mblk_t *); +extern int tsol_ire_init_gwattr(ire_t *, uchar_t, tsol_gc_t *); +extern mblk_t *tsol_ip_forward(ire_t *, mblk_t *, const ip_recv_attr_t *); extern uint32_t tsol_pmtu_adjust(mblk_t *, uint32_t, int, int); extern mlp_type_t tsol_mlp_addr_type(zoneid_t, uchar_t, const void *, |