linux-mips
[Top] [All Lists]

Re: Irq architecture for multi-core network driver.

To: David Daney <ddaney@caviumnetworks.com>
Subject: Re: Irq architecture for multi-core network driver.
From: Chetan Loke <chetanloke@gmail.com>
Date: Wed, 16 Dec 2009 17:08:11 -0500
Cc: Chris Friesen <cfriesen@nortel.com>, netdev@vger.kernel.org, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, linux-mips <linux-mips@linux-mips.org>
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=ZQN8IX6nCa2CjaR9ADBOQ+dR7E/+uEvqhj+tbiYmdro=; b=rFG1uWLLQLCDgv8RYGCAhNs2FU3oEAkefeD/dwNyWuOhqh4gp5hxsWtIRQfBIKQ2q2 ptdWcS2R4+SVv2XlpEptZ/vdpXkQnQWa1++kYfFdwFJEqFWk8KgLysniAgpPDtI5dKnU YXmWoUJ80Vk17qQp5AFU0b82MFaDgNoXyB7no=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=Z4jEvrsyzxiwE88BEoxPsbhc48j+7PMb9M5XlSu2XLzoI9lRZjAS4Cc626dH4HkZkd H3ct0hYLzGDRF7tn307vThM5IBBM5oVrF7dNlCFXQTs+TObX5MAQeLvX/NaSo0RLHkUb 1sOWCUJtmVh6EsuC+D17nYq98WnUAUYvPvsBY=
In-reply-to: <4AE0DB98.1000101@caviumnetworks.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <4AE0D14B.1070307@caviumnetworks.com> <4AE0D72A.4090607@nortel.com> <4AE0DB98.1000101@caviumnetworks.com>
Sender: linux-mips-bounce@linux-mips.org
>>
>> Does your hardware do flow-based queues?  In this model you have
>> multiple rx queues and the hardware hashes incoming packets to a single
>> queue based on the addresses, ports, etc. This ensures that all the
>> packets of a single connection always get processed in the order they
>> arrived at the net device.
>>
>
> Indeed, this is exactly what we have.
>
>
>> Typically in this model you have as many interrupts as queues
>> (presumably 16 in your case).  Each queue is assigned an interrupt and
>> that interrupt is affined to a single core.
>

> Certainly this is one mode of operation that should be supported, but I
> would also like to be able to go for raw throughput and have as many cores
> as possible reading from a single queue (like I currently have).
>
Well, you could let the NIC firmware(f/w) handle this. The f/w would
know which interrupt was just injected recently.In other words it
would have a history of which CPU's would be available. So if some
previously interrupted CPU isn't making good progress then the
firmware should route the incoming response packets to a different
queue. This way some other CPU will pick it up.


> David Daney
> --
Chetan Loke

<Prev in Thread] Current Thread [Next in Thread>