summaryrefslogtreecommitdiff
path: root/usr/src/uts/common
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common')
-rw-r--r--usr/src/uts/common/fs/zfs/arc.c64
-rw-r--r--usr/src/uts/common/io/nxge/npi/npi_mac.c1
-rw-r--r--usr/src/uts/common/io/nxge/npi/npi_rxdma.c3
-rw-r--r--usr/src/uts/common/io/nxge/npi/npi_txc.c13
-rw-r--r--usr/src/uts/common/io/nxge/nxge_fflp.c300
-rw-r--r--usr/src/uts/common/io/nxge/nxge_fflp_hash.c2
-rw-r--r--usr/src/uts/common/io/nxge/nxge_hio.c14
-rw-r--r--usr/src/uts/common/io/nxge/nxge_hw.c3
-rw-r--r--usr/src/uts/common/io/nxge/nxge_intr.c25
-rw-r--r--usr/src/uts/common/io/nxge/nxge_mac.c10
-rw-r--r--usr/src/uts/common/io/nxge/nxge_main.c22
-rw-r--r--usr/src/uts/common/io/nxge/nxge_ndd.c7
-rw-r--r--usr/src/uts/common/io/nxge/nxge_rxdma.c5
-rw-r--r--usr/src/uts/common/io/nxge/nxge_send.c6
-rw-r--r--usr/src/uts/common/io/nxge/nxge_txc.c6
-rw-r--r--usr/src/uts/common/io/nxge/nxge_txdma.c12
-rw-r--r--usr/src/uts/common/io/nxge/nxge_virtual.c12
-rw-r--r--usr/src/uts/common/sys/auxv_SPARC.h19
-rw-r--r--usr/src/uts/common/sys/nxge/nxge_impl.h6
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);