Re: UDP/IP via Ethernet in real time (config-preempt patch)
From: M. Koehrer
Date: Fri Jul 20 2007 - 09:31:09 EST
Hi,
thanks for the feedback. I had a closer look at the receive path of an Ethernet frame.
The driver (e1000 in my case) receives the raw frame and calls netif_rx.
>From netif_rx the sk_buff is passed on to netif_rx_schedule and here a raise_soft_irqoff(NET_RX_SOFTIRQ)
is called to trigger the task that does the remaining parts of the reception.
Even if I use a AF_PACKET / AF_RAW socket, it will be handled by the NET_RX_SOFTIRQ task.
As this task is not running in real time priority, I loose real time behaviour.
Within netif_rx there is a call to netpoll_rx which could be used as a kind filter to
separate interesting packets. However, currently netpoll_rx is used by the netconsole which allows
to register exactly one UDP per device that is taken into account.
I can not handle a real time network. Neither I do have a inteface to user space to the netconsole.
One approach could be to implement something similar to netpoll_rx that is used as switch
to separate standard Ethernet frames and frames that are treated as real time relevant.
In this case something similar to netif_rx_schedule is needed that calls a real time priority
irq thread like NET_RX_SOFTIRQ...
Any comments or feedback on this is highly welcome...
Thanks a lot
Mathias
> On Wed, Jul 18, 2007 at 04:26:00PM +0200, M. Koehrer wrote:
> > Hi,
> >
> > I had a short look at the netconsole.txt and the correspondent code.
> > It seems to be based on netpoll. This looks quite interesting for my
> needs.
> > However, it seems to be only accessible from kernel space and not
> > from user space.
> > I want to run a real time application in user space and do the UDP
> accesses
> > from there.
> > Is this somehow possible with the netpoll code? I did not see a callable
> interface
> > from user space side.
> >
> >
> Raw or Packet sockets then (AF_RAW / AF_PACKET)?
>
> Neil
>
> > Thanks for any feedback on this topic.
> >
> > Regards
> >
> > Mathias
> > > I would dump the idea of using UDP and inject raw ethernet frames onto
> > > the LAN segment. You can do this by bypassing almost all of the
> > > net-stack I'm sure of it. I think the netconsole kernel code does
> > > it...
> > >
> > > Documentation/networking/netconsole.txt
> > >
> >
> >
> > --
> > Mathias Koehrer
> > mathias_koehrer@xxxxxxxx
> >
> >
> > Viel oder wenig? Schnell oder langsam? Unbegrenzt surfen + telefonieren
> > ohne Zeit- und Volumenbegrenzung? DAS TOP ANGEBOT JETZT bei Arcor:
> günstig
> > und schnell mit DSL - das All-Inclusive-Paket für clevere Doppel-Sparer,
> > nur 39,85 ? inkl. DSL- und ISDN-Grundgebühr!
> > http://www.arcor.de/rd/emf-dsl-2
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-net" in
> > the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
>
> --
> /***************************************************
> *Neil Horman
> *Software Engineer
> *Red Hat, Inc.
> *nhorman@xxxxxxxxxxxxx
> *gpg keyid: 1024D / 0x92A74FA1
> *http://pgp.mit.edu
> ***************************************************/
>
--
Mathias Koehrer
mathias_koehrer@xxxxxxxx
Viel oder wenig? Schnell oder langsam? Unbegrenzt surfen + telefonieren
ohne Zeit- und Volumenbegrenzung? DAS TOP ANGEBOT JETZT bei Arcor: günstig
und schnell mit DSL - das All-Inclusive-Paket für clevere Doppel-Sparer,
nur 39,85 ? inkl. DSL- und ISDN-Grundgebühr!
http://www.arcor.de/rd/emf-dsl-2
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html