| To: | Eric Lemoine <Eric.Lemoine@xxxxxxx> |
|---|---|
| Subject: | Re: simple change to qdisc_restart() |
| From: | Eric Lemoine <Eric.Lemoine@xxxxxxx> |
| Date: | Tue, 20 May 2003 13:24:02 +0200 |
| Cc: | Robert Olsson <Robert.Olsson@xxxxxxxxxxx>, "David S. Miller" <davem@xxxxxxxxxx>, netdev@xxxxxxxxxxx |
| In-reply-to: | <20030520112109.GE978@udine> |
| References: | <20030520082217.GC978@udine> <20030520.012824.85398613.davem@xxxxxxxxxx> <20030520085724.GD978@udine> <16074.1339.3673.938923@xxxxxxxxxxxx> <20030520112109.GE978@udine> |
| Sender: | netdev-bounce@xxxxxxxxxxx |
| User-agent: | Mutt/1.3.28i |
> Let me explain a bit more. > > I developped a kernel module that basically implements per-cpu kernel > threads, each being bound to a particular cpu. I also modified the > Myrinet NIC driver and firmware so that they implement per-cpu rx rings. > > The NIC makes sure that packets of the same connection are always > deposited in the same ring. Here's how it does it. For each incoming > pkt, the NIC computes the index of the ring into which the packet must > be placed [*], passes this index to the driver, and dmas the packet into > the appropriate ring. The driver uses the ring index to wake up the > appropriate kernel thread. Each kernel-thread behaves in a NAPI manner. Oops. I forgot to mention that: [*] Currently the NIC simply does ring_idx = IPsrc & (nr_rings-1). -- Eric |
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: simple change to qdisc_restart(), Eric Lemoine |
|---|---|
| Next by Date: | Re: Route cache performance under stress, Jamal Hadi |
| Previous by Thread: | Re: simple change to qdisc_restart(), Eric Lemoine |
| Next by Thread: | Re: simple change to qdisc_restart(), Robert Olsson |
| Indexes: | [Date] [Thread] [Top] [All Lists] |