1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
qemu network adapter initialization fails when using macaddr=<multicast MAC-address>
Not sure if ultra-strange, nondocumented feature in qemu (or linux kernel) or really bug: Network card initialization fails if first byte of mac address is not 00. The problem occurs at least with model=pcnet/rtl8139, in both cases the network adapter is not usable.
How to reproduce:
* Take standard initrd/kernel (tested with hardy)
* Start qemu (cmd see below) and enter "modprobe pcnet32" at prompt:
qemu -name SetupTest -no-acpi -m 128 -drive file=/dev/null,if=ide,index=0 -net nic,macaddr=00:22:33:44:55:66,model=pcnet -net user -kernel vmlinuz-2.6.24-26-generic -initrd initrd.img-2.6.24-26-generic -append break=premount
You will see "pcnet32 ... at 0x..., 00:22:33:44:55:66
* Do same with mac address 11:22:33:44:55:66
qemu -name SetupTest -no-acpi -m 128 -drive file=/dev/null,if=ide,index=0 -net nic,macaddr=11:22:33:44:55:66,model=pcnet -net user -kernel vmlinuz-2.6.24-26-generic -initrd initrd.img-2.6.24-26-generic -append break=premount
You will see "pcnet32 ... at 0x..., 00:00:00:00:00:00
The network adapter is non-functional, "ip link set eth0 up" does not report error, but does not work (indicates at least some linux kernel influence)
With the rtl8139 adapter, mac-address in guest is correct, but adapter does not work either (indicates qemu influence)
Tested other mac addrs, seems that the first byte has to be even. Would it make sense to issue a warning if a user requests a mac address with an odd first byte? What is the special meaning of the bit 0?
That bit indicates whether the address is a multicast or unicast address. A network card cannot have a multicast address.
It would make sense to do sanity checking for this.
A check for multicast MAC addresses has been introduced by this commit here:
http://git.qemu.org/?p=qemu.git;a=commitdiff;h=d60b20cf2ae6644b051
So I think we can close this ticket now.
|