NICチップは、 82575, 82576, 82580, I350, and I210/211 向け。バージョン2.4以降のhistoryを記載。
Changelog for igb-5.1.2 ======================== * Change how driver update rx packet stats, to include additional packet types. * Add support for freeing q_vectors via RCU. * Change how PBA is reported when using flashless i210/i211. * Fixes to improve load performance for flashless i210 devices. * Add get/set_channels function for queue management via ethtool. * Update the number of tries for copper link in Media Auto Sense feature due to behavior with no cables. * Add function to output RSS table via ethtool. * Sync some RSS changes from upstream. * Fix for WOL issues found on some kernel versions. * Fix for PHY config issue found when changing PHY settings after init on some i354 platforms. Changelog for igb-5.0.6 ======================== * fix for phy_id reading mechanism for i354 device on some platforms. * Change how driver update rx packet stats, to include additional packet types. * Add support for freeing q_vectors via RCU. * Change how PBA is reported when using flashless i210/i211. Changelog for igb-5.0.5 ======================== * Add new i354 device support, including AutoMedia Detect on supported platforms. * Media Auto Sense feature for hardware configured for it, including special EEPROM on 82580 devices only. * Fix for compile errors on older distro's and newest upstream. * Update MTU so that is always at least a standard frame size. * Fix for MDD in i350. * Added support to set EEE-advertisements via ethtool. * Other EEE-related fixes. * Fix for flow control configuration on SGMII connection. * Fix for i2c lockdep warning. * add setlink, getlink support Changelog for igb-4.3.0 ======================== * Add new i350-based device support * Fix problem with i350 that affected the ability to detect spoofed packets. * Fix for problem that all checksums were not updated in EEPROM on i350 parts when changes to the EEPROM made in later sections only. Changelog for igb-4.2.16 ======================== * update NVM functions to display NVM versions correctly in ethtool -i. * add ability to configure anti-spoofing mode via iproute2. * Add new i350 devices. * Add new I210 devices. * Allow room for jumbo frames if MAX_SKB_FRAGS is less than 8. * Add fix for I210/I211 to allow link to actually happen before reporting. * Free memory when dma mapping failed. * Enable EEE link partner advertisement support. * Drop BUILD_BUG_ON call from igb_build_rx_buffer. * Since RSS is supported in MSI-X interrupt mode only, need to check for this mode before processing RSS module param request and log appropriate message. * Add conditionals for extended ethtool ops on RHEL6. * Increase TX_WAKE_THRESHOLD to keep it in sync with our other drivers. * Drop unnecessary check for LRO flag when LRO queue will be empty if LRO is disabled. * Use rx/tx_itr_setting when setting up initial value of itr * Add support for SW timestamping. * Add timeout for PTP Tx work item, * Add mechanism for detecting latched hardware Rx timestamp * Added in-kernel I2C interface implementation for thermal sensor and changed sysfs reporting to hwmon. * Free any held skb that should have been timestamped on remove. * Dropped the use of the hardware packet-split feature in favor of a page based receive. * TSO now checks for CHECKSUM_PARTIAL before checking for gso_size * Several changes to refactor driver for improved performance. Changelog for igb-4.1.2 ======================== * Fix for SerDes loopback test. * No longer rely on APME to determine WoL settings. Changelog for igb-4.0.17 ======================== * Add support for i210/i211 devices. * Minor EEE code simplification. * Add support for DEFINE_DMA_UNMAP_ADDR and DEFINE_DMA_UNMAP_LEN * Fix minor issue that leaves one additional buffer unused * Port the community code for PHY setting being lost after PHY power down. * Port the community code for byte queue limits (BQL) support. * Port community code for basic runtime PM support. * Fix for connection speed mistmatch after bringing device down/up * Add driver support for additional i350-based devices. * Modified fiber media type speed/autoneg code to accomodate 100Mbps for 100baseFXsfp. * Fix for ethtool states pause frame use 'no' for pause frame-enabled adapter * Change to remove the adapter->node value from the adapter struct and disable node specific allocations. This was rejected by the community some time ago and since then has been causing problems when node specific allocations fail. * Fix for problem where 82580 devices do not appear to properly clear the TSICR interrupt on read like i350 devices by explicitly acknowledging the interrupt by writing 1 to that bit. * Fix for FC threshold setting cause poor performance when packet buffer size is increased. * Clean up and restructure ethtool support for EEE, to enable and disable the feature according to user's specification * Update method of storing and displaying nvm version info for all devices. * Update the filters to be more consistent with what the driver wants to do. For example, for devices that timestamp all packets, report that the filter is set for timestamping all packets. * Change tncrs implementation only increment tncrs for non-i210/i211 parts, due to reporting error. * Fix flow control set up issue for Fiber adapters. Changelog for igb-3.4.8 ======================== * Changed igb_init_fw() to add initialization of checksum to 0. * Removed debug messaging from build. Changelog for igb-3.4.7 ======================== * Changed igb_init_fw() to call proper swfw_sync function. * Fixed minor issue that left one additional buffer unused. * Added support for DEFINE_DMA_UNMAP_ADDR and DEFINE_DMA_UNMAP_LEN. * Updated EEE to consistently check for internal copper devices. * Fixed procfs code leading to a call trace on certain distros. * Changed ethtool link test to account for slower-to-link devices. * Added basic runtime power management support. * Added byte queue limit support. * Fixed rare link issue on 82576. * Cleared TDWBAH/TDWBAL registers upon a VF reset to prevent packet loss when switching a VF from a Windows VM to a Linux VM. * Set I2C bit-bang mode on external thermal sensor devices to reset routine to ensure I2C access after resets. * Fixed link issue on certain i350 devices. * Removed workaround for certain 82580 devices fixed by silicon stepping. * Fixed link state change getting lost on all SerDes devices when using SerDes Forced Mode Override. Changelog for igb-3.3.6 ======================== * Updated DMAC threshold to account for jumbo frames. * Removed unused stack variable * Fix dma mapping call in igb_tx_map found when compiling on 3.2 kernels * Update ethtool info for flow control advertising. * Add ADVERTISED_Pause to keep flags. * Added back the call to update the stats in the igb_get_stats entry point due to bugs internal and external. This was this way intentionally due to performance problems, but I'm changing it back due to popular demand. * Added additional flag to advertise settings for link capabilities in ethtool. * add check for fw_enabled before initializing firmware. * Add feature to log device data of various types to sysfs or procfs depending on kernel support of sysfs. Changelog for igb-3.2.10 ======================== * Use length instead of DMA address to indicate that a DMA is present * Alternate MAC Address fixes Changelog for igb-3.2.9 ======================== * Fix to enable the SRRCTL.DROP_EN bit when multiple queues are present and flow control is disabled. By doing this we can prevent a single queue from consuming the entire FIFO and causing us to drop Rx packets. * Fix to allow Alt. MAC Address feature on non-LOM devices. * Add new device support. * Fix to Correct driver version data sent to CEM firmware. * Fixes to sync-up with upstream kernel. * Change code so that instead of keeping a local copy of ring->dma just call ring->dma in igb_tx_map. * Fix to improve the readability of TX path by moving TX DESC debug code into seperate functions. * Fix TX hangs seen under heavy stress. * Fix to drop the setting of ndo_set_multicast_list when we have net_device_ops. * Fix RX accounting so that it includes the ethernet header in RX bytes received. * Update TX NAPI to not use budget. * Correct location of endif so that we check node_param in single param case. * Fix to stop clearing of tx_desc->status, since we have next_to_watch as a pointer. * Fix to use i as an offset to the end of the ring instead of as an offset to the ring. * Fix to simplify olinfo_status setup by having igb_tso also set the Tx CSUM flag. * Fix to only write olinfo_status for the first descriptor. * Fix missed check for i == tx_ring->count in clean_tx_irq and also update the value to reflect -count instead of 0. * Enable i350 to do per-packet timestamping. * Move the timer init into a sperate function to match what we have upstream. * Whitespace and formatting cleanups to match what was required for upstream. * Refactoring of driver to make it more similar in exeuction to other Intel drivers. * Minor LRO related fixes * Fix to leave status bits in rx descriptor and check them seperately. * Fix LRO and VLANs with skb recycling. * Fix use of i uninitialized in igb_tx_map error path. * Fix to drop the mapped as page flag since it is no longer used. * Fix value of MAX_TXD_PWR. * Fix for bug where ethtool regtest fails on i350 devices. * Fix timestamping not occuring in igb. * Correct endianess on return type for igb_test_staterr. * Minor reorder of tests for igb_can_lro * Changed 1-20ms long msleep calls to usleep_range. * Remove unecessary dev and rx_buf_len values from stack. * Cleanup IVAR configuration. * Fix spelling of promiscuous, add "packets" variable when calculating itr. * Set index for context for both tso and csum. * Remove unecessary extra reads in timestamp. * Re-order devices to match what we have in upstream. * Match the approach used upstream for defining the pci device table. * Don't bother setting tso to 0 since we will just overwrite it. * Fix build failure due to shtx not being in tx_buffer_info. * Update build flags for kernel build to better match kernel. * Remove outdated comment about single q-disc model. * Drop work_done from RX cleanup fastpath. * Streamline RX buffer allocation and cleanup. * Move itr related data into work container within the q_vector. * Consolidate creation of TX buffer info and data descriptor. * Fix configuration of TX descriptor into igb_ctxt function. * Make next_to_watch and first into pointers instead of offsets. * Create functions for generating cmd_type_info and olinfo. * Add rmb to prevent length from being read before DD. * Add VLAN_HLEN instead of using define in e1000_defines.h. * Add flush after I/O write, but before delays to make sure the delay takes effect. * Fix to add IGB_CB which allows for LRO and legacy VLAN to pass the VLAN in the CB block of the skb instead of passing it as a parameter. * Add header define to allow use of single pointer for lro. * Move contents of lro_desc into the skb. * Replace hlist with skb queue. * Fix possible LRO ordering issue. * Minor tweaks to avoid timestamping a packet prior to flush. * Fix in igb_init_dmac to only write to PCIEMISC register for 82580 and later adapters. * Base feature enablement for RX HASH on device flag instead of ring flag. * Make LRO compile an opt out instead of an opt in. * Add support for ndo_set_features. * Do not strip gso_segs when TSO is not enabled in kernel. * Fix for loopback test failure on DH89XXCC hardware. * Added PCIe read to interrupt hot path. Added flag CONFIG_IGB_REBOOT_ON_LAN to support enabling reboot on lan. Changelog for igb-3.1.16 ======================== * Fix for Malicious Driver Detection Feature on i350 devices in a virutalized environment. * Add module parameter for DMA Coalescing feature to allow user to determine approximate latency setting at init. * Updated DMA Coalescing init parameters per performance test lab results. Feature now saves more power. * Fix for problem found in pre-release RHEL 5.7 which caused a panic at device configuration. * Added function to set rx_hash and a call to it during receive. Not changeable by ethtool at this time, however. Changelog for igb-3.0.22 ======================== Fix for panic found with some third party software in receive function. Fix is already upstream. Changelog for igb-3.0.19 ======================== Add full feature support for i350 devices. New features for i350 devices only: Add Energy Efficient Ethernet, enabled by default, disabled by module parameter: EEE Add DMA Coalescing, disabled by default, enabled by module parameter: DMAC Add Thermal Throttling feature. Driver will message user when device is shut down or speed throttled due to thermal event on copper devices only. Fix for VMkernel failed JF TCP traffic by netperf-uw Fix for Disabling HW VLAN stripping/insertion breaks traffic (NIC::Functional::HW.VLAN.RX.TX) Fix for Jumbo Frames are not recieved by virtual adapters when VMDQ is enabled Fix for VmKernel Jumbo Frames are not received by vmknic. Fix for problem found building on 2.4 kernels, replaced references to pci_dev->dev with pci_dev_to_dev. Fix for transmitting a packet shorter than 17 bytes was causing TX hangs on the adapters. Fix for problem where user can't ping local vf after setting pf mtu to 9000 Fix for setting mtu doesn't allow packets over 1472 to be sent on i350 devices. Fix for PF to VF not pingable only on local host. Fixed calls to strncpy to use correct string length. Changelog for igb-2.4.13 ======================== * fixes compile problems found in 2.6.37. Changelog for igb-2.4.12 ======================== * fixes compile problem found in SLES10. Changelog for igb-2.4.11 ======================== * add support for Intel i350 Gigabit Network Connection. This is the follow-on part to 82580. Changelog for igb-2.4.8 ======================== * add support for new fiber devices Intel(R) Gigabit Server Adapters I340-F4 * add support for new string format of PBA numbers for adapters. * fix for dropped connection when setting fiber devices to unsupported speed using ethtool. * updated readme
# You should use it this way : # [g]make TARGET=os ARCH=arch CPU=cpu USE_xxx=1 ... # # Valid USE_* options are the following. Most of them are automatically set by # the TARGET, others have to be explictly specified : # USE_CTTPROXY : enable CTTPROXY on Linux (needs kernel patch). # USE_DLMALLOC : enable use of dlmalloc (see DLMALLOC_SRC) # USE_EPOLL : enable epoll() on Linux 2.6. Automatic. # USE_GETSOCKNAME : enable getsockname() on Linux 2.2. Automatic. # USE_KQUEUE : enable kqueue() on BSD. Automatic. # USE_MY_EPOLL : redefine epoll_* syscalls. Automatic. # USE_MY_SPLICE : redefine the splice syscall if build fails without. # USE_NETFILTER : enable netfilter on Linux. Automatic. # USE_PCRE : enable use of libpcre for regex. Recommended. # USE_PCRE_JIT : enable JIT for faster regex on libpcre >= 8.32 # USE_POLL : enable poll(). Automatic. # USE_PRIVATE_CACHE : disable shared memory cache of ssl sessions. # USE_REGPARM : enable regparm optimization. Recommended on x86. # USE_STATIC_PCRE : enable static libpcre. Recommended. # USE_TPROXY : enable transparent proxy. Automatic. # USE_LINUX_TPROXY : enable full transparent proxy. Automatic. # USE_LINUX_SPLICE : enable kernel 2.6 splicing. Automatic. # USE_LIBCRYPT : enable crypted passwords using -lcrypt # USE_CRYPT_H : set it if your system requires including crypt.h # USE_VSYSCALL : enable vsyscall on Linux x86, bypassing libc # USE_GETADDRINFO : use getaddrinfo() to resolve IPv6 host names. # USE_OPENSSL : enable use of OpenSSL. Recommended, but see below. # USE_FUTEX : enable use of futex on kernel 2.6. Automatic. # USE_ACCEPT4 : enable use of accept4() on linux. Automatic. # USE_MY_ACCEPT4 : use own implemention of accept4() if glibc < 2.10. # USE_ZLIB : enable zlib library support. # USE_CPU_AFFINITY : enable pinning processes to CPU on Linux. Automatic. # USE_TFO : enable TCP fast open. Supported on Linux >= 3.7. # # Options can be forced by specifying "USE_xxx=1" or can be disabled by using # "USE_xxx=" (empty string).
Variables useful for packagers
# Variables useful for packagers : # CC is set to "gcc" by default and is used for compilation only. # LD is set to "gcc" by default and is used for linking only. # ARCH may be useful to force build of 32-bit binary on 64-bit systems # CFLAGS is automatically set for the specified CPU and may be overridden. # LDFLAGS is automatically set to -g and may be overridden. # SMALL_OPTS may be used to specify some options to shrink memory usage. # DEBUG may be used to set some internal debugging options. # ADDINC may be used to complete the include path in the form -Ipath. # ADDLIB may be used to complete the library list in the form -Lpath -llib. # DEFINE may be used to specify any additional define, which will be reported # by "haproxy -vv" in CFLAGS. # SILENT_DEFINE may be used to specify other defines which will not be # reported by "haproxy -vv". # DESTDIR is not set by default and is used for installation only. # It might be useful to set DESTDIR if you want to install haproxy # in a sandbox. # PREFIX is set to "/usr/local" by default and is used for installation only. # SBINDIR is set to "$(PREFIX)/sbin" by default and is used for installation # only. # MANDIR is set to "$(PREFIX)/share/man" by default and is used for # installation only. # DOCDIR is set to "$(PREFIX)/doc/haproxy" by default and is used for # installation only.
# Other variables : # DLMALLOC_SRC : build with dlmalloc, indicate the location of dlmalloc.c. # DLMALLOC_THRES : should match PAGE_SIZE on every platform (default: 4096). # PCREDIR : force the path to libpcre. # PCRE_LIB : force the lib path to libpcre (defaults to $PCREDIR/lib). # PCRE_INC : force the include path to libpcre ($PCREDIR/inc) # SSL_LIB : force the lib path to libssl/libcrypto # SSL_INC : force the include path to libssl/libcrypto # IGNOREGIT : ignore GIT commit versions if set. # VERSION : force haproxy version reporting. # SUBVERS : add a sub-version (eg: platform, model, ...). # VERDATE : force haproxy's release date.