Non-contiguous ifIndex problems with ifMib sysctl

2003-10-22 Thread Gerrit Nagelhout
Hi,

I am trying to debug a crash (null pointer access) in sysctl_ifdata (in
if_mib.c).  What I have noticed is that if interfaces (in this case vlans)
are created and destroyed dynamically, it is possible to create "holes" in
the ifnet_addrs structure.  For example, if I start with the following
interfaces:
1 em0
2 em1
3 lo0

and then do:
ifconfig vlan1 create
ifconfig vlan2 create
ifconfig vlan1 destroy

I end up with:
1 em0
2 em1
3 lo0
4 0
5 vlan2

In this case, the net.link.generic.system.ifcount is set to 4.  If an
application (like slurm) then calls sysctl on
net.link.generic.ifdata., and loops from 1 to 5 for ifIndex, it
will crash when it gets to 4 because there are no checks for these holes,
and 4 is less than if_index.
I have also noticed that an snmpwalk to a system like this will have the
proper interface count, but will only show the interfaces before the hole.
It's easy enough to add the null check in sysctl_ifdata, and just return
ENOENT, but that won't fix the snmpwalk problem.  How should applications
generally deal with this?

Thanks,

Gerrit


___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Intel em transmit hangs with DMA packet prefetching enabled

2004-01-20 Thread Gerrit Nagelhout
Hi,

Recently I turned on the packet prefetching feature (register TXDMAC 0x3000,
set DPP to 0).  This increases the maximum transmit performance per port by
about 50KPPS.  Everything worked fine, until one of our applications that
sends lots of data with multiple (2 - 3) mbufs per descriptor started using
this feature, and the transmitter started hanging.  The watchdog feature in
the driver catches it, and resets the chip, after which everything is good
again for a while.  Has anyone else seen this behaviour before?
Thanks,

Gerrit Nagelhout



___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"