diff options
Diffstat (limited to 'usr/src/uts/common/inet/ip.h')
-rw-r--r-- | usr/src/uts/common/inet/ip.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/usr/src/uts/common/inet/ip.h b/usr/src/uts/common/inet/ip.h index 4e588a67c7..9b3fcf0b00 100644 --- a/usr/src/uts/common/inet/ip.h +++ b/usr/src/uts/common/inet/ip.h @@ -1674,6 +1674,7 @@ extern ill_g_head_t ill_g_heads[]; /* ILL List Head */ #define ILL_CAPAB_ZEROCOPY 0x10 /* Zero-copy */ #define ILL_CAPAB_POLL 0x20 /* Polling Toggle */ #define ILL_CAPAB_SOFT_RING 0x40 /* Soft_Ring capability */ +#define ILL_CAPAB_LSO 0x80 /* Large Segment Offload */ /* * Per-ill Multidata Transmit capabilities. @@ -1705,6 +1706,11 @@ typedef struct ill_dls_capab_s ill_dls_capab_t; */ typedef struct ill_rx_ring ill_rx_ring_t; +/* + * Per-ill Large Segment Offload capabilities. + */ +typedef struct ill_lso_capab_s ill_lso_capab_t; + /* The following are ill_state_flags */ #define ILL_LL_SUBNET_PENDING 0x01 /* Waiting for DL_INFO_ACK from drv */ #define ILL_CONDEMNED 0x02 /* No more new ref's to the ILL */ @@ -1867,6 +1873,7 @@ typedef struct ill_s { ill_hcksum_capab_t *ill_hcksum_capab; /* H/W cksumming capabilities */ ill_zerocopy_capab_t *ill_zerocopy_capab; /* Zero-copy capabilities */ ill_dls_capab_t *ill_dls_capab; /* Polling, soft ring capabilities */ + ill_lso_capab_t *ill_lso_capab; /* Large Segment Offload capabilities */ /* * New fields for IPv6 @@ -2895,8 +2902,9 @@ extern vmem_t *ip_minor_arena; #define ip_defend_interval ip_param_arr[53].ip_param_value #define ip_dup_recovery ip_param_arr[54].ip_param_value #define ip_restrict_interzone_loopback ip_param_arr[55].ip_param_value +#define ip_lso_outbound ip_param_arr[56].ip_param_value #ifdef DEBUG -#define ipv6_drop_inbound_icmpv6 ip_param_arr[56].ip_param_value +#define ipv6_drop_inbound_icmpv6 ip_param_arr[57].ip_param_value #else #define ipv6_drop_inbound_icmpv6 0 #endif @@ -3264,6 +3272,9 @@ struct pdesc_s; extern mblk_t *ip_mdinfo_alloc(ill_mdt_capab_t *); extern mblk_t *ip_mdinfo_return(ire_t *, conn_t *, char *, ill_mdt_capab_t *); +extern mblk_t *ip_lsoinfo_alloc(ill_lso_capab_t *); +extern mblk_t *ip_lsoinfo_return(ire_t *, conn_t *, char *, + ill_lso_capab_t *); extern uint_t ip_md_cksum(struct pdesc_s *, int, uint_t); extern boolean_t ip_md_addr_attr(struct multidata_s *, struct pdesc_s *, const mblk_t *); @@ -3368,6 +3379,13 @@ struct ill_zerocopy_capab_s { uint_t ill_zerocopy_flags; /* capabilities */ }; +struct ill_lso_capab_s { + uint_t ill_lso_version; /* interface version */ + uint_t ill_lso_on; /* on/off switch for LSO on this ILL */ + uint_t ill_lso_flags; /* capabilities */ + uint_t ill_lso_max; /* maximum size of payload */ +}; + /* Possible ill_states */ #define ILL_RING_INPROC 3 /* Being assigned to squeue */ #define ILL_RING_INUSE 2 /* Already Assigned to Rx Ring */ |