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




Reply via email to