Subject: [netatalk-admins] [Fwd: tulip multicast and netatalk?]
From: Jeff Wiegley (jeff@w3-design.com)
Date: Mon Nov 03 1997 - 17:35:36 EST
Well Donald seemd to indicate that the problem is with Netatalk so I
figured I pass along his ideas so that somebody more familiar with
the inner workings of netatalk could help confirm or deny his
opinions so that I can get to the bottom of my problems.
- Jeff Wiegley
attached mail follows:
On Mon, 3 Nov 1997, Jeff Wiegley wrote:
> Subject: tulip multicast and netatalk?
>
> Just having a little prroblem with netatalk and the netatalk people
> indicate that it is a tulip driver problem.
Every single Linux driver that uses a multicast filter (as opposed to
Rx-all-multicast when any multicast packets are desired) seems to be having
a problem with netatalk.
Since they all use different multicast filter schemes, I'm starting to think
it's a problem with netatalk, not a problem with my drivers.
> I asked the question on the netatalk mailing list about why this is
> so and received this reply...
>
> > The caveat (for the DEC tulip based cards) is that the driver has
> > difficulties with multicast. Upgrade to a newer kernel, and/or upgrade
> > the tulip driver explicitly. Or you could force the card into promiscuous
> > mode (not ideal or recommended, but it works). It's not that bad.
Ask them about the EEPro100 driver then... it seems to have problems with
multicast as well. And it computes the multicast filter internally, so the
driver could only pass a corrupt multicast address list.
> Is this true? how do I fix it? I am using the
>
> "tulip.c:v0.83 10/19/97 becker@cesdis.gsfc.nasa.gov"
>
> driver version with kernel version 2.0.29+ISS patch.
>
> Other than that I can't quite figure out how to get promiscuous mode
> enabled and I can't figure out why this would be good/bad.
A patch is to always turn on the Rx-all-multicast flag:
In set_multicast_list():
printk(KERN_INFO "%s: Promiscuous mode enabled.\n", dev->name);
tp->csr6 |= 0xC0;
- } else if ((dev->mc_count > 1000) || (dev->flags & IFF_ALLMULTI)) {
+ } else if ((dev->mc_count > 0) || (dev->flags & IFF_ALLMULTI)) {
/* Too many to filter perfectly -- accept all multicasts. */
outl(csr6 | 0x0080, ioaddr + CSR6);
This is evil, and wastes the *excellent* multicast filter of the Tulip, but..
Donald Becker becker@cesdis.gsfc.nasa.gov
USRA-CESDIS, Center of Excellence in Space Data and Information Sciences.
Code 930.5, Goddard Space Flight Center, Greenbelt, MD. 20771
301-286-0882 http://cesdis.gsfc.nasa.gov/pub/people/becker/whoiam.html
This archive was generated by hypermail 2b28 : Sat Dec 18 1999 - 16:27:56 EST