Re: UDP/IP via Ethernet in real time (config-preempt patch)
From: Christopher Fowler
Date: Fri Jul 20 2007 - 10:27:52 EST
Since you have the e1000 code in source I guess it could be possible to
write your own e1000 driver and create a device in /dev that would allow
you to interface with it. You then could do anything you want and
bypass all the Linux networking code.
Create an API to build UDP/IP packets to drop on the wire and program
your real-time app to use that.
Just trying to be creative....
On Fri, 2007-07-20 at 15:31 +0200, M. Koehrer wrote:
> 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
> > ***************************************************/
> >
>
-
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