• T
    hw/net/vmxnet3: Fix code to work on big endian hosts, too · c527e0af
    Thomas Huth 提交于
    Since commit ab06ec43 we test the vmxnet3 device in the
    pxe-tester, too (when running "make check SPEED=slow"). This now
    revealed that the code is not working there if the host is a big
    endian machine (for example ppc64 or s390x) - "make check SPEED=slow"
    is now failing on such hosts.
    
    The vmxnet3 code lacks endianness conversions in a couple of places.
    Interestingly, the bitfields in the structs in vmxnet3.h already tried to
    take care of the *bit* endianness of the C compilers - but the code missed
    to change the *byte* endianness when reading or writing the corresponding
    structs. So the bitfields are now wrapped into unions which allow to change
    the byte endianness during runtime with the non-bitfield member of the union.
    With these changes, "make check SPEED=slow" now properly works on big endian
    hosts, too.
    Reported-by: NDavid Gibson <dgibson@redhat.com>
    Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
    Reviewed-by: NDavid Gibson <dgibson@redhat.com>
    Signed-off-by: NThomas Huth <thuth@redhat.com>
    Signed-off-by: NJason Wang <jasowang@redhat.com>
    c527e0af
vmware_utils.h 3.9 KB