Skip to content

gomesjj/ax88179_178a

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

USB NIC Driver for ESXi 5.1/5.5/6.0/6.5/6.7 (ASIX)

AISX ax88179_178a driver for ESXi

**Update (12/02/19)**
  • Modules compiled for ESXi 6.5 will work on ESXi 6.7 without modification
  • Source code updated to version 1.19.0 (latest)
  • Build script for ESXi 6.5 added
  • Key features:

    • Supports ASIX AX88179 and AX88178a
    • TCP, UDP and IPv4 checksum offload (RX and TX)
    • TCP, UDP and IPv6 checksum offload (RX and TX)
    • Scatter-Gather support
    • TCP Segmentation Offload support
    • Wake on LAN support
    • VLAN support
    • Jumbo Frames (4k)

    ###Table of Contents

    Tested Devices

    The following devices were tested with this driver.

    Required Software

    CentOS 5.3-x86 64 bit DVD ISO - http://mirror.ash.fastserv.com/centos/5.3/isos/x86_64/CentOS-5.3-x86_64-bin-DVD.iso

    ESXi 6.0 and 6.5

    VMware ESXi 6.0 source code (VMware-ESXI-60U2-ODP.iso) and build toolchain (VMware-TOOLCHAIN-ODP-vsphere60u2-Mar-01-2016.iso)

    ESXi 5.5

    VMware ESXi 5.5 source code (VMware-ESX-5.5.0u03-ODP.iso) and build toolchain (VMware-550u3-TOOLCHAIN-ODP_21_July_2015.iso)

    ESXi 5.1

    VMware ESXi 5.1 source code and build toolchain are both included in a single file (VMware-esx-open-source-5.0.0u2.oss.tgz).

    Setup

    The embedded documentation for the ESXi open source disclosure packages recommends the build should be performed on a CentOS 5.3 x64 system to produce 64-bit packages. There are other systems mentioned (CentOS 32-bit, Red Hat, FreeBSD and Windows), so take your pick!

    To make life easier, I customised the Kickstart file provided with the ESXi 5.5 Toolchain ISO (under the config folder) to build a CentOS 5.3 x64 server VM. Once it is up and running, we deviate a bit from the instructions provided by VMware.

    The initial build directory structure should be:

    mkdir -p /build/{vsphere,toolchain}

    The next steps are a bit different, depending on whether the build environment is being prepared for ESXi 5.1 or later versions:

    Prepare the build environment

    ESXi 5.1

    Extract the contents of the compressed tar archive to /build/vsphere:

    cd /build/vsphere
    tar xvf /path/to/VMware-esx-open-source-5.1.0u2.oss.tar --strip-components=1 server/vmkdrivers-gpl
    cd vmkdrivers-gpl

    You are now ready to compile the build toolchain:

    glibc

    cd glibc-2.3.2-95.44
    bash ./BUILD.txt
    cd ..

    binutils

    cd binutils-2.17.50.0.15-modcall
    bash ./BUILD.txt
    cd ..

    gcc

    cd gcc-4.1.2-9
    bash ./BUILD.txt
    cd ..		

    Unlike ESXi 5.1, the ODP source code and the build toolchain for 5.5 and 6.0 are distributed as two separate ISO images. The two ISOs include hundreds of packages, but only a small subset is actually required to build the drivers.

    ESXi 5.5

    Copy the vmkdrivers-gpl folder from the ODP ISO (VMware-ESX-5.5.0u03-ODP.iso) to /build/vsphere/

    cp -r /cdrom/vmkdrivers-gpl /build/vsphere
    umount /cdrom

    Note: The above assumes that /cdrom is the mount point for the ISO/Physical DVD — your environment might differ.

    The toolchain ISO (VMware-550u3-TOOLCHAIN-ODP_21_July_2015.iso) includes the source for multiple libraries and tools, but only glibc, binutils and gcc at specific versions are required.

    cd /build/toolchain
    tar xvf /cdrom/tc-src.tar src/gcc-4.4.3-2 src/glibc-2.3.2-95.44 src/binutils-2.20.1-1 src/common/functions
    umount /cdrom

    Note: The above assumes that /cdrom is the mount point for the ISO/Physical DVD — your environment might differ.

    Compile the build toolchain:

    glibc

    cd /build/toolchain/src/glibc-2.3.2-95.44
    bash ./install.sh

    binutils

    cd /build/toolchain/src/binutils-2.20.1-1
    bash ./install.sh

    gcc

    cd /build/toolchain/src/gcc-4.4.3-2
    bash ./install.sh

    ESXi 6.0

    Copy the vmkdrivers-gpl folder from the ODP ISO (VMware-ESXI-60U2-ODP.iso) to /build/vsphere/

    cp -r /cdrom/vmkdrivers-gpl /build/vsphere
    umount /cdrom

    Note: The above assumes that /cdrom is the mount point for the ISO/Physical DVD — your environment might differ.

    The toolchain ISO (VMware-TOOLCHAIN-ODP-vsphere60u2-Mar-01-2016.iso) includes the source for multiple libraries and tools, but only glibc, binutils and gcc at specific versions are required.

    cd /build/toolchain
    tar xvf /cdrom/tc-src.tar src/gcc-4.4.3-2 src/glibc-2.3.2-95.44 src/binutils-2.22 src/common/functions
    umount /cdrom

    Note: The above assumes that /cdrom is the mount point for the ISO/Physical DVD — your environment might differ.

    Compile the build toolchain:

    glibc

    cd /build/toolchain/src/glibc-2.3.2-95.44
    bash ./install.sh

    binutils

    cd /build/toolchain/src/binutils-2.22
    bash ./install.sh

    gcc

    cd /build/toolchain/src/gcc-4.4.3-2
    bash ./install.sh

    ESXi 6.5

    The ODB source and toolchain for 6.5 are completely broken and won't produce a working driver. However, there are no differences between the 6.0 and 6.5 source files, as VMware is preparing to drop support for legacy drivers.

    Please follow the instructions as if compiling for ESXi 6.0, noting the changes highlighted in the sections below

    Building the driver

    There is a little bit more preparation to be done to build the driver. Again, some of the steps are different depending on the version of ESXi.

    Common

    cd /build/vsphere/vmkdrivers-gpl
    tar zxvf vmkdriver-gpl.tgz

    Create the directory for the driver's source code. The same source files are used to build the driver on all environments.

    cd /build/vsphere/vmkdrivers-gpl
    mkdir vmkdrivers/src_92/drivers/usb/net/ax88179
    cp /path/to/source/ax88179_178a.* vmkdrivers/src_92/drivers/usb/net/ax88179/

    Create the directory that will hold the driver's namespace dependencies map:

    ESXi 5.1

    cd /build/vsphere/vmkdrivers-gpl
    mkdir BLD/build/HEADERS/CUR-92-vmkdrivers-namespace/vmkernel64/release/ax88179
    echo -e "VMK_NAMESPACE_REQUIRED(\"com.vmware.usb\", \"9.2.1.0\");\
    \nVMK_NAMESPACE_REQUIRED(\"com.vmware.usbnet\", \"9.2.1.0\");"\
    > BLD/build/HEADERS/CUR-92-vmkdrivers-namespace/vmkernel64/release/ax88179/__namespace.h

    ESXi 5.5

    cd /build/vsphere/vmkdrivers-gpl
    mkdir BLD/build/HEADERS/CUR-92-vmkdrivers-namespace/vmkernel64/release/ax88179
    echo -e "VMK_NAMESPACE_REQUIRED(\"com.vmware.usb\", \"9.2.2.0\");\
    \nVMK_NAMESPACE_REQUIRED(\"com.vmware.usbnet\", \"9.2.2.0\");"\
    > BLD/build/HEADERS/CUR-92-vmkdrivers-namespace/vmkernel64/release/ax88179/__namespace.h

    ESXi 6.0

    cd /build/vsphere/vmkdrivers-gpl
    mkdir BLD/build/HEADERS/92-vmkdrivers-namespace/vmkernel64/release/ax88179
    echo -e "VMK_NAMESPACE_REQUIRED(\"com.vmware.usb\", \"9.2.3.0\");\
    \nVMK_NAMESPACE_REQUIRED(\"com.vmware.usbnet\", \"9.2.3.0\");"\
    > BLD/build/HEADERS/92-vmkdrivers-namespace/vmkernel64/release/ax88179/__namespace.h

    ESXi 6.5

    cd /build/vsphere/vmkdrivers-gpl
    mkdir BLD/build/HEADERS/92-vmkdrivers-namespace/vmkernel64/release/ax88179
    echo -e "VMK_NAMESPACE_REQUIRED(\"com.vmware.usb\", \"10.0\");\
    \nVMK_NAMESPACE_REQUIRED(\"com.vmware.usbnet\", \"9.2.3.0\");"\
    > BLD/build/HEADERS/92-vmkdrivers-namespace/vmkernel64/release/ax88179/__namespace.h

    Finally, copy the appropriate build script to /build/vsphere/vmkdrivers-gpl and compile the driver.

    ESXi 5.1

    cd /build/vsphere/vmkdrivers-gpl
    cp /path/to/scripts/build-ax88179_u51.sh .
    chmod a+x build-ax88179_u51.sh
    ./build-ax88179_u51.sh

    ESXi 5.5

    cd /build/vsphere/vmkdrivers-gpl
    cp /path/to/scripts/build-ax88179_u55.sh .
    chmod a+x build-ax88179_u55.sh
    ./build-ax88179_u55.sh

    ESXi 6.0 and 6.5

    cd /build/vsphere/vmkdrivers-gpl
    cp /path/to/scripts/build-ax88179_u60.sh .
    chmod a+x build-ax88179_u60.sh
    ./build-ax88179_u60.sh

    About

    USB NIC Driver for ESXi 5.1/5.5/6.0/6.5/6.7 based on the ASIX ax88179_178a source code

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published