On (05/06/10 11:17), Piotr Jasiukajtis wrote:
> <[email protected]> wrote:
> > Can you insert a dtrace probe in arp_drop_packet() and see if/how
> > this is reached?
> > something like
> >
> > #!/usr/sbin/dtrace -Cs -
> > arp_drop_packet:entry
> > {
> >     stack();
> > }
> >

Oops, I forgot to tell you to do a 

  printf("%s: %s", (string)((ill_t*)arg2)->ill_name, (string)arg0); 

inside the probe.

But I suspect that the arp probes that you are seeing here are harmless,
and are coming from 
    854        arp_drop_packet("Interface is not nominated "           
    855           "for multicast sends and receives",
    856           mp, ill);
and probably not even from igb1.

I recall that you said that this is link-based failure detection. Plus
you mention:

> The same issue with igb1 as a standalone interface.

which makes me suspect that either the igb driver or the ethernet peer
is not happy, and is telling IPMP that the driver has failed.

> Without IPMP group arp_drop_packet function was not called.
> 
> Unplumb/plumb'ing igb1 does not solve the issue. The interface still
> doesn't receive any packets.

what happens if you modunload igb and then plumb it back? If that
fixes the problem, I would be suspicious that the problem is below ip.

Also, could you please check the following for me

1. use mdb to get the phyint flags like this:
   # mdb -k
     :
   mdb> ::ill
   ADDR     NAME     VER TYPE        CNT WQ       FLAGS     
    :
   db1e5d14 igb1     v4  ETHER        ... 

   Above gives the ADDR for igb1- use that address in the command below:

   mdb> db1e5d14::print ill_t ill_phyint->phyint_flags

2. Unplumb igb1, and run a dtrace script like this:

#!/usr/sbin/dtrace -Cs -
ip_rput_dlpi_writer:entry
{
        self->trace = 1;
        self->mp=(mblk_t *)arg2;
}
ill-dlpi
/self->trace/
{
        self->ill = (ill_t *)arg2;
        printf("dl_primitive %s ill %s ", (string)arg1,
                (string)self->ill->ill_name);
        self->notify=(dl_notify_ind_t *)self->mp->b_rptr;
        printf("notification %x", self->notify->dl_notification);
}
ip_rput_dlpi_writer:return
/self->trace/
{
        self->trace = 0;
}
/*
arp_drop_packet:entry
{
        printf("%s: %s", (string)((ill_t*)arg2)->ill_name, (string)arg0);
}
*/

I'd like to see if the driver is sending up the "UP" notification correctly.

Thanks for collecting all this info.

> I'm not sure if this is related to igb1 only, I think I saw that
> earlier on other interfaces as well.
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to