From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28173 invoked by alias); 28 Jun 2007 18:32:16 -0000 Received: (qmail 28161 invoked by uid 22791); 28 Jun 2007 18:32:15 -0000 X-Spam-Check-By: sourceware.org Received: from main.gmane.org (HELO ciao.gmane.org) (80.91.229.2) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 28 Jun 2007 18:32:05 +0000 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1I3yNA-0003l3-8E for ecos-discuss@sources.redhat.com; Thu, 28 Jun 2007 20:05:40 +0200 Received: from c-76-17-159-202.hsd1.mn.comcast.net ([76.17.159.202]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 28 Jun 2007 20:05:40 +0200 Received: from grante by c-76-17-159-202.hsd1.mn.comcast.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 28 Jun 2007 20:05:40 +0200 To: ecos-discuss@sources.redhat.com From: Grant Edwards Date: Thu, 28 Jun 2007 22:57:00 -0000 Message-ID: References: <19489034.1182961244153.JavaMail.root@ps22> <4682ECF0.2010303@mlbassoc.com> <68185b500706280123td8b1f42ib855ab4d511ba68a@mail.gmail.com> <4683BC51.5030502@mlbassoc.com> <4683D27B.6030106@mlbassoc.com> User-Agent: slrn/0.9.8.1 (Linux) X-IsSubscribed: yes Mailing-List: contact ecos-discuss-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@ecos.sourceware.org Subject: [ECOS] Re: Interfacing directly to the low level ethernet driver, how?? X-SW-Source: 2007-06/txt/msg00285.txt.bz2 On 2007-06-28, Gary Thomas wrote: >> It's a pretty thin layer -- it just allows you to queue up >> outbout packets with cyg_io_write() and read from a queue of >> inboung packets (with a specified protocol type) using >> cyg_io_read(). >> >> Using RAW sockets would be nice, but adding a little code to >> an in-house driver is logistically easier than adding raw >> socket support to an "off-the-shelf" network stack and then >> turning around and doing it all again a couple years later >> when the network stack changes. > > Your comments, while they make sense about eCos in general, > aren't helping. Sorry. I just wanted to point out that what I described is actually pretty simple. > I want to know why Michele thinks he needs to write his own > stack (that's what his questions were about). > > Do you have your cyg_io code? Can you contribute it? I'll check with my employer. All you do is register the Ethernet driver as a normal "cyg_io" style driver and add syncronization so that simultaneous "write" operations from the network stack and from cyg_io_write() don't trip over each other. If you want to be extra fancy, you can add a receive queue for the custom protocol packets. The code is all Ethernet device specific, so I'm not sure how much help it would be to contribute it. > As for the network stack changing - I don't see that happening > anytime soon. The last time was 5 years ago and there's not a > great impetus for change now. It makes sense to me to fix > things that are missing or broken, rather than inventing new > ways of doing things. I agree. If we were starting now, that's probably what I'd try first. But, 7 years ago we had no experience with either eCos or either of the BSD network stacks, so adding a few (OK, maybe 50-100) lines of code the the Ethernet driver seemed like the safest way to go, since it didn't require us to get up to speed on NetBSD stack internals, and there was no danger of having to maintain a forked network stack. It also allowed us to implement a very low overhead zero-copy mechanism for raw ethernet I/O in a product where network stack overhead was by far the most significant bottleneck (I also spent several weeks writing and tweaking an assembly-language IP checksum routine). -- Grant Edwards grante Yow! ! Up ahead! It's a at DONUT HUT!! visi.com -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss