mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 22:21:42 +00:00
ionic: Fix dim work handling in split interrupt mode
Currently ionic_dim_work() is incorrect when in
split interrupt mode. This is because the interrupt
rate is only being changed for the Rx side even for
dim running on Tx. Fix this by using the qcq from
the container_of macro. Also, introduce some local
variables for a bit of cleanup.
Fixes: a6ff85e0a2
("ionic: remove intr coalesce update from napi")
Signed-off-by: Brett Creeley <brett.creeley@amd.com>
Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://lore.kernel.org/r/20231204192234.21017-3-shannon.nelson@amd.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
0ceb3860a6
commit
4115ba677c
@ -49,24 +49,24 @@ static void ionic_lif_queue_identify(struct ionic_lif *lif);
|
||||
static void ionic_dim_work(struct work_struct *work)
|
||||
{
|
||||
struct dim *dim = container_of(work, struct dim, work);
|
||||
struct ionic_intr_info *intr;
|
||||
struct dim_cq_moder cur_moder;
|
||||
struct ionic_qcq *qcq;
|
||||
struct ionic_lif *lif;
|
||||
u32 new_coal;
|
||||
|
||||
cur_moder = net_dim_get_rx_moderation(dim->mode, dim->profile_ix);
|
||||
qcq = container_of(dim, struct ionic_qcq, dim);
|
||||
new_coal = ionic_coal_usec_to_hw(qcq->q.lif->ionic, cur_moder.usec);
|
||||
lif = qcq->q.lif;
|
||||
new_coal = ionic_coal_usec_to_hw(lif->ionic, cur_moder.usec);
|
||||
new_coal = new_coal ? new_coal : 1;
|
||||
|
||||
if (qcq->intr.dim_coal_hw != new_coal) {
|
||||
unsigned int qi = qcq->cq.bound_q->index;
|
||||
struct ionic_lif *lif = qcq->q.lif;
|
||||
|
||||
qcq->intr.dim_coal_hw = new_coal;
|
||||
intr = &qcq->intr;
|
||||
if (intr->dim_coal_hw != new_coal) {
|
||||
intr->dim_coal_hw = new_coal;
|
||||
|
||||
ionic_intr_coal_init(lif->ionic->idev.intr_ctrl,
|
||||
lif->rxqcqs[qi]->intr.index,
|
||||
qcq->intr.dim_coal_hw);
|
||||
intr->index, intr->dim_coal_hw);
|
||||
}
|
||||
|
||||
dim->state = DIM_START_MEASURE;
|
||||
|
Loading…
Reference in New Issue
Block a user