Svensson Patrik L wrote:
> Emil,
> For the moment I can not prove that's the e1000 initialization is
> wrong, in fact it reports everything is OK. 
> Maybe the error is after the probe function, I have noticed that the
> device name had an temporary name in the /sys/class/net directory
> (/sys/class/net/__tmp1234 instead of eth0) when the error occurs. Do
> you know where the creation of the /sys/class/net/<device> tree is
> done?   

If you load the driver and you have interface (even if it's called __tmp1234) 
then the driver did it's job. Interfaces are not guaranteed to be called ethX 
and can be renamed which is what seems to be happening in your case. There is 
nothing the driver can do about that.

To get a better idea what happens when the network is brought up - take a look 
at the initialization scritps:

/etc/sysconfig/network-scripts/ifup-eth (excerpt):
# remap, if the device is bound with a MAC address and not the right device num
# bail out, if the MAC does not fit
if [ -n "${HWADDR}" ]; then
    FOUNDMACADDR=`get_hwaddr ${REALDEVICE}`
    if [ "${FOUNDMACADDR}" != "${HWADDR}" ]; then
        curdev=`get_device_by_hwaddr ${HWADDR}`
        if [ -n "$curdev" ]; then
          rename_device "${REALDEVICE}" "${HWADDR}" "${curdev}" || {
            echo $"Device ${DEVICE} has different MAC address than expected, ign
oring."
            exit 1
          }
        fi
    fi
fi

Note the rename_device function. You can see what the function is doing in 
/etc/sysconfig/network-scripts/network-functions:

# rename_device() - Rename a network device to something else
# $1 - desired name
# $2 - hardware address to name (no longer used)
# $3 - '/' separated list of devices that are already in use
#      (for general calls, use the current device you're trying to
#       change to $1)

rename_device()
{
    local target=${3##*/}

    /sbin/ip link set "$target" name "$1" 2>/dev/null || {
      local hw2=`get_hwaddr ${1}`
      local nconfig=`get_config_by_hwaddr ${hw2}`
      local curdev=`get_device_by_hwaddr ${hw2}`
      local dev=
      [ -z "${hw2}" ] && return
      if [ -n "$nconfig"  ]; then
         dev=$(. $nconfig ; echo $DEVICE)
         oldifs=$IFS
         IFS=/
         for device in $3 ; do
            [ "$dev" = "$device" ] && unset dev
         done
         IFS=$oldifs
      fi
      [ -z "$dev" ] && dev=dev$RANDOM

      rename_device $dev $hw2 "$3/$curdev"
      /sbin/ip link set "$target" name $1 2>/dev/null
    }
}

So maybe you can edit those scripts to fit your needs? Or simply comment out 
the renaming function and see what you get.

Thanks,
Emil
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel

Reply via email to