Go to main content

Managing Devices in Oracle® Solaris 11.4

Exit Print View

Updated: November 2020
 
 

Configuring Fibre Channel Ports With COMSTAR

The Fibre Channel (FC) port provider can use the same HBAs that are used for the FC initiators. A given FC port can be used as an initiator or as a target, but not as both. You can also configure a dual port or quad port FC HBA so that a subset of the HBA ports is in target mode and the rest of the ports are in initiator mode.

The procedures in this section are specific to QLogic HBAs. The driver to use with HBAs in initiator mode is qlc, which is a QLogic driver. The qlc driver works only in initiator mode, and cannot be used for target mode. The COMSTAR driver for a target QLogic 4G HBA is qlt.

Because initiator mode and target mode use different drivers, the driver you attach to an HBA port defines its function as a target or initiator. You can specify a driver for all the ports by specifying the PCI device ID of the HBA. Or, you can configure the driver on a port-by-port basis. Both methods use the update_drv command and are described in this section. For more information, see update_drv(8).

How to Display Existing FC Port Bindings

Before making changes to the HBA ports, first check the existing port bindings.

  1. Become an administrator.

    For more information, see Using Your Assigned Administrative Rights in Securing Users and Processes in Oracle Solaris 11.4.

  2. Display what is currently bound to the port drivers.

    In this example, the current binding is pciex1077,2432.

    # mdb -k
    Loading modules: [ unix krtld genunix specfs ...
    > ::devbindings -q qlc
    30001617a08 pciex1077,2432, instance #0 (driver name: qlc)
    300016177e0 pciex1077,2432, instance #1 (driver name: qlc)
    > $q

How to Set All FC Ports to a Specific Mode

This procedure changes all ports on all HBAs with a specific PCI device ID to target mode. The PCI device ID number binds a driver to a port, thereby setting all the HBA ports with that PCI device ID, for example, all QLogic 4G PCI express HBAs, to target mode.

  1. Become an administrator.

    For more information, see Using Your Assigned Administrative Rights in Securing Users and Processes in Oracle Solaris 11.4.

  2. Remove the current binding.

    In this example, the qlc driver is actively bound to pciex1077,2432. You must remove the existing binding for qlc before you can add that binding to a new driver. Single quotation marks are required in this syntax.

    # update_drv -d -i 'pciex1077,2432' qlc
    Cannot unload module: qlc
    Will be unloaded upon reboot.

    This message does not indicate an error. The configuration files have been updated but the qlc driver remains bound to the port until the system is rebooted.

  3. Establish the new binding.

    In this example, qlt is updated. Single quotes are required in this syntax.

    # update_drv -a -i 'pciex1077,2432' qlt
    devfsadm: driver failed to attach: qlt
    Warning: Driver (qlt) successfully added to system but failed to attach

    This message does not indicate an error. The qlc driver remains bound to the port, until the system is rebooted. The qlt driver attaches when the system is rebooted.

  4. Reboot the system to attach the new driver. Then, recheck the bindings.
    # init 6
    .
    .
    .
    # mdb -k
    
    Loading modules: [ unix krtld genunix specfs dtrace ...
    > ::devbindings -q qlt
    30001615a08   pciex1077,2432, instance #0 (driver name: qlt)
    30001615e0    pciex1077,2432, instance #1 (driver name: qlt)
    > $q
  5. Verify that the target mode framework has access to the HBA ports.
    # stmfadm list-target -v
    Target: wwn.210100E08BA54E60
    Operational Status : Offline
    Provider Name : qlt(1)
    Alias : -
    Sessions : 0
    Target: wwn.210100E08BA54E60
    Operational Status : Offline
    Provider Name : qlt(0)
    Alias : -
    Sessions : 0

How to Set Selected FC Ports to Initiator or Target Mode

This procedure uses path-based bindings. It shows you how to use a specific device path to bind a port to a driver that is different from the driver to which it is currently bound.

  1. Become an administrator.

    For more information, see Using Your Assigned Administrative Rights in Securing Users and Processes in Oracle Solaris 11.4.

  2. Display a list of the HBA ports and their respective device paths.

    This example shows the device paths for a two HBAs with four ports.

    # cfgadm -v
    Ap_Id                          Receptacle   Occupant     Condition  Information
    When         Type         Busy     Phys_Id
    c2                             connected    configured   unknown
    unavailable  fc-fabric    n        /devices/pci@380/pci@1/pci@0/pci@5/SUNW,qlc@0/fp@0,0:fc
    c3                             connected    configured   unknown
    unavailable  fc-fabric    n        /devices/pci@380/pci@1/pci@0/pci@5/SUNW,qlc@0,1/fp@0,0:fc
    c4                             connected    unconfigured unknown
    unavailable  fc           n        /devices/pci@380/pci@1/pci@0/pci@6/QLGC,qlc@0,2/fp@0,0:fc
    c5                             connected    unconfigured unknown
    unavailable  fc           n        /devices/pci@380/pci@1/pci@0/pci@6/QLGC,qlc@0,3/fp@0,0:fc
    
  3. Set the second port to target mode, and leave the other ports in initiator mode.

    Remove the initial /devices portion of the path, and include everything up to /fp@0. The path with the /devices portion removed is the path to which the system binds the qlt driver.

    Single quotation marks are required in this syntax.

    # update_drv -a -i '/pci@380/pci@1/pci@0/pci@5/SUNW,qlc@0,1' qlt
    devfsadm: driver failed to attach: qlt
    Warning: Driver (qlt) successfully added to system but failed to attach

    This message does not indicate an error. The qlc driver remains bound to the port until reboot. The qlt driver attaches during reboot.

  4. Reboot the system to attach the new driver. Then, recheck the bindings.

    You should see that the port changed from initiator mode (qlc) to target mode (qlt).

    # init 6
    .
    .
    .
    # mdb -k
    .
    .
    .
    > $q
  5. Verify that the target mode framework has access to the HBA ports.
    # stmfadm list-target -v