Subject: PSARC FastTrack [12/13/2006]: SolarFlare NIC/PORT Drivers
[ resend to the correct alias. Thanks Ed, Glenn S. and John P. ]
- Anish
This information is Sun Proprietary: Need-to-Know
1. Introduction
1.1. Project/Component Working Name:
SolarFlare NIC/PORT Drivers
1.2. Name of Document Author/Supplier:
Author: Paul Durrant
1.3 Date of This Document:
06 December, 2006
4. Technical Description
These drivers support two types of NIC. The legacy Solarflare EF1
(EF1-21022T) PCI 2x1GBASE-T NIC and the Solarflare Solarstorm(tm)
(SFC4000) based reference design NICs, including the following:
SFE4001 - PCIe 1x10GBASE-T (copper)
SFE4002 - PCIe 1x10GBASE-SR (optical)
SFE4003 - PCIe 1x10GBASE-CX4
EF1-21022T hardware manifests itself as a single PCI function, despite
supporting 2 physical ports. SFC4000 hardware manifests itself as two PCI
functions, but only has one physical port.
Solaris requires that a single network device driver instance is bound to
a single physical port. Because of the mismatch between this requirement
and the hardware's manifestation in PCI space, it is necessary to bind a
bus nexus driver (sfcn) to the EF1002/SFC4000 hardware device node(s) and
have it create a child device node for each port, as shown in figure 1.
A separate driver (sfcp) is then used to bind to these nodes, fulfilling
the instance-per-port requirement.
_________________
| |
sfcn | EF1 / | "pci1924,c101"
| SFC4000 | "pci1924,703" "pci1924,6703"
_________________
/ \
/ \
/ \
__________ __________
sfcp | Port 0 | | Port 1 |
__________ __________
NOTE: For SFC4000 hardware, only 'Port 0' is created.
Because much of the code required to implement the sfcn and sfcp
driver is
common, the majority of it is compiled into a miscellaneous module (sfc)
on which both sfcn and sfcp declare a link dependency. There are
therefore
three kernel modules in total: sfc, sfcn and sfcp.
Interfaces imported
_____________________________________________________________________
GLDv3 PSARC/2004/571 Committed
Nemo MAC-Type Plugin Arch. PSARC/2006/248 Consolidation Private
NDI[1] PSARC/1993/697 Uncommitted
Interfaces exported
_____________________________________________________________________
/kernel/drv/sfcn Committed
/kernel/drv/sfcp Committed
/kernel/misc/sfc Committed
/kernel/drv/amd64/sfcn Committed
/kernel/drv/amd64/sfcp Committed
/kernel/misc/amd64/sfc Committed
/kernel/drv/sparcv9/sfcn Committed
/kernel/drv/sparcv9/sfcp Committed
/kernel/misc/sparcv9/sfc Committed
SUNWsfc (package name) Committed
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
ON
6.5. ARC review type: FastTrack
[1] The following NDI functions are referenced:
i_ddi_map_fault
ddi_dma_map
ddi_dma_allochdl
ddi_dma_freehdl
ddi_dma_bindhdl
ddi_dma_unbindhdl
ddi_dma_flush
ddi_dma_win
ddi_dma_mctl
ddi_bus_prop_op
ndi_busop_get_eventcookie
ndi_busop_add_eventcall
ndi_busop_remove_eventcall
ddi_set_name_addr
ddi_set_parent_data
ndi_devi_enter ndi_devi_alloc_sleep
i_ndi_config_node
i_ddi_node_state
ndi_devi_free
ndi_devi_exit