I'm submitting the following automatic approval case for Paul Durrant at
Solarflare Communications.
Its a fairly typical case for a new 10G Ethernet driver using GLDv3, although
it does introduce support for some new 10G specific statistics in Nemo and
depends on some specific bug fixes.
If anyone feels this requires wider review, please feel free to promote it to
a full case.
Template Version: @(#)sac_nextcase %I% %G% SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
Solarflare 10G Ethernet Driver
1.2. Name of Document Author/Supplier:
Author: Paul Durrant
1.3 Date of This Document:
24 November, 2008
4. Technical Description
PROBLEM
-------
Solarflare Communications Inc. produces 10G ethernet controller and PHY chips.
To get the best performance from these chips it is necessary to use the Nemo
(a.k.a. GLDv3) driver interface, which is not yet a stable published interface
in Solaris. Thus, to use this interface it is necessary to deliver a driver
into ON.
SOLUTION
--------
sfxge is a driver for the current Solarflare reference NICs SFE4001, SFE4002,
SFE4003 and SFN4111T comprising Solarflare controller and PHY chips.
It leverages the Nemo driver interface (including the LSO and checksum offload
support provided therein) as well as an LRO (Large Receive Offload a.k.a. TCP
segment coalescing) to achieve very high performance. It also makes use of
information present in the cpu_t data structure (specifically the
cpu_physid_t sub-structure) to intelligently distribute workload over
non-contending CPU cores.
sfxge can be built for both SPARC and x86 platforms.
NOTES
-----
sfxge will be open source, licensed under the CDDL.
To achieve highest performance across the broadest range of platforms the
sfxge driver relies on fixes for the following bugs:
6694625 Performance falls off the cliff with large IO sizes
6690086 Solaris needs to support LRO (Large Receive Offload)
and also:
PSARC 2008/539 enhanced esballoc
Being a 10G ethernet driver the driver also requires additional definitions in
mac_ether.h:
@@ -101,10 +101,14 @@
ETHER_STAT_JABBER_ERRORS,
ETHER_STAT_CAP_100T4,
ETHER_STAT_ADV_CAP_100T4,
ETHER_STAT_LP_CAP_100T4,
+
+ ETHER_STAT_CAP_10GFDX,
+ ETHER_STAT_ADV_CAP_10GFDX,
+ ETHER_STAT_LP_CAP_10GFDX,
};
#define ETHER_NSTAT (ETHER_STAT_LP_CAP_100T4 - ETHER_STAT_ALIGN_ERRORS + 1)
#define ETHER_STAT_ISACOUNTER(_ether_stat) \
and mac.h:
@@ -115,10 +115,12 @@
MAC_PROP_EN_AUTONEG,
MAC_PROP_MTU,
MAC_PROP_ZONE,
MAC_PROP_AUTOPUSH,
MAC_PROP_FLOWCTRL,
+ MAC_PROP_ADV_10GFDX_CAP,
+ MAC_PROP_EN_10GFDX_CAP,
MAC_PROP_ADV_1000FDX_CAP,
MAC_PROP_EN_1000FDX_CAP,
MAC_PROP_ADV_1000HDX_CAP,
MAC_PROP_EN_1000HDX_CAP,
MAC_PROP_ADV_100FDX_CAP,
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
ON
6.5. ARC review type: Automatic
6.6. ARC Exposure: open