lkml.org 
[lkml]   [2015]   [Aug]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH net-next 6/8] net: thunderx: Rework interrupt handler
Date
On 29.08.2015 04:44, Alexey Klimov wrote:

>> -static irqreturn_t nicvf_intr_handler(int irq, void *nicvf_irq)
>> +static irqreturn_t nicvf_intr_handler(int irq, void *cq_irq)
>> +{
>> + struct nicvf_cq_poll *cq_poll = (struct nicvf_cq_poll *)cq_irq;
>> + struct nicvf *nic = cq_poll->nicvf;
>> + int qidx = cq_poll->cq_idx;
>> +
>> + nicvf_dump_intr_status(nic);
>> +
>> + /* Disable interrupts */
>> + nicvf_disable_intr(nic, NICVF_INTR_CQ, qidx);
>> +
>> + /* Schedule NAPI */
>> + napi_schedule(&cq_poll->napi);
>> +
>> + /* Clear interrupt */
>> + nicvf_clear_intr(nic, NICVF_INTR_CQ, qidx);
>> +
>> + return IRQ_HANDLED;
>> +}
>
> You're not considering spurious irqs in all new irq handlers here and
> below and schedule napi/tasklets unconditionally. Is it correct?
> For me it looks like previous implementation relied on reading of
> NIC_VF_INT to understand irq type and what actions should be
> performed. It generally had idea that no interrupt might occur.

1. The previous version of the handler did not handle spurious
interrupts either. Probably that means that the author of the patch
knows for sure that they do not happen.

2. Instead of reading the status register new version registers
different handlers for different irqs. I don't see why it can be wrong.

I am going to address your other suggestions in the next version of the
patchset.

Thank you
Aleksey Makarov




\
 
 \ /
  Last update: 2015-08-30 11:41    [W:0.048 / U:33.760 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site