About fcst
==========

The fcst kernel module implements an SCST target driver for the FCoE protocol.
FCoE or Fibre Channel over Ethernet is a protocol that allows to communicate
fibre channel frames over an Ethernet network. Since the FCoE protocol
requires a lossless Ethernet network, special network adapters and switches
are required.  Ethernet network adapters that support FCoE are called
Converged Network Adapters (CNA). The standard that makes lossless Ethernet
communication possible is called DCB or Data Center Bridging.

Since FCoE frames are a kind of Ethernet frames, communication between FCoE
clients and servers is limited to a single Ethernet broadcast domain.


Building and Installing
=======================

FCST is a kernel module that depends on libfc and SCST to provide FC target
support.

1.  Build and install scst, fcst and scstadmin following the instructions
    in the top-level INSTALL.md file.

2.  Install the FCoE admin tools:

	apt-get install fcoe-utils lldpad ||
	dnf install fcoe-utils lldpad ||
	zypper install fcoe-utils open-lldp

3.  Bring up SCST and configure the devices.

4.  Bring up an FCoE initiator (we'll enable target mode on it later):

	modprobe fcoe
	fcoeadm -c eth3

    The other end can be an initiator as well, in point-to-point mode
    over a full-duplex loss-less link (enable pause on both sides).
    Alternatively, the other end can be an FCoE switch.

5.  Use fcc (part of the open-fcoe contrib tools in step 7) to see the
    initiator setup.  To get the FCoE port name for eth3

	# fcc
	FC HBAs:
	HBA       Port Name                Port ID   State     Device
	host4     20:00:00:1b:21:06:58:21  01:01:02  Online    eth3

	host4 Remote Ports:
	Path      Port Name                Port ID   State     Roles
	4:0-0     10:00:50:41:4c:4f:3b:00  01:01:01  Online    FCP Initiator

    In the above example, there's one local host on eth3, and it's in
    a point-to-point connection with the remote initiator with Port_id 010101.

6.  Load fcst

	modprobe fcst

7.  Add any disks (configured in step 8) you want to export
     Note that you must have a LUN 0.

	LPORT=20:00:00:1b:21:06:58:21		# the local Port_Name

	cd /sys/kernel/scst_tgt/targets/fcst/$LPORT
	echo add disk-name 0 > luns/mgmt
	echo add disk-name 1 > luns/mgmt

8.  Enable the initiator:

	echo 1 > $LPORT/enabled

9.  As a temporary workaround, you may need to reset the interface
    on the initiator side so it sees the SCST device as a target and
    discovers LUNs.  You can avoid this by bringing up the initiator last.
