diff options
Diffstat (limited to 'usr/src/uts/common')
-rw-r--r-- | usr/src/uts/common/fs/zfs/arc.c | 64 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/npi/npi_mac.c | 1 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/npi/npi_rxdma.c | 3 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/npi/npi_txc.c | 13 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_fflp.c | 300 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_fflp_hash.c | 2 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_hio.c | 14 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_hw.c | 3 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_intr.c | 25 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_mac.c | 10 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_main.c | 22 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_ndd.c | 7 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_rxdma.c | 5 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_send.c | 6 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_txc.c | 6 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_txdma.c | 12 | ||||
-rw-r--r-- | usr/src/uts/common/io/nxge/nxge_virtual.c | 12 | ||||
-rw-r--r-- | usr/src/uts/common/sys/auxv_SPARC.h | 19 | ||||
-rw-r--r-- | usr/src/uts/common/sys/nxge/nxge_impl.h | 6 |
19 files changed, 295 insertions, 235 deletions
diff --git a/usr/src/uts/common/fs/zfs/arc.c b/usr/src/uts/common/fs/zfs/arc.c index cc5143e4df..1034481117 100644 --- a/usr/src/uts/common/fs/zfs/arc.c +++ b/usr/src/uts/common/fs/zfs/arc.c @@ -751,7 +751,13 @@ static uint8_t l2arc_thread_exit; static kmutex_t l2arc_rebuild_thr_lock; static kcondvar_t l2arc_rebuild_thr_cv; -static abd_t *arc_get_data_abd(arc_buf_hdr_t *, uint64_t, void *); +enum arc_hdr_alloc_flags { + ARC_HDR_ALLOC_RDATA = 0x1, + ARC_HDR_DO_ADAPT = 0x2, +}; + + +static abd_t *arc_get_data_abd(arc_buf_hdr_t *, uint64_t, void *, boolean_t); typedef enum arc_fill_flags { ARC_FILL_LOCKED = 1 << 0, /* hdr lock is held */ ARC_FILL_COMPRESSED = 1 << 1, /* fill with compressed data */ @@ -761,12 +767,12 @@ typedef enum arc_fill_flags { } arc_fill_flags_t; static void *arc_get_data_buf(arc_buf_hdr_t *, uint64_t, void *); -static void arc_get_data_impl(arc_buf_hdr_t *, uint64_t, void *); +static void arc_get_data_impl(arc_buf_hdr_t *, uint64_t, void *, boolean_t); static void arc_free_data_abd(arc_buf_hdr_t *, abd_t *, uint64_t, void *); static void arc_free_data_buf(arc_buf_hdr_t *, void *, uint64_t, void *); static void arc_free_data_impl(arc_buf_hdr_t *hdr, uint64_t size, void *tag); static void arc_hdr_free_pabd(arc_buf_hdr_t *, boolean_t); -static void arc_hdr_alloc_pabd(arc_buf_hdr_t *, boolean_t); +static void arc_hdr_alloc_pabd(arc_buf_hdr_t *, int); static void arc_access(arc_buf_hdr_t *, kmutex_t *); static boolean_t arc_is_overflowing(); static void arc_buf_watch(arc_buf_t *); @@ -1711,7 +1717,7 @@ arc_hdr_decrypt(arc_buf_hdr_t *hdr, spa_t *spa, const zbookmark_phys_t *zb) ASSERT(HDR_EMPTY_OR_LOCKED(hdr)); ASSERT(HDR_ENCRYPTED(hdr)); - arc_hdr_alloc_pabd(hdr, B_FALSE); + arc_hdr_alloc_pabd(hdr, ARC_HDR_DO_ADAPT); ret = spa_do_crypt_abd(B_FALSE, spa, zb, hdr->b_crypt_hdr.b_ot, B_FALSE, bswap, hdr->b_crypt_hdr.b_salt, hdr->b_crypt_hdr.b_iv, @@ -1738,7 +1744,7 @@ arc_hdr_decrypt(arc_buf_hdr_t *hdr, spa_t *spa, const zbookmark_phys_t *zb) * and then loan a buffer from it, rather than allocating a * linear buffer and wrapping it in an abd later. */ - cabd = arc_get_data_abd(hdr, arc_hdr_size(hdr), hdr); + cabd = arc_get_data_abd(hdr, arc_hdr_size(hdr), hdr, B_TRUE); tmp = abd_borrow_buf(cabd, arc_hdr_size(hdr)); ret = zio_decompress_data(HDR_GET_COMPRESS(hdr), @@ -3022,9 +3028,11 @@ arc_buf_destroy_impl(arc_buf_t *buf) } static void -arc_hdr_alloc_pabd(arc_buf_hdr_t *hdr, boolean_t alloc_rdata) +arc_hdr_alloc_pabd(arc_buf_hdr_t *hdr, int alloc_flags) { uint64_t size; + boolean_t alloc_rdata = ((alloc_flags & ARC_HDR_ALLOC_RDATA) != 0); + boolean_t do_adapt = ((alloc_flags & ARC_HDR_DO_ADAPT) != 0); ASSERT3U(HDR_GET_LSIZE(hdr), >, 0); ASSERT(HDR_HAS_L1HDR(hdr)); @@ -3034,12 +3042,14 @@ arc_hdr_alloc_pabd(arc_buf_hdr_t *hdr, boolean_t alloc_rdata) if (alloc_rdata) { size = HDR_GET_PSIZE(hdr); ASSERT3P(hdr->b_crypt_hdr.b_rabd, ==, NULL); - hdr->b_crypt_hdr.b_rabd = arc_get_data_abd(hdr, size, hdr); + hdr->b_crypt_hdr.b_rabd = arc_get_data_abd(hdr, size, hdr, + do_adapt); ASSERT3P(hdr->b_crypt_hdr.b_rabd, !=, NULL); } else { size = arc_hdr_size(hdr); ASSERT3P(hdr->b_l1hdr.b_pabd, ==, NULL); - hdr->b_l1hdr.b_pabd = arc_get_data_abd(hdr, size, hdr); + hdr->b_l1hdr.b_pabd = arc_get_data_abd(hdr, size, hdr, + do_adapt); ASSERT3P(hdr->b_l1hdr.b_pabd, !=, NULL); } @@ -3092,6 +3102,7 @@ arc_hdr_alloc(uint64_t spa, int32_t psize, int32_t lsize, arc_buf_contents_t type, boolean_t alloc_rdata) { arc_buf_hdr_t *hdr; + int flags = ARC_HDR_DO_ADAPT; VERIFY(type == ARC_BUFC_DATA || type == ARC_BUFC_METADATA); if (protected) { @@ -3099,6 +3110,7 @@ arc_hdr_alloc(uint64_t spa, int32_t psize, int32_t lsize, } else { hdr = kmem_cache_alloc(hdr_full_cache, KM_PUSHPAGE); } + flags |= alloc_rdata ? ARC_HDR_ALLOC_RDATA : 0; ASSERT(HDR_EMPTY(hdr)); ASSERT3P(hdr->b_l1hdr.b_freeze_cksum, ==, NULL); ASSERT3P(hdr->b_l1hdr.b_thawed, ==, NULL); @@ -3122,7 +3134,7 @@ arc_hdr_alloc(uint64_t spa, int32_t psize, int32_t lsize, * the compressed or uncompressed data depending on the block * it references and compressed arc enablement. */ - arc_hdr_alloc_pabd(hdr, alloc_rdata); + arc_hdr_alloc_pabd(hdr, flags); ASSERT(zfs_refcount_is_zero(&hdr->b_l1hdr.b_refcnt)); return (hdr); @@ -4896,11 +4908,12 @@ arc_is_overflowing(void) } static abd_t * -arc_get_data_abd(arc_buf_hdr_t *hdr, uint64_t size, void *tag) +arc_get_data_abd(arc_buf_hdr_t *hdr, uint64_t size, void *tag, + boolean_t do_adapt) { arc_buf_contents_t type = arc_buf_type(hdr); - arc_get_data_impl(hdr, size, tag); + arc_get_data_impl(hdr, size, tag, do_adapt); if (type == ARC_BUFC_METADATA) { return (abd_alloc(size, B_TRUE)); } else { @@ -4914,7 +4927,7 @@ arc_get_data_buf(arc_buf_hdr_t *hdr, uint64_t size, void *tag) { arc_buf_contents_t type = arc_buf_type(hdr); - arc_get_data_impl(hdr, size, tag); + arc_get_data_impl(hdr, size, tag, B_TRUE); if (type == ARC_BUFC_METADATA) { return (zio_buf_alloc(size)); } else { @@ -4930,12 +4943,14 @@ arc_get_data_buf(arc_buf_hdr_t *hdr, uint64_t size, void *tag) * limit, we'll only signal the reclaim thread and continue on. */ static void -arc_get_data_impl(arc_buf_hdr_t *hdr, uint64_t size, void *tag) +arc_get_data_impl(arc_buf_hdr_t *hdr, uint64_t size, void *tag, + boolean_t do_adapt) { arc_state_t *state = hdr->b_l1hdr.b_state; arc_buf_contents_t type = arc_buf_type(hdr); - arc_adapt(size, state); + if (do_adapt) + arc_adapt(size, state); /* * If arc_size is currently overflowing, and has grown past our @@ -5758,6 +5773,7 @@ top: boolean_t devw = B_FALSE; uint64_t size; abd_t *hdr_abd; + int alloc_flags = encrypted_read ? ARC_HDR_ALLOC_RDATA : 0; if (hdr == NULL) { /* this block is not in the cache */ @@ -5824,8 +5840,9 @@ top: * do this after we've called arc_access() to * avoid hitting an assert in remove_reference(). */ + arc_adapt(arc_hdr_size(hdr), hdr->b_l1hdr.b_state); arc_access(hdr, hash_lock); - arc_hdr_alloc_pabd(hdr, encrypted_read); + arc_hdr_alloc_pabd(hdr, alloc_flags); } if (encrypted_read) { @@ -6225,7 +6242,7 @@ arc_release(arc_buf_t *buf, void *tag) if (arc_can_share(hdr, lastbuf)) { arc_share_buf(hdr, lastbuf); } else { - arc_hdr_alloc_pabd(hdr, B_FALSE); + arc_hdr_alloc_pabd(hdr, ARC_HDR_DO_ADAPT); abd_copy_from_buf(hdr->b_l1hdr.b_pabd, buf->b_data, psize); } @@ -6448,7 +6465,7 @@ arc_write_ready(zio_t *zio) if (ARC_BUF_ENCRYPTED(buf)) { ASSERT3U(psize, >, 0); ASSERT(ARC_BUF_COMPRESSED(buf)); - arc_hdr_alloc_pabd(hdr, B_TRUE); + arc_hdr_alloc_pabd(hdr, ARC_HDR_DO_ADAPT|ARC_HDR_ALLOC_RDATA); abd_copy(hdr->b_crypt_hdr.b_rabd, zio->io_abd, psize); } else if (zfs_abd_scatter_enabled || !arc_can_share(hdr, buf)) { /* @@ -6458,16 +6475,17 @@ arc_write_ready(zio_t *zio) */ if (BP_IS_ENCRYPTED(bp)) { ASSERT3U(psize, >, 0); - arc_hdr_alloc_pabd(hdr, B_TRUE); + arc_hdr_alloc_pabd(hdr, + ARC_HDR_DO_ADAPT|ARC_HDR_ALLOC_RDATA); abd_copy(hdr->b_crypt_hdr.b_rabd, zio->io_abd, psize); } else if (arc_hdr_get_compress(hdr) != ZIO_COMPRESS_OFF && !ARC_BUF_COMPRESSED(buf)) { ASSERT3U(psize, >, 0); - arc_hdr_alloc_pabd(hdr, B_FALSE); + arc_hdr_alloc_pabd(hdr, ARC_HDR_DO_ADAPT); abd_copy(hdr->b_l1hdr.b_pabd, zio->io_abd, psize); } else { ASSERT3U(zio->io_orig_size, ==, arc_hdr_size(hdr)); - arc_hdr_alloc_pabd(hdr, B_FALSE); + arc_hdr_alloc_pabd(hdr, ARC_HDR_DO_ADAPT); abd_copy_from_buf(hdr->b_l1hdr.b_pabd, buf->b_data, arc_buf_size(buf)); } @@ -7804,7 +7822,8 @@ l2arc_untransform(zio_t *zio, l2arc_read_callback_t *cb) * until arc_read_done(). */ if (BP_IS_ENCRYPTED(bp)) { - abd_t *eabd = arc_get_data_abd(hdr, arc_hdr_size(hdr), hdr); + abd_t *eabd = arc_get_data_abd(hdr, arc_hdr_size(hdr), hdr, + B_TRUE); zio_crypt_decode_params_bp(bp, salt, iv); zio_crypt_decode_mac_bp(bp, mac); @@ -7840,7 +7859,8 @@ l2arc_untransform(zio_t *zio, l2arc_read_callback_t *cb) */ if (HDR_GET_COMPRESS(hdr) != ZIO_COMPRESS_OFF && !HDR_COMPRESSION_ENABLED(hdr)) { - abd_t *cabd = arc_get_data_abd(hdr, arc_hdr_size(hdr), hdr); + abd_t *cabd = arc_get_data_abd(hdr, arc_hdr_size(hdr), hdr, + B_TRUE); void *tmp = abd_borrow_buf(cabd, arc_hdr_size(hdr)); ret = zio_decompress_data(HDR_GET_COMPRESS(hdr), diff --git a/usr/src/uts/common/io/nxge/npi/npi_mac.c b/usr/src/uts/common/io/nxge/npi/npi_mac.c index 8d808577f9..d36f9d913f 100644 --- a/usr/src/uts/common/io/nxge/npi/npi_mac.c +++ b/usr/src/uts/common/io/nxge/npi/npi_mac.c @@ -1014,6 +1014,7 @@ npi_mac_port_attr(npi_handle_t handle, io_op_t op, uint8_t portn, min_fsize = (val & XMAC_MIN_TX_FRM_SZ_MASK) >> XMAC_MIN_TX_FRM_SZ_SHIFT; XMAC_REG_RD(handle, portn, XMAC_MAX_REG, &val); + max_fsize = val & XMAC_MAX_FRM_SZ_MASK; attrp->odata[0] = min_fsize; attrp->odata[1] = max_fsize; } diff --git a/usr/src/uts/common/io/nxge/npi/npi_rxdma.c b/usr/src/uts/common/io/nxge/npi/npi_rxdma.c index f9151782c0..35f1dc77bf 100644 --- a/usr/src/uts/common/io/nxge/npi/npi_rxdma.c +++ b/usr/src/uts/common/io/nxge/npi/npi_rxdma.c @@ -260,6 +260,9 @@ npi_rxdma_cfg_logical_page(npi_handle_t handle, uint8_t rdc, uint64_t value_offset, reloc_offset, mask_offset; uint64_t valid_offset; + value_offset = 0; + reloc_offset = 0; + mask_offset = 0; ASSERT(RXDMA_CHANNEL_VALID(rdc)); if (!RXDMA_CHANNEL_VALID(rdc)) { NPI_ERROR_MSG((handle.function, NPI_ERR_CTL, diff --git a/usr/src/uts/common/io/nxge/npi/npi_txc.c b/usr/src/uts/common/io/nxge/npi/npi_txc.c index aa38ed6544..481d26ce4c 100644 --- a/usr/src/uts/common/io/nxge/npi/npi_txc.c +++ b/usr/src/uts/common/io/nxge/npi/npi_txc.c @@ -23,8 +23,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include <npi_txc.h> /* @@ -941,12 +939,9 @@ npi_txc_ro_ecc_state_clr(npi_handle_t handle, uint8_t port) * NPI_FAILURE - * NPI_TXC_PORT_INVALID */ -#ifdef lint -/*ARGSUSED*/ -#endif npi_status_t npi_txc_sf_states_get(npi_handle_t handle, uint8_t port, - txc_sf_states_t *states) + txc_sf_states_t *states) { txc_sfecc_st_t ecc; txc_sf_data0_t d0; @@ -955,6 +950,12 @@ npi_txc_sf_states_get(npi_handle_t handle, uint8_t port, txc_sf_data3_t d3; txc_sf_data4_t d4; + d0.value = 0; + d1.value = 0; + d2.value = 0; + d3.value = 0; + d4.value = 0; + ASSERT(IS_PORT_NUM_VALID(port)); TXC_FZC_CNTL_REG_READ64(handle, TXC_SFECC_ST_REG, port, &ecc.value); diff --git a/usr/src/uts/common/io/nxge/nxge_fflp.c b/usr/src/uts/common/io/nxge/nxge_fflp.c index 109aa99b3d..cb6eb78b15 100644 --- a/usr/src/uts/common/io/nxge/nxge_fflp.c +++ b/usr/src/uts/common/io/nxge/nxge_fflp.c @@ -906,47 +906,45 @@ static void nxge_fill_tcam_entry_udp(p_nxge_t nxgep, flow_spec_t *flow_spec, tcam_entry_t *tcam_ptr) { - udpip4_spec_t *fspec_key; - udpip4_spec_t *fspec_mask; - - fspec_key = (udpip4_spec_t *)&flow_spec->uh.udpip4spec; - fspec_mask = (udpip4_spec_t *)&flow_spec->um.udpip4spec; - TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_key, fspec_key->ip4dst); - TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_mask, fspec_mask->ip4dst); - TCAM_IPV4_ADDR(tcam_ptr->ip4_src_key, fspec_key->ip4src); - TCAM_IPV4_ADDR(tcam_ptr->ip4_src_mask, fspec_mask->ip4src); +#define fspec_key (flow_spec->uh.udpip4spec) +#define fspec_mask (flow_spec->um.udpip4spec) + + TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_key, fspec_key.ip4dst); + TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_mask, fspec_mask.ip4dst); + TCAM_IPV4_ADDR(tcam_ptr->ip4_src_key, fspec_key.ip4src); + TCAM_IPV4_ADDR(tcam_ptr->ip4_src_mask, fspec_mask.ip4src); TCAM_IP_PORTS(tcam_ptr->ip4_port_key, - fspec_key->pdst, fspec_key->psrc); + fspec_key.pdst, fspec_key.psrc); TCAM_IP_PORTS(tcam_ptr->ip4_port_mask, - fspec_mask->pdst, fspec_mask->psrc); + fspec_mask.pdst, fspec_mask.psrc); TCAM_IP_CLASS(tcam_ptr->ip4_class_key, tcam_ptr->ip4_class_mask, TCAM_CLASS_UDP_IPV4); TCAM_IP_PROTO(tcam_ptr->ip4_proto_key, tcam_ptr->ip4_proto_mask, IPPROTO_UDP); - tcam_ptr->ip4_tos_key = fspec_key->tos; - tcam_ptr->ip4_tos_mask = fspec_mask->tos; + tcam_ptr->ip4_tos_key = fspec_key.tos; + tcam_ptr->ip4_tos_mask = fspec_mask.tos; +#undef fspec_key +#undef fspec_mask } static void nxge_fill_tcam_entry_udp_ipv6(p_nxge_t nxgep, flow_spec_t *flow_spec, tcam_entry_t *tcam_ptr) { - udpip6_spec_t *fspec_key; - udpip6_spec_t *fspec_mask; p_nxge_class_pt_cfg_t p_class_cfgp; +#define fspec_key (flow_spec->uh.udpip6spec) +#define fspec_mask (flow_spec->um.udpip6spec) - fspec_key = (udpip6_spec_t *)&flow_spec->uh.udpip6spec; - fspec_mask = (udpip6_spec_t *)&flow_spec->um.udpip6spec; p_class_cfgp = (p_nxge_class_pt_cfg_t)&nxgep->class_config; if (p_class_cfgp->class_cfg[TCAM_CLASS_UDP_IPV6] & NXGE_CLASS_TCAM_USE_SRC_ADDR) { - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key->ip6src); - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask->ip6src); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key.ip6src); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask.ip6src); } else { - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key->ip6dst); - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask->ip6dst); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key.ip6dst); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask.ip6dst); } TCAM_IP_CLASS(tcam_ptr->ip6_class_key, @@ -954,11 +952,13 @@ nxge_fill_tcam_entry_udp_ipv6(p_nxge_t nxgep, flow_spec_t *flow_spec, TCAM_IP_PROTO(tcam_ptr->ip6_nxt_hdr_key, tcam_ptr->ip6_nxt_hdr_mask, IPPROTO_UDP); TCAM_IP_PORTS(tcam_ptr->ip6_port_key, - fspec_key->pdst, fspec_key->psrc); + fspec_key.pdst, fspec_key.psrc); TCAM_IP_PORTS(tcam_ptr->ip6_port_mask, - fspec_mask->pdst, fspec_mask->psrc); - tcam_ptr->ip6_tos_key = fspec_key->tos; - tcam_ptr->ip6_tos_mask = fspec_mask->tos; + fspec_mask.pdst, fspec_mask.psrc); + tcam_ptr->ip6_tos_key = fspec_key.tos; + tcam_ptr->ip6_tos_mask = fspec_mask.tos; +#undef fspec_key +#undef fspec_mask } /* ARGSUSED */ @@ -966,26 +966,25 @@ static void nxge_fill_tcam_entry_tcp(p_nxge_t nxgep, flow_spec_t *flow_spec, tcam_entry_t *tcam_ptr) { - tcpip4_spec_t *fspec_key; - tcpip4_spec_t *fspec_mask; - - fspec_key = (tcpip4_spec_t *)&flow_spec->uh.tcpip4spec; - fspec_mask = (tcpip4_spec_t *)&flow_spec->um.tcpip4spec; +#define fspec_key (flow_spec->uh.tcpip4spec) +#define fspec_mask (flow_spec->um.tcpip4spec) - TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_key, fspec_key->ip4dst); - TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_mask, fspec_mask->ip4dst); - TCAM_IPV4_ADDR(tcam_ptr->ip4_src_key, fspec_key->ip4src); - TCAM_IPV4_ADDR(tcam_ptr->ip4_src_mask, fspec_mask->ip4src); + TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_key, fspec_key.ip4dst); + TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_mask, fspec_mask.ip4dst); + TCAM_IPV4_ADDR(tcam_ptr->ip4_src_key, fspec_key.ip4src); + TCAM_IPV4_ADDR(tcam_ptr->ip4_src_mask, fspec_mask.ip4src); TCAM_IP_PORTS(tcam_ptr->ip4_port_key, - fspec_key->pdst, fspec_key->psrc); + fspec_key.pdst, fspec_key.psrc); TCAM_IP_PORTS(tcam_ptr->ip4_port_mask, - fspec_mask->pdst, fspec_mask->psrc); + fspec_mask.pdst, fspec_mask.psrc); TCAM_IP_CLASS(tcam_ptr->ip4_class_key, tcam_ptr->ip4_class_mask, TCAM_CLASS_TCP_IPV4); TCAM_IP_PROTO(tcam_ptr->ip4_proto_key, tcam_ptr->ip4_proto_mask, IPPROTO_TCP); - tcam_ptr->ip4_tos_key = fspec_key->tos; - tcam_ptr->ip4_tos_mask = fspec_mask->tos; + tcam_ptr->ip4_tos_key = fspec_key.tos; + tcam_ptr->ip4_tos_mask = fspec_mask.tos; +#undef fspec_key +#undef fspec_mask } /* ARGSUSED */ @@ -993,47 +992,43 @@ static void nxge_fill_tcam_entry_sctp(p_nxge_t nxgep, flow_spec_t *flow_spec, tcam_entry_t *tcam_ptr) { - tcpip4_spec_t *fspec_key; - tcpip4_spec_t *fspec_mask; - - fspec_key = (tcpip4_spec_t *)&flow_spec->uh.tcpip4spec; - fspec_mask = (tcpip4_spec_t *)&flow_spec->um.tcpip4spec; +#define fspec_key (flow_spec->uh.tcpip4spec) +#define fspec_mask (flow_spec->um.tcpip4spec) - TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_key, fspec_key->ip4dst); - TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_mask, fspec_mask->ip4dst); - TCAM_IPV4_ADDR(tcam_ptr->ip4_src_key, fspec_key->ip4src); - TCAM_IPV4_ADDR(tcam_ptr->ip4_src_mask, fspec_mask->ip4src); + TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_key, fspec_key.ip4dst); + TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_mask, fspec_mask.ip4dst); + TCAM_IPV4_ADDR(tcam_ptr->ip4_src_key, fspec_key.ip4src); + TCAM_IPV4_ADDR(tcam_ptr->ip4_src_mask, fspec_mask.ip4src); TCAM_IP_CLASS(tcam_ptr->ip4_class_key, tcam_ptr->ip4_class_mask, TCAM_CLASS_SCTP_IPV4); TCAM_IP_PROTO(tcam_ptr->ip4_proto_key, tcam_ptr->ip4_proto_mask, IPPROTO_SCTP); TCAM_IP_PORTS(tcam_ptr->ip4_port_key, - fspec_key->pdst, fspec_key->psrc); + fspec_key.pdst, fspec_key.psrc); TCAM_IP_PORTS(tcam_ptr->ip4_port_mask, - fspec_mask->pdst, fspec_mask->psrc); - tcam_ptr->ip4_tos_key = fspec_key->tos; - tcam_ptr->ip4_tos_mask = fspec_mask->tos; + fspec_mask.pdst, fspec_mask.psrc); + tcam_ptr->ip4_tos_key = fspec_key.tos; + tcam_ptr->ip4_tos_mask = fspec_mask.tos; +#undef fspec_key +#undef fspec_mask } static void nxge_fill_tcam_entry_tcp_ipv6(p_nxge_t nxgep, flow_spec_t *flow_spec, tcam_entry_t *tcam_ptr) { - tcpip6_spec_t *fspec_key; - tcpip6_spec_t *fspec_mask; p_nxge_class_pt_cfg_t p_class_cfgp; - - fspec_key = (tcpip6_spec_t *)&flow_spec->uh.tcpip6spec; - fspec_mask = (tcpip6_spec_t *)&flow_spec->um.tcpip6spec; +#define fspec_key (flow_spec->uh.tcpip6spec) +#define fspec_mask (flow_spec->um.tcpip6spec) p_class_cfgp = (p_nxge_class_pt_cfg_t)&nxgep->class_config; if (p_class_cfgp->class_cfg[TCAM_CLASS_UDP_IPV6] & NXGE_CLASS_TCAM_USE_SRC_ADDR) { - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key->ip6src); - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask->ip6src); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key.ip6src); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask.ip6src); } else { - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key->ip6dst); - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask->ip6dst); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key.ip6dst); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask.ip6dst); } TCAM_IP_CLASS(tcam_ptr->ip6_class_key, @@ -1041,32 +1036,32 @@ nxge_fill_tcam_entry_tcp_ipv6(p_nxge_t nxgep, flow_spec_t *flow_spec, TCAM_IP_PROTO(tcam_ptr->ip6_nxt_hdr_key, tcam_ptr->ip6_nxt_hdr_mask, IPPROTO_TCP); TCAM_IP_PORTS(tcam_ptr->ip6_port_key, - fspec_key->pdst, fspec_key->psrc); + fspec_key.pdst, fspec_key.psrc); TCAM_IP_PORTS(tcam_ptr->ip6_port_mask, - fspec_mask->pdst, fspec_mask->psrc); - tcam_ptr->ip6_tos_key = fspec_key->tos; - tcam_ptr->ip6_tos_mask = fspec_mask->tos; + fspec_mask.pdst, fspec_mask.psrc); + tcam_ptr->ip6_tos_key = fspec_key.tos; + tcam_ptr->ip6_tos_mask = fspec_mask.tos; +#undef fspec_key +#undef fspec_mask } static void nxge_fill_tcam_entry_sctp_ipv6(p_nxge_t nxgep, flow_spec_t *flow_spec, tcam_entry_t *tcam_ptr) { - tcpip6_spec_t *fspec_key; - tcpip6_spec_t *fspec_mask; p_nxge_class_pt_cfg_t p_class_cfgp; +#define fspec_key (flow_spec->uh.tcpip6spec) +#define fspec_mask (flow_spec->um.tcpip6spec) - fspec_key = (tcpip6_spec_t *)&flow_spec->uh.tcpip6spec; - fspec_mask = (tcpip6_spec_t *)&flow_spec->um.tcpip6spec; p_class_cfgp = (p_nxge_class_pt_cfg_t)&nxgep->class_config; if (p_class_cfgp->class_cfg[TCAM_CLASS_UDP_IPV6] & NXGE_CLASS_TCAM_USE_SRC_ADDR) { - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key->ip6src); - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask->ip6src); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key.ip6src); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask.ip6src); } else { - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key->ip6dst); - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask->ip6dst); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key.ip6dst); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask.ip6dst); } TCAM_IP_CLASS(tcam_ptr->ip6_class_key, @@ -1074,11 +1069,13 @@ nxge_fill_tcam_entry_sctp_ipv6(p_nxge_t nxgep, flow_spec_t *flow_spec, TCAM_IP_PROTO(tcam_ptr->ip6_nxt_hdr_key, tcam_ptr->ip6_nxt_hdr_mask, IPPROTO_SCTP); TCAM_IP_PORTS(tcam_ptr->ip6_port_key, - fspec_key->pdst, fspec_key->psrc); + fspec_key.pdst, fspec_key.psrc); TCAM_IP_PORTS(tcam_ptr->ip6_port_mask, - fspec_mask->pdst, fspec_mask->psrc); - tcam_ptr->ip6_tos_key = fspec_key->tos; - tcam_ptr->ip6_tos_mask = fspec_mask->tos; + fspec_mask.pdst, fspec_mask.psrc); + tcam_ptr->ip6_tos_key = fspec_key.tos; + tcam_ptr->ip6_tos_mask = fspec_mask.tos; +#undef fspec_key +#undef fspec_mask } /* ARGSUSED */ @@ -1086,19 +1083,16 @@ static void nxge_fill_tcam_entry_ah_esp(p_nxge_t nxgep, flow_spec_t *flow_spec, tcam_entry_t *tcam_ptr) { - ahip4_spec_t *fspec_key; - ahip4_spec_t *fspec_mask; - - fspec_key = (ahip4_spec_t *)&flow_spec->uh.ahip4spec; - fspec_mask = (ahip4_spec_t *)&flow_spec->um.ahip4spec; +#define fspec_key (flow_spec->uh.ahip4spec) +#define fspec_mask (flow_spec->um.ahip4spec) - TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_key, fspec_key->ip4dst); - TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_mask, fspec_mask->ip4dst); - TCAM_IPV4_ADDR(tcam_ptr->ip4_src_key, fspec_key->ip4src); - TCAM_IPV4_ADDR(tcam_ptr->ip4_src_mask, fspec_mask->ip4src); + TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_key, fspec_key.ip4dst); + TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_mask, fspec_mask.ip4dst); + TCAM_IPV4_ADDR(tcam_ptr->ip4_src_key, fspec_key.ip4src); + TCAM_IPV4_ADDR(tcam_ptr->ip4_src_mask, fspec_mask.ip4src); - tcam_ptr->ip4_port_key = fspec_key->spi; - tcam_ptr->ip4_port_mask = fspec_mask->spi; + tcam_ptr->ip4_port_key = fspec_key.spi; + tcam_ptr->ip4_port_mask = fspec_mask.spi; TCAM_IP_CLASS(tcam_ptr->ip4_class_key, tcam_ptr->ip4_class_mask, @@ -1111,29 +1105,28 @@ nxge_fill_tcam_entry_ah_esp(p_nxge_t nxgep, flow_spec_t *flow_spec, TCAM_IP_PROTO(tcam_ptr->ip4_proto_key, tcam_ptr->ip4_proto_mask, IPPROTO_ESP); } - tcam_ptr->ip4_tos_key = fspec_key->tos; - tcam_ptr->ip4_tos_mask = fspec_mask->tos; + tcam_ptr->ip4_tos_key = fspec_key.tos; + tcam_ptr->ip4_tos_mask = fspec_mask.tos; +#undef fspec_key +#undef fspec_mask } static void nxge_fill_tcam_entry_ah_esp_ipv6(p_nxge_t nxgep, flow_spec_t *flow_spec, tcam_entry_t *tcam_ptr) { - ahip6_spec_t *fspec_key; - ahip6_spec_t *fspec_mask; p_nxge_class_pt_cfg_t p_class_cfgp; - - fspec_key = (ahip6_spec_t *)&flow_spec->uh.ahip6spec; - fspec_mask = (ahip6_spec_t *)&flow_spec->um.ahip6spec; +#define fspec_key (flow_spec->uh.ahip6spec) +#define fspec_mask (flow_spec->um.ahip6spec) p_class_cfgp = (p_nxge_class_pt_cfg_t)&nxgep->class_config; if (p_class_cfgp->class_cfg[TCAM_CLASS_AH_ESP_IPV6] & NXGE_CLASS_TCAM_USE_SRC_ADDR) { - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key->ip6src); - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask->ip6src); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key.ip6src); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask.ip6src); } else { - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key->ip6dst); - TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask->ip6dst); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_key, fspec_key.ip6dst); + TCAM_IPV6_ADDR(tcam_ptr->ip6_ip_addr_mask, fspec_mask.ip6dst); } TCAM_IP_CLASS(tcam_ptr->ip6_class_key, @@ -1146,10 +1139,12 @@ nxge_fill_tcam_entry_ah_esp_ipv6(p_nxge_t nxgep, flow_spec_t *flow_spec, TCAM_IP_PROTO(tcam_ptr->ip6_nxt_hdr_key, tcam_ptr->ip6_nxt_hdr_mask, IPPROTO_ESP); } - tcam_ptr->ip6_port_key = fspec_key->spi; - tcam_ptr->ip6_port_mask = fspec_mask->spi; - tcam_ptr->ip6_tos_key = fspec_key->tos; - tcam_ptr->ip6_tos_mask = fspec_mask->tos; + tcam_ptr->ip6_port_key = fspec_key.spi; + tcam_ptr->ip6_port_mask = fspec_mask.spi; + tcam_ptr->ip6_tos_key = fspec_key.tos; + tcam_ptr->ip6_tos_mask = fspec_mask.tos; +#undef fspec_key +#undef fspec_mask } /* ARGSUSED */ @@ -1157,30 +1152,29 @@ static void nxge_fill_tcam_entry_ip_usr(p_nxge_t nxgep, flow_spec_t *flow_spec, tcam_entry_t *tcam_ptr, tcam_class_t class) { - ip_user_spec_t *fspec_key; - ip_user_spec_t *fspec_mask; +#define fspec_key (flow_spec->uh.ip_usr_spec) +#define fspec_mask (flow_spec->um.ip_usr_spec) - fspec_key = (ip_user_spec_t *)&flow_spec->uh.ip_usr_spec; - fspec_mask = (ip_user_spec_t *)&flow_spec->um.ip_usr_spec; + if (fspec_key.ip_ver == FSPEC_IP4) { + TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_key, fspec_key.ip4dst); + TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_mask, fspec_mask.ip4dst); + TCAM_IPV4_ADDR(tcam_ptr->ip4_src_key, fspec_key.ip4src); + TCAM_IPV4_ADDR(tcam_ptr->ip4_src_mask, fspec_mask.ip4src); - if (fspec_key->ip_ver == FSPEC_IP4) { - TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_key, fspec_key->ip4dst); - TCAM_IPV4_ADDR(tcam_ptr->ip4_dest_mask, fspec_mask->ip4dst); - TCAM_IPV4_ADDR(tcam_ptr->ip4_src_key, fspec_key->ip4src); - TCAM_IPV4_ADDR(tcam_ptr->ip4_src_mask, fspec_mask->ip4src); - - tcam_ptr->ip4_port_key = fspec_key->l4_4_bytes; - tcam_ptr->ip4_port_mask = fspec_mask->l4_4_bytes; + tcam_ptr->ip4_port_key = fspec_key.l4_4_bytes; + tcam_ptr->ip4_port_mask = fspec_mask.l4_4_bytes; TCAM_IP_CLASS(tcam_ptr->ip4_class_key, tcam_ptr->ip4_class_mask, class); - tcam_ptr->ip4_proto_key = fspec_key->proto; - tcam_ptr->ip4_proto_mask = fspec_mask->proto; + tcam_ptr->ip4_proto_key = fspec_key.proto; + tcam_ptr->ip4_proto_mask = fspec_mask.proto; - tcam_ptr->ip4_tos_key = fspec_key->tos; - tcam_ptr->ip4_tos_mask = fspec_mask->tos; + tcam_ptr->ip4_tos_key = fspec_key.tos; + tcam_ptr->ip4_tos_mask = fspec_mask.tos; } +#undef fspec_key +#undef fspec_mask } @@ -1297,20 +1291,21 @@ nxge_add_tcam_entry(p_nxge_t nxgep, flow_resource_t *flow_res) return (NXGE_ERROR); } + class = TCAM_CLASS_INVALID; if (flow_spec->flow_type == FSPEC_IP_USR) { int i; int add_usr_cls = 0; int ipv6 = 0; - ip_user_spec_t *uspec = &flow_spec->uh.ip_usr_spec; - ip_user_spec_t *umask = &flow_spec->um.ip_usr_spec; nxge_usr_l3_cls_t *l3_ucls_p; +#define uspec (flow_spec->uh.ip_usr_spec) +#define umask (flow_spec->um.ip_usr_spec) MUTEX_ENTER(&hw_p->nxge_tcam_lock); for (i = 0; i < NXGE_L3_PROG_CLS; i++) { l3_ucls_p = &hw_p->tcam_l3_prog_cls[i]; if (l3_ucls_p->valid && l3_ucls_p->tcam_ref_cnt) { - if (uspec->proto == l3_ucls_p->pid) { + if (uspec.proto == l3_ucls_p->pid) { class = l3_ucls_p->cls; l3_ucls_p->tcam_ref_cnt++; add_usr_cls = 1; @@ -1334,11 +1329,11 @@ nxge_add_tcam_entry(p_nxge_t nxgep, flow_resource_t *flow_res) default: break; } - if (uspec->ip_ver == FSPEC_IP6) + if (uspec.ip_ver == FSPEC_IP6) ipv6 = 1; rs = npi_fflp_cfg_ip_usr_cls_set(handle, - (tcam_class_t)class, uspec->tos, - umask->tos, uspec->proto, ipv6); + (tcam_class_t)class, uspec.tos, + umask.tos, uspec.proto, ipv6); if (rs != NPI_SUCCESS) goto fail; @@ -1348,23 +1343,23 @@ nxge_add_tcam_entry(p_nxge_t nxgep, flow_resource_t *flow_res) goto fail; l3_ucls_p->cls = class; - l3_ucls_p->pid = uspec->proto; + l3_ucls_p->pid = uspec.proto; l3_ucls_p->tcam_ref_cnt++; l3_ucls_p->valid = 1; add_usr_cls = 1; break; } else if (l3_ucls_p->tcam_ref_cnt == 0 && - uspec->proto == l3_ucls_p->pid) { + uspec.proto == l3_ucls_p->pid) { /* * The class has already been programmed, * probably for flow hash */ class = l3_ucls_p->cls; - if (uspec->ip_ver == FSPEC_IP6) + if (uspec.ip_ver == FSPEC_IP6) ipv6 = 1; rs = npi_fflp_cfg_ip_usr_cls_set(handle, - (tcam_class_t)class, uspec->tos, - umask->tos, uspec->proto, ipv6); + (tcam_class_t)class, uspec.tos, + umask.tos, uspec.proto, ipv6); if (rs != NPI_SUCCESS) goto fail; @@ -1373,7 +1368,7 @@ nxge_add_tcam_entry(p_nxge_t nxgep, flow_resource_t *flow_res) if (rs != NPI_SUCCESS) goto fail; - l3_ucls_p->pid = uspec->proto; + l3_ucls_p->pid = uspec.proto; l3_ucls_p->tcam_ref_cnt++; add_usr_cls = 1; break; @@ -1382,10 +1377,12 @@ nxge_add_tcam_entry(p_nxge_t nxgep, flow_resource_t *flow_res) if (!add_usr_cls) { NXGE_ERROR_MSG((nxgep, NXGE_ERR_CTL, "nxge_add_tcam_entry: Could not find/insert class" - "for pid %d", uspec->proto)); + "for pid %d", uspec.proto)); goto fail; } MUTEX_EXIT(&hw_p->nxge_tcam_lock); +#undef uspec +#undef umask } switch (flow_spec->flow_type) { @@ -2440,8 +2437,8 @@ nxge_get_tcam_entry(p_nxge_t nxgep, flow_resource_t *fs) tcam_flow_spec_t *tcam_ep; tcam_entry_t *tp; flow_spec_t *fspec; - tcpip4_spec_t *fspec_key; - tcpip4_spec_t *fspec_mask; +#define fspec_key (fspec->uh.tcpip4spec) +#define fspec_mask (fspec->um.tcpip4spec) index = nxge_tcam_get_index(nxgep, (uint16_t)fs->location); tcam_ep = &nxgep->classifier.tcam_entries[index]; @@ -2467,14 +2464,12 @@ nxge_get_tcam_entry(p_nxge_t nxgep, flow_resource_t *fs) case TCAM_CLASS_UDP_IPV4: case TCAM_CLASS_AH_ESP_IPV4: case TCAM_CLASS_SCTP_IPV4: - fspec_key = (tcpip4_spec_t *)&fspec->uh.tcpip4spec; - fspec_mask = (tcpip4_spec_t *)&fspec->um.tcpip4spec; - FSPEC_IPV4_ADDR(fspec_key->ip4dst, tp->ip4_dest_key); - FSPEC_IPV4_ADDR(fspec_mask->ip4dst, tp->ip4_dest_mask); - FSPEC_IPV4_ADDR(fspec_key->ip4src, tp->ip4_src_key); - FSPEC_IPV4_ADDR(fspec_mask->ip4src, tp->ip4_src_mask); - fspec_key->tos = tp->ip4_tos_key; - fspec_mask->tos = tp->ip4_tos_mask; + FSPEC_IPV4_ADDR(fspec_key.ip4dst, tp->ip4_dest_key); + FSPEC_IPV4_ADDR(fspec_mask.ip4dst, tp->ip4_dest_mask); + FSPEC_IPV4_ADDR(fspec_key.ip4src, tp->ip4_src_key); + FSPEC_IPV4_ADDR(fspec_mask.ip4src, tp->ip4_src_mask); + fspec_key.tos = tp->ip4_tos_key; + fspec_mask.tos = tp->ip4_tos_mask; break; default: break; @@ -2484,9 +2479,9 @@ nxge_get_tcam_entry(p_nxge_t nxgep, flow_resource_t *fs) case TCAM_CLASS_TCP_IPV4: case TCAM_CLASS_UDP_IPV4: case TCAM_CLASS_SCTP_IPV4: - FSPEC_IP_PORTS(fspec_key->pdst, fspec_key->psrc, + FSPEC_IP_PORTS(fspec_key.pdst, fspec_key.psrc, tp->ip4_port_key); - FSPEC_IP_PORTS(fspec_mask->pdst, fspec_mask->psrc, + FSPEC_IP_PORTS(fspec_mask.pdst, fspec_mask.psrc, tp->ip4_port_mask); break; case TCAM_CLASS_AH_ESP_IPV4: @@ -2512,6 +2507,8 @@ nxge_get_tcam_entry(p_nxge_t nxgep, flow_resource_t *fs) } else { fs->channel_cookie = tp->match_action.bits.ldw.offset; } +#undef fspec_key +#undef fspec_mask } void @@ -2666,6 +2663,7 @@ nxge_add_iptun_class(p_nxge_t nxgep, iptun_cfg_t *iptunp, MUTEX_ENTER(&hw_p->nxge_tcam_lock); /* Get an user programmable class ID */ + class = TCAM_CLASS_INVALID; for (i = 0; i < NXGE_L3_PROG_CLS; i++) { if (hw_p->tcam_l3_prog_cls[i].valid == 0) { /* todo add new usr class reg */ @@ -2855,7 +2853,10 @@ nxge_get_iptun_class(p_nxge_t nxgep, iptun_cfg_t *iptunp, uint8_t cls_id) npi_handle_t handle = nxgep->npi_reg_handle; npi_status_t rs = NPI_SUCCESS; flow_key_cfg_t cfg; - + uint8_t l4b0_val; + uint8_t l4b0_mask; + uint8_t l4b23_sel; + uint16_t l4b23_val; /* check to see that this is a valid class ID */ if (!nxge_is_iptun_cls_present(nxgep, cls_id, &i)) @@ -2866,8 +2867,15 @@ nxge_get_iptun_class(p_nxge_t nxgep, iptun_cfg_t *iptunp, uint8_t cls_id) pid = nxgep->nxge_hw_p->tcam_l3_prog_cls[i].pid; rs = npi_fflp_cfg_ip_usr_cls_get_iptun(handle, (tcam_class_t)cls_id, - &iptunp->l4b0_val, &iptunp->l4b0_mask, &iptunp->l4b23_val, - &iptunp->l4b23_sel); + &l4b0_val, &l4b0_mask, &l4b23_val, &l4b23_sel); + if (rs != NPI_SUCCESS) + goto fail; + + iptunp->l4b0_val = l4b0_val; + iptunp->l4b0_mask = l4b0_mask; + iptunp->l4b23_val = l4b23_val; + iptunp->l4b23_sel = l4b23_sel; + if (rs != NPI_SUCCESS) goto fail; diff --git a/usr/src/uts/common/io/nxge/nxge_fflp_hash.c b/usr/src/uts/common/io/nxge/nxge_fflp_hash.c index a1a88e4b21..50f57b282e 100644 --- a/usr/src/uts/common/io/nxge/nxge_fflp_hash.c +++ b/usr/src/uts/common/io/nxge/nxge_fflp_hash.c @@ -22,7 +22,6 @@ * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" #include <sys/types.h> #include <nxge_fflp_hash.h> @@ -366,6 +365,7 @@ nxge_compute_h1_table1(uint32_t crcin, uint32_t *flow, uint32_t length) buf = (uint8_t *)flow; tmp = crcin; + crch1 = 0; for (i = 0; i < length; i++) { crch1 = COMPUTE_H1_BYTE(tmp, buf[i]); tmp = crch1; diff --git a/usr/src/uts/common/io/nxge/nxge_hio.c b/usr/src/uts/common/io/nxge/nxge_hio.c index a3369c70d3..481ec51a79 100644 --- a/usr/src/uts/common/io/nxge/nxge_hio.c +++ b/usr/src/uts/common/io/nxge/nxge_hio.c @@ -204,10 +204,7 @@ nxge_hio_uninit(nxge_t *nxge) * Any domain */ int -nxge_dci_map( - nxge_t *nxge, - vpc_type_t type, - int index) +nxge_dci_map(nxge_t *nxge, vpc_type_t type, int index) { nxge_grp_set_t *set; int dc; @@ -219,6 +216,8 @@ nxge_dci_map( case VP_BOUND_RX: set = &nxge->rx_set; break; + default: + return (-1); } for (dc = 0; dc < NXGE_MAX_TDCS; dc++) { @@ -427,7 +426,7 @@ nxge_grp_dc_add( { nxge_hio_data_t *nhd = (nxge_hio_data_t *)nxge->nxge_hw_p->hio; nxge_hio_dc_t *dc; - nxge_grp_set_t *set; + nxge_grp_set_t *set = NULL; nxge_status_t status = NXGE_OK; int error = 0; @@ -541,10 +540,7 @@ nxge_grp_dc_add( } void -nxge_grp_dc_remove( - nxge_t *nxge, - vpc_type_t type, - int channel) +nxge_grp_dc_remove(nxge_t *nxge, vpc_type_t type, int channel) { nxge_hio_data_t *nhd = (nxge_hio_data_t *)nxge->nxge_hw_p->hio; nxge_hio_dc_t *dc; diff --git a/usr/src/uts/common/io/nxge/nxge_hw.c b/usr/src/uts/common/io/nxge/nxge_hw.c index 449b285639..5123454fad 100644 --- a/usr/src/uts/common/io/nxge/nxge_hw.c +++ b/usr/src/uts/common/io/nxge/nxge_hw.c @@ -187,9 +187,8 @@ nxge_hw_init_niu_common(p_nxge_t nxgep) NXGE_DEBUG_MSG((nxgep, DDI_CTL, "<== nxge_hw_init_niu_common")); } -/* ARGSUSED */ uint_t -nxge_intr(void *arg1, void *arg2) +nxge_intr(char *arg1, char *arg2) { p_nxge_ldv_t ldvp = (p_nxge_ldv_t)arg1; p_nxge_t nxgep = (p_nxge_t)arg2; diff --git a/usr/src/uts/common/io/nxge/nxge_intr.c b/usr/src/uts/common/io/nxge/nxge_intr.c index 2e73677ca5..4e5e97354e 100644 --- a/usr/src/uts/common/io/nxge/nxge_intr.c +++ b/usr/src/uts/common/io/nxge/nxge_intr.c @@ -41,8 +41,8 @@ */ /* The following function may be found in nxge_[t|r]xdma.c */ -extern uint_t nxge_tx_intr(void *, void *); -extern uint_t nxge_rx_intr(void *, void *); +extern uint_t nxge_tx_intr(char *, char *); +extern uint_t nxge_rx_intr(char *, char *); /* * Local prototypes @@ -75,8 +75,7 @@ nxge_intr_add( nxge_intr_t *interrupts; /* The global interrupt data. */ nxge_ldg_t *group; /* The logical device group data. */ nxge_ldv_t *ldvp; - - uint_t *inthandler; /* A parameter to ddi_intr_add_handler */ + ddi_intr_handler_t *inthandler; int vector; int status1, status2; @@ -94,9 +93,11 @@ nxge_intr_add( group = ldvp->ldgp; if (group->nldvs == 1) { - inthandler = (uint_t *)group->ldvp->ldv_intr_handler; + inthandler = group->ldvp->ldv_intr_handler; } else if (group->nldvs > 1) { - inthandler = (uint_t *)group->sys_intr_handler; + inthandler = group->sys_intr_handler; + } else { + inthandler = NULL; } interrupts = (nxge_intr_t *)&nxge->nxge_intr_type; @@ -104,7 +105,7 @@ nxge_intr_add( status1 = DDI_SUCCESS; if ((status2 = ddi_intr_add_handler(interrupts->htable[vector], - (ddi_intr_handler_t *)inthandler, group->ldvp, nxge)) + inthandler, group->ldvp, nxge)) != DDI_SUCCESS) { NXGE_ERROR_MSG((nxge, NXGE_ERR_CTL, "nxge_intr_add(%cDC %d): " "ddi_intr_add_handler(%d) returned %s", @@ -321,7 +322,7 @@ nxge_hio_intr_add( nxge_hio_dc_t *dc; /* The relevant DMA channel data structure. */ nxge_intr_t *interrupts; /* The global interrupt data. */ nxge_ldg_t *group; /* The logical device group data. */ - uint_t *inthandler; /* A parameter to ddi_intr_add_handler */ + ddi_intr_handler_t *inthandler; int vector; /* A shorthand variable */ int ddi_status; /* The response to ddi_intr_add_handler */ @@ -352,13 +353,15 @@ nxge_hio_intr_add( group = &nxge->ldgvp->ldgp[vector]; if (group->nldvs == 1) { - inthandler = (uint_t *)group->ldvp->ldv_intr_handler; + inthandler = group->ldvp->ldv_intr_handler; } else if (group->nldvs > 1) { - inthandler = (uint_t *)group->sys_intr_handler; + inthandler = group->sys_intr_handler; + } else { + inthandler = NULL; } if ((ddi_status = ddi_intr_add_handler(interrupts->htable[vector], - (ddi_intr_handler_t *)inthandler, group->ldvp, nxge)) + inthandler, group->ldvp, nxge)) != DDI_SUCCESS) { NXGE_ERROR_MSG((nxge, NXGE_ERR_CTL, "nxge_hio_intr_add(%cDC %d): " diff --git a/usr/src/uts/common/io/nxge/nxge_mac.c b/usr/src/uts/common/io/nxge/nxge_mac.c index d08c6d269f..f1cd6511c4 100644 --- a/usr/src/uts/common/io/nxge/nxge_mac.c +++ b/usr/src/uts/common/io/nxge/nxge_mac.c @@ -8475,10 +8475,16 @@ nxge_bcm5464_link_led_off(p_nxge_t nxgep) NXGE_DEBUG_MSG((nxgep, MIF_CTL, "==> nxge_bcm5464_link_led_off")); - if (nxgep->nxge_hw_p->platform_type == P_NEPTUNE_MARAMBA_P1) { + switch (nxgep->nxge_hw_p->platform_type) { + case P_NEPTUNE_MARAMBA_P1: xcvr_portn = MARAMBA_P1_CLAUSE22_PORT_ADDR_BASE; - } else if (nxgep->nxge_hw_p->platform_type == P_NEPTUNE_MARAMBA_P0) { + break; + case P_NEPTUNE_MARAMBA_P0: xcvr_portn = MARAMBA_P0_CLAUSE22_PORT_ADDR_BASE; + break; + default: + xcvr_portn = 0; + break; } /* * For Altas 4-1G copper, Xcvr port numbers are diff --git a/usr/src/uts/common/io/nxge/nxge_main.c b/usr/src/uts/common/io/nxge/nxge_main.c index cea5e125c9..441bbca23c 100644 --- a/usr/src/uts/common/io/nxge/nxge_main.c +++ b/usr/src/uts/common/io/nxge/nxge_main.c @@ -6056,7 +6056,7 @@ nxge_add_intrs_adv_type(p_nxge_t nxgep, uint32_t int_type) dev_info_t *dip = nxgep->dip; p_nxge_ldg_t ldgp; p_nxge_intr_t intrp; - uint_t *inthandler; + ddi_intr_handler_t *inthandler; void *arg1, *arg2; int behavior; int nintrs, navail, nrequest; @@ -6179,7 +6179,7 @@ nxge_add_intrs_adv_type(p_nxge_t nxgep, uint32_t int_type) arg1 = ldgp->ldvp; arg2 = nxgep; if (ldgp->nldvs == 1) { - inthandler = (uint_t *)ldgp->ldvp->ldv_intr_handler; + inthandler = ldgp->ldvp->ldv_intr_handler; NXGE_DEBUG_MSG((nxgep, INT_CTL, "nxge_add_intrs_adv_type: " "arg1 0x%x arg2 0x%x: " @@ -6187,7 +6187,7 @@ nxge_add_intrs_adv_type(p_nxge_t nxgep, uint32_t int_type) arg1, arg2, x, ldgp->intdata)); } else if (ldgp->nldvs > 1) { - inthandler = (uint_t *)ldgp->sys_intr_handler; + inthandler = ldgp->sys_intr_handler; NXGE_DEBUG_MSG((nxgep, INT_CTL, "nxge_add_intrs_adv_type: " "arg1 0x%x arg2 0x%x: " @@ -6195,6 +6195,8 @@ nxge_add_intrs_adv_type(p_nxge_t nxgep, uint32_t int_type) "(entry %d intdata 0x%x)\n", arg1, arg2, ldgp->nldvs, x, ldgp->intdata)); + } else { + inthandler = NULL; } NXGE_DEBUG_MSG((nxgep, INT_CTL, @@ -6202,8 +6204,7 @@ nxge_add_intrs_adv_type(p_nxge_t nxgep, uint32_t int_type) "htable 0x%llx", x, intrp->htable[x])); if ((ddi_status = ddi_intr_add_handler(intrp->htable[x], - (ddi_intr_handler_t *)inthandler, arg1, arg2)) - != DDI_SUCCESS) { + inthandler, arg1, arg2)) != DDI_SUCCESS) { NXGE_ERROR_MSG((nxgep, NXGE_ERR_CTL, "==> nxge_add_intrs_adv_type: failed #%d " "status 0x%x", x, ddi_status)); @@ -6250,7 +6251,7 @@ nxge_add_intrs_adv_type_fix(p_nxge_t nxgep, uint32_t int_type) dev_info_t *dip = nxgep->dip; p_nxge_ldg_t ldgp; p_nxge_intr_t intrp; - uint_t *inthandler; + ddi_intr_handler_t *inthandler; void *arg1, *arg2; int behavior; int nintrs, navail; @@ -6346,7 +6347,7 @@ nxge_add_intrs_adv_type_fix(p_nxge_t nxgep, uint32_t int_type) arg1 = ldgp->ldvp; arg2 = nxgep; if (ldgp->nldvs == 1) { - inthandler = (uint_t *)ldgp->ldvp->ldv_intr_handler; + inthandler = ldgp->ldvp->ldv_intr_handler; NXGE_DEBUG_MSG((nxgep, INT_CTL, "nxge_add_intrs_adv_type_fix: " "1-1 int handler(%d) ldg %d ldv %d " @@ -6354,18 +6355,19 @@ nxge_add_intrs_adv_type_fix(p_nxge_t nxgep, uint32_t int_type) x, ldgp->ldg, ldgp->ldvp->ldv, arg1, arg2)); } else if (ldgp->nldvs > 1) { - inthandler = (uint_t *)ldgp->sys_intr_handler; + inthandler = ldgp->sys_intr_handler; NXGE_DEBUG_MSG((nxgep, INT_CTL, "nxge_add_intrs_adv_type_fix: " "shared ldv %d int handler(%d) ldv %d ldg %d" "arg1 0x%016llx arg2 0x%016llx\n", x, ldgp->nldvs, ldgp->ldg, ldgp->ldvp->ldv, arg1, arg2)); + } else { + inthandler = NULL; } if ((ddi_status = ddi_intr_add_handler(intrp->htable[x], - (ddi_intr_handler_t *)inthandler, arg1, arg2)) - != DDI_SUCCESS) { + inthandler, arg1, arg2)) != DDI_SUCCESS) { NXGE_ERROR_MSG((nxgep, NXGE_ERR_CTL, "==> nxge_add_intrs_adv_type_fix: failed #%d " "status 0x%x", x, ddi_status)); diff --git a/usr/src/uts/common/io/nxge/nxge_ndd.c b/usr/src/uts/common/io/nxge/nxge_ndd.c index 71d68b56c2..3243bbdba9 100644 --- a/usr/src/uts/common/io/nxge/nxge_ndd.c +++ b/usr/src/uts/common/io/nxge/nxge_ndd.c @@ -1804,6 +1804,7 @@ nxge_param_set_ip_usr(p_nxge_t nxgep, queue_t *q, } /* do the actual hw setup with cfg_value. */ + status = 0; if (cfg_it == B_TRUE) { class = mi_strtol(pa->name, &end, 10); status = nxge_fflp_ip_usr_class_config(nxgep, class, pa->value); @@ -1813,7 +1814,6 @@ nxge_param_set_ip_usr(p_nxge_t nxgep, queue_t *q, return (status); } -/* ARGSUSED */ static int nxge_class_name_2value(p_nxge_t nxgep, char *name) { @@ -1830,10 +1830,9 @@ nxge_class_name_2value(p_nxge_t nxgep, char *name) return (-1); } -/* ARGSUSED */ int -nxge_param_set_ip_opt(p_nxge_t nxgep, queue_t *q, - mblk_t *mp, char *value, caddr_t cp) +nxge_param_set_ip_opt(p_nxge_t nxgep, queue_t *q __unused, + mblk_t *mp __unused, char *value, caddr_t cp) { char *end; uint32_t status, cfg_value; diff --git a/usr/src/uts/common/io/nxge/nxge_rxdma.c b/usr/src/uts/common/io/nxge/nxge_rxdma.c index 7c06b90705..85ad031e85 100644 --- a/usr/src/uts/common/io/nxge/nxge_rxdma.c +++ b/usr/src/uts/common/io/nxge/nxge_rxdma.c @@ -1233,6 +1233,7 @@ nxge_rxdma_hw_mode(p_nxge_t nxgep, boolean_t enable) return (0); } + rs = 0; for (rdc = 0; rdc < NXGE_MAX_RDCS; rdc++) { if ((1 << rdc) & set->owned.map) { rx_rbr_ring_t *ring = @@ -1755,7 +1756,7 @@ nxge_freeb(p_rx_msg_t rx_msg_p) } uint_t -nxge_rx_intr(void *arg1, void *arg2) +nxge_rx_intr(char *arg1, char *arg2) { p_nxge_ldv_t ldvp = (p_nxge_ldv_t)arg1; p_nxge_t nxgep = (p_nxge_t)arg2; @@ -4156,6 +4157,8 @@ nxge_rxdma_hw_start(p_nxge_t nxgep, int channel) rx_mbox_areas_p = nxgep->rx_mbox_areas_p; if (rx_mbox_areas_p) { rx_mbox_p = rx_mbox_areas_p->rxmbox_areas; + } else { + rx_mbox_p = NULL; } i = channel; diff --git a/usr/src/uts/common/io/nxge/nxge_send.c b/usr/src/uts/common/io/nxge/nxge_send.c index ff410e3ba7..94553c6352 100644 --- a/usr/src/uts/common/io/nxge/nxge_send.c +++ b/usr/src/uts/common/io/nxge/nxge_send.c @@ -141,10 +141,10 @@ nxge_start(p_nxge_t nxgep, p_tx_ring_t tx_ring_p, p_mblk_t mp) nxge_os_dma_handle_t tx_desc_dma_handle; p_tx_desc_t tx_desc_p; p_tx_msg_t tx_msg_ring; - p_tx_msg_t tx_msg_p; + p_tx_msg_t tx_msg_p = NULL; tx_desc_t tx_desc, *tmp_desc_p; tx_desc_t sop_tx_desc, *sop_tx_desc_p; - p_tx_pkt_header_t hdrp; + p_tx_pkt_header_t hdrp = NULL; tx_pkt_hdr_all_t tmp_hdrp; p_tx_pkt_hdr_all_t pkthdrp; uint8_t npads = 0; @@ -196,7 +196,7 @@ nxge_start(p_nxge_t nxgep, p_tx_ring_t tx_ring_p, p_mblk_t mp) boolean_t is_lso = B_FALSE; boolean_t lso_again; int cur_index_lso; - p_mblk_t nmp_lso_save; + p_mblk_t nmp_lso_save = NULL; uint32_t lso_ngathers; boolean_t lso_tail_wrap = B_FALSE; diff --git a/usr/src/uts/common/io/nxge/nxge_txc.c b/usr/src/uts/common/io/nxge/nxge_txc.c index 7f9e34dbfa..c143866574 100644 --- a/usr/src/uts/common/io/nxge/nxge_txc.c +++ b/usr/src/uts/common/io/nxge/nxge_txc.c @@ -373,10 +373,10 @@ nxge_txc_handle_sys_errors(p_nxge_t nxgep) default: return (NXGE_ERROR); } - NXGE_ERROR_MSG((nxgep, NXGE_ERR_CTL, - " nxge_txc_handle_sys_errors: errored port %d", - err_portn)); if (my_err) { + NXGE_ERROR_MSG((nxgep, NXGE_ERR_CTL, + " nxge_txc_handle_sys_errors: errored port %d", + err_portn)); status = nxge_txc_handle_port_errors(nxgep, err_status); } diff --git a/usr/src/uts/common/io/nxge/nxge_txdma.c b/usr/src/uts/common/io/nxge/nxge_txdma.c index 74495f9f8a..00a509a191 100644 --- a/usr/src/uts/common/io/nxge/nxge_txdma.c +++ b/usr/src/uts/common/io/nxge/nxge_txdma.c @@ -1123,7 +1123,7 @@ nxge_txdma_reclaim(p_nxge_t nxgep, p_tx_ring_t tx_ring_p, int nmblks) * Any domain */ uint_t -nxge_tx_intr(void *arg1, void *arg2) +nxge_tx_intr(char *arg1, char *arg2) { p_nxge_ldv_t ldvp = (p_nxge_ldv_t)arg1; p_nxge_t nxgep = (p_nxge_t)arg2; @@ -1334,6 +1334,7 @@ nxge_txdma_hw_mode(p_nxge_t nxgep, boolean_t enable) } /* Enable or disable all of the TDCs owned by us. */ + rs = 0; handle = NXGE_DEV_NPI_HANDLE(nxgep); for (tdc = 0; tdc < NXGE_MAX_TDCS; tdc++) { if ((1 << tdc) & set->owned.map) { @@ -2533,11 +2534,11 @@ nxge_map_txdma_channel_buf_ring(p_nxge_t nxgep, uint16_t channel, p_nxge_dma_common_t dmap; nxge_os_dma_handle_t tx_buf_dma_handle; p_tx_ring_t tx_ring_p; - p_tx_msg_t tx_msg_ring; + p_tx_msg_t tx_msg_ring = NULL; nxge_status_t status = NXGE_OK; int ddi_status = DDI_SUCCESS; - int i, j, index; - uint32_t size, bsize; + int i, j, index = 0; + uint32_t size = 0, bsize; uint32_t nblocks, nmsgs; char qname[TASKQ_NAMELEN]; @@ -3337,6 +3338,7 @@ nxge_txdma_fatal_err_recover( /* Restart TXDMA channel */ + tx_mbox_p = NULL; if (!isLDOMguest(nxgep)) { tx_mbox_p = nxge_txdma_get_mbox(nxgep, channel); @@ -3424,7 +3426,7 @@ nxge_tx_port_fatal_err_recover(p_nxge_t nxgep) tx_mbox_t *mailbox; npi_handle_t handle; - nxge_status_t status; + nxge_status_t status = NXGE_OK; npi_status_t rs; NXGE_DEBUG_MSG((nxgep, TX_CTL, "<== nxge_tx_port_fatal_err_recover")); diff --git a/usr/src/uts/common/io/nxge/nxge_virtual.c b/usr/src/uts/common/io/nxge/nxge_virtual.c index dddca37af4..7ee9a5634e 100644 --- a/usr/src/uts/common/io/nxge/nxge_virtual.c +++ b/usr/src/uts/common/io/nxge/nxge_virtual.c @@ -62,11 +62,11 @@ uint32_t nxge_groups_per_port = 2; extern uint32_t nxge_use_partition; extern uint32_t nxge_dma_obp_props_only; -extern uint_t nxge_rx_intr(void *, void *); -extern uint_t nxge_tx_intr(void *, void *); -extern uint_t nxge_mif_intr(void *, void *); -extern uint_t nxge_mac_intr(void *, void *); -extern uint_t nxge_syserr_intr(void *, void *); +extern uint_t nxge_rx_intr(char *, char *); +extern uint_t nxge_tx_intr(char *, char *); +extern uint_t nxge_mif_intr(char *, char *); +extern uint_t nxge_mac_intr(char *, char *); +extern uint_t nxge_syserr_intr(char *, char *); extern void *nxge_list; #define NXGE_SHARED_REG_SW_SIM @@ -1043,6 +1043,7 @@ nxge_cfg_verify_set_classify_prop(p_nxge_t nxgep, char *prop, uint_t prop_len; uint_t known_cfg_value; + new_value = 0; known_cfg_value = (uint_t)known_cfg; if (override == B_TRUE) { @@ -4026,6 +4027,7 @@ nxge_init_mmac(p_nxge_t nxgep, boolean_t compute_addrs) nxge_mmac_t *mmac_info; npi_mac_addr_t mac_addr; + alt_mac_ls4b = 0; func_num = nxgep->function_num; base_mmac_addr = (uint16_t *)&nxgep->factaddr; mmac_info = (nxge_mmac_t *)&nxgep->nxge_mmac_info; diff --git a/usr/src/uts/common/sys/auxv_SPARC.h b/usr/src/uts/common/sys/auxv_SPARC.h index b4adf1a16e..fd6d7c637b 100644 --- a/usr/src/uts/common/sys/auxv_SPARC.h +++ b/usr/src/uts/common/sys/auxv_SPARC.h @@ -45,6 +45,7 @@ extern "C" { #define AV_SPARC_VIS2 0x0040 /* VIS2 instruction set supported */ #define AV_SPARC_ASI_BLK_INIT 0x0080 /* ASI_BLK_INIT_xxx ASI */ #define AV_SPARC_FMAF 0x0100 /* Fused Multiply-Add */ +/* Bit 9 is not in use */ #define AV_SPARC_VIS3 0x0400 /* VIS3 instruction set extensions */ #define AV_SPARC_HPC 0x0800 /* High Performance Computing insns */ #define AV_SPARC_RANDOM 0x1000 /* random instruction */ @@ -52,11 +53,25 @@ extern "C" { #define AV_SPARC_FJFMAU 0x4000 /* Fujitsu Unfused Multiply-Add */ #define AV_SPARC_IMA 0x8000 /* Integer Multiply-add */ #define AV_SPARC_ASI_CACHE_SPARING 0x10000 +#define AV_SPARC_PAUSE 0x20000 /* pause instruction */ +#define AV_SPARC_CBCOND 0x40000 /* compare and branch instructions */ +#define AV_SPARC_AES 0x80000 /* AES instructions */ +#define AV_SPARC_DES 0x100000 /* DES instructions */ +#define AV_SPARC_KASUMI 0x200000 /* Kasumi instructions */ +#define AV_SPARC_CAMELLIA 0x400000 /* Camellia instructions */ +#define AV_SPARC_MD5 0x800000 /* MD5 instructions */ +#define AV_SPARC_SHA1 0x1000000 /* SHA1 instructions */ +#define AV_SPARC_SHA256 0x2000000 /* SHA256 instructions */ +#define AV_SPARC_SHA512 0x4000000 /* SHA512 instructions */ +#define AV_SPARC_MPMUL 0x8000000 /* multiple precision multiply */ +#define AV_SPARC_MONT 0x10000000 /* Montgomery mult/sqr instructions */ +#define AV_SPARC_CRC32C 0x20000000 /* CRC32C instructions */ #define FMT_AV_SPARC \ "\20" \ - "\21cspare" \ - "\20ima\17fjfmau\16trans\15random\14hpc\13vis3\12-\11fmaf" \ + "\36crc32c\35mont\34mpmul\33sha512\32sha256\31sha1" \ + "\30md5\27camellia\26kasumi\25des\24aes\23cbcond\22pause\21cspare" \ + "\20ima\17fjfmau\16trans\15random\14hpc\13vis3\12-\11fmaf" \ "\10ASIBlkInit\7vis2\6vis\5popc\4v8plus\3fsmuld\2div32\1mul32" /* diff --git a/usr/src/uts/common/sys/nxge/nxge_impl.h b/usr/src/uts/common/sys/nxge/nxge_impl.h index 429c906c5e..0f247df1a5 100644 --- a/usr/src/uts/common/sys/nxge/nxge_impl.h +++ b/usr/src/uts/common/sys/nxge/nxge_impl.h @@ -619,8 +619,8 @@ struct _nxge_dma_pool_t { */ typedef struct _nxge_ldg_t nxge_ldg_t, *p_nxge_ldg_t; typedef struct _nxge_ldv_t nxge_ldv_t, *p_nxge_ldv_t; -typedef uint_t (*nxge_sys_intr_t)(void *arg1, void *arg2); -typedef uint_t (*nxge_ldv_intr_t)(void *arg1, void *arg2); +typedef uint_t (*nxge_sys_intr_t)(char *arg1, char *arg2); +typedef uint_t (*nxge_ldv_intr_t)(char *arg1, char *arg2); /* * Each logical device Group (64) needs to have the following @@ -894,7 +894,7 @@ void nxge_hw_ioctl(p_nxge_t, queue_t *, mblk_t *, struct iocblk *); void nxge_loopback_ioctl(p_nxge_t, queue_t *, mblk_t *, struct iocblk *); nxge_status_t nxge_global_reset(p_nxge_t); -uint_t nxge_intr(void *, void *); +uint_t nxge_intr(char *, char *); void nxge_intr_enable(p_nxge_t); void nxge_intr_disable(p_nxge_t); void nxge_hw_blank(void *arg, time_t, uint_t); |