From 338749cb338b2e6a9942d1b744e92ba283f2cd01 Mon Sep 17 00:00:00 2001 From: Robert Mustacchi Date: Fri, 17 Mar 2017 18:01:48 +0000 Subject: [PATCH] 8318 i40e polling panics on debug after 7865 Reviewed by: Jerry Jelinek Reviewed by: Gordon Ross Reviewed by: Andy Stormont Reviewed by: Dale Ghent Approved by: Dan McDonald --- usr/src/uts/common/io/i40e/i40e_gld.c | 8 +++----- usr/src/uts/common/io/i40e/i40e_intr.c | 20 +++++++++++--------- usr/src/uts/common/io/i40e/i40e_sw.h | 6 +++--- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/usr/src/uts/common/io/i40e/i40e_gld.c b/usr/src/uts/common/io/i40e/i40e_gld.c index 76c96cf358..28b4387594 100644 --- a/usr/src/uts/common/io/i40e/i40e_gld.c +++ b/usr/src/uts/common/io/i40e/i40e_gld.c @@ -11,7 +11,7 @@ /* * Copyright 2015 OmniTI Computer Consulting, Inc. All rights reserved. - * Copyright 2016 Joyent, Inc. + * Copyright (c) 2017, Joyent, Inc. * Copyright 2017 Tegile Systems, Inc. All rights reserved. */ @@ -452,11 +452,10 @@ static int i40e_rx_ring_intr_enable(mac_intr_handle_t intrh) { i40e_trqpair_t *itrq = (i40e_trqpair_t *)intrh; - i40e_t *i40e = itrq->itrq_i40e; mutex_enter(&itrq->itrq_rx_lock); ASSERT(itrq->itrq_intr_poll == B_TRUE); - i40e_intr_rx_queue_enable(i40e, itrq->itrq_index); + i40e_intr_rx_queue_enable(itrq); itrq->itrq_intr_poll = B_FALSE; mutex_exit(&itrq->itrq_rx_lock); @@ -468,10 +467,9 @@ static int i40e_rx_ring_intr_disable(mac_intr_handle_t intrh) { i40e_trqpair_t *itrq = (i40e_trqpair_t *)intrh; - i40e_t *i40e = itrq->itrq_i40e; mutex_enter(&itrq->itrq_rx_lock); - i40e_intr_rx_queue_disable(i40e, itrq->itrq_index); + i40e_intr_rx_queue_disable(itrq); itrq->itrq_intr_poll = B_TRUE; mutex_exit(&itrq->itrq_rx_lock); diff --git a/usr/src/uts/common/io/i40e/i40e_intr.c b/usr/src/uts/common/io/i40e/i40e_intr.c index 41387dbd3a..51d1bbac92 100644 --- a/usr/src/uts/common/io/i40e/i40e_intr.c +++ b/usr/src/uts/common/io/i40e/i40e_intr.c @@ -10,7 +10,7 @@ */ /* - * Copyright 2016 Joyent, Inc. + * Copyright (c) 2017, Joyent, Inc. * Copyright 2017 Tegile Systems, Inc. All rights reserved. */ @@ -462,13 +462,14 @@ i40e_intr_init_queue_shared(i40e_t *i40e) * build assertions are specific to that. */ void -i40e_intr_rx_queue_enable(i40e_t *i40e, uint_t queue) +i40e_intr_rx_queue_enable(i40e_trqpair_t *itrq) { uint32_t reg; - i40e_hw_t *hw = &i40e->i40e_hw_space; + uint_t queue = itrq->itrq_index; + i40e_hw_t *hw = &itrq->itrq_i40e->i40e_hw_space; - ASSERT(MUTEX_HELD(&i40e->i40e_general_lock)); - ASSERT(queue < i40e->i40e_num_trqpairs); + ASSERT(MUTEX_HELD(&itrq->itrq_rx_lock)); + ASSERT(queue < itrq->itrq_i40e->i40e_num_trqpairs); reg = I40E_READ_REG(hw, I40E_QINT_RQCTL(queue)); ASSERT0(reg & I40E_QINT_RQCTL_CAUSE_ENA_MASK); @@ -482,13 +483,14 @@ i40e_intr_rx_queue_enable(i40e_t *i40e, uint_t queue) * debug build assertions are specific to that. */ void -i40e_intr_rx_queue_disable(i40e_t *i40e, uint_t queue) +i40e_intr_rx_queue_disable(i40e_trqpair_t *itrq) { uint32_t reg; - i40e_hw_t *hw = &i40e->i40e_hw_space; + uint_t queue = itrq->itrq_index; + i40e_hw_t *hw = &itrq->itrq_i40e->i40e_hw_space; - ASSERT(MUTEX_HELD(&i40e->i40e_general_lock)); - ASSERT(queue < i40e->i40e_num_trqpairs); + ASSERT(MUTEX_HELD(&itrq->itrq_rx_lock)); + ASSERT(queue < itrq->itrq_i40e->i40e_num_trqpairs); reg = I40E_READ_REG(hw, I40E_QINT_RQCTL(queue)); ASSERT3U(reg & I40E_QINT_RQCTL_CAUSE_ENA_MASK, ==, diff --git a/usr/src/uts/common/io/i40e/i40e_sw.h b/usr/src/uts/common/io/i40e/i40e_sw.h index 2be779bd8a..543200bc0c 100644 --- a/usr/src/uts/common/io/i40e/i40e_sw.h +++ b/usr/src/uts/common/io/i40e/i40e_sw.h @@ -11,7 +11,7 @@ /* * Copyright 2015 OmniTI Computer Consulting, Inc. All rights reserved. - * Copyright 2017 Joyent, Inc. + * Copyright (c) 2017, Joyent, Inc. * Copyright 2017 Tegile Systems, Inc. All rights reserved. */ @@ -935,8 +935,8 @@ extern uint_t i40e_intr_legacy(void *, void *); extern void i40e_intr_io_enable_all(i40e_t *); extern void i40e_intr_io_disable_all(i40e_t *); extern void i40e_intr_io_clear_cause(i40e_t *); -extern void i40e_intr_rx_queue_disable(i40e_t *, uint_t); -extern void i40e_intr_rx_queue_enable(i40e_t *, uint_t); +extern void i40e_intr_rx_queue_disable(i40e_trqpair_t *); +extern void i40e_intr_rx_queue_enable(i40e_trqpair_t *); extern void i40e_intr_set_itr(i40e_t *, i40e_itr_index_t, uint_t); /* -- 2.11.4.GIT