• Bruce Robson's avatar
    [netdrvr] eexpress: IPv6 fails - multicast problems · 46fa0617
    Bruce Robson authored
    Taken from http://bugzilla.kernel.org/show_bug.cgi?id=10577
    
    I was unable to access a computer containing an Intel EtherExpress 16 network
    card using IPv6.
    
    I traced this to failure of neighbour discovery.  When I used an "ip -6 neigh
    add" command, on the computer attempting access, to insert a binding between
    the IPv6 address of the computer with the Intel EtherExpress 16 network card
    and the card's ethernet address, I was able to access that computer using
    IPv6.
    
    Neighbour discovery requires working multicast.  The driver sources file
    eexpress.c contains an approximately 30 line function eexp_setup_filter used
    when loading multicast addresses.
    
    I found 3 problems in this function
    
    1) It wrote the number of multicast addresses to the card instead of the
        number of bytes in the multicast addresses.
    
    2) When loading multiple multicast addresses it loaded the first one
        provided multiple times instead of loading each one once.
    
    3) The setting of pointer 'data' from 'dmi->dmi_addr' occured before the
        test for the error situation of 'dmi' being NULL.
    
    Correcting these problems allows the computer with the Intel EtherExpress 16
    network card to found by IPv6 neighbour discovery.
    
    p.s. There is some information on the Intel EtherExpress 16 at
    http://www.intel.com/support/etherexpress/vintage/sb/cs-013500.htm
    Datasheet for the Intel 82586 ethernet controller used by the card
    http://www.datasheetcatalog.com/datasheets_pdf/8/2/5/8/82586.shtmlSigned-off-by: default avatarBruce Robson <bns_robson@hotmail.com>
    Cc: Jeff Garzik <jeff@garzik.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
    46fa0617
eexpress.c 45.1 KB