OCS_FC(4)

πŸ“¦
version 15.1 Β· 2 versions
, in freebsd 14.5, freebsd 15.1

πŸ’… OCS_FC(4) β€” like, the Emulex Fibre Channel Host Adapter driver, bestie

okay so this is ocs_fc(4) from the Kernel Interfaces Manual (section 4, driver town ✨) and it's the page for the Emulex Fibre Channel Host Adapter driver. Strap in, it's actually so good.


✨ SYNOPSIS ✨

Slap this in your kernel config:

device ocs_fc

And in device.hints(5):

hint.ocs_fc.N.initiator
hint.ocs_fc.N.target
hint.ocs_fc.N.topology
hint.ocs_fc.N.speed

In loader.conf(5):

ocs_fc_load="YES"

And in loader.conf(5) or sysctl.conf(5):

dev.ocs_fc.N.port_state
dev.ocs_fc.N.wwpn
dev.ocs_fc.N.wwnn
dev.ocs_fc.N.configured_speed
dev.ocs_fc.N.configured_topology
dev.ocs_fc.N.current_speed
dev.ocs_fc.N.current_topology

πŸ¦‹ DESCRIPTION πŸ¦‹

The ocs_fc driver provides access to Fibre Channel SCSI devices. That's the whole vibe. πŸ’«

It supports initiator and target modes, and you can hook it up over Arbitrated loops, Point-to-Point, or Fabric connections. Pick your fighter, they all slay.

Now, FC-Tape? highly recommended for connections to tape drives that support it. Not like "meh maybe", like highly. And FC-Tape is literally four elements from the T-10 FCP-4 specification:

  • Precise Delivery of Commands
  • Confirmed Completion of FCP I/O Operations
  • Retransmission of Unsuccessfully Transmitted IUs
  • Task Retry Identification

Together these features allow for link level error recovery with tape devices β€” and ngl, that's kind of the whole point. Without link level error recovery, an initiator cannot, for instance, tell whether a tape write command that has timed out resulted in all, part, or none of the data going to the tape drive. the suspense?? unbearable 😭

Good news: FC-Tape is automatically enabled when both the controller and target support it. It just happens. main character energy. πŸ‘‘


πŸŽ€ HARDWARE πŸŽ€

The ocs_fc driver supports these PCIe Fibre Channel adapters (and yes, they're all iconic):

  • LPe3500X FC Host Bus Adapter (Emulex 64/32G FC Gen 7 HBA)
  • LPe3200X FC Host Bus Adapter (Emulex 32/16G FC Gen 6 HBA)
  • LPe3100X FC Host Bus Adapter (Emulex 32/16G FC Gen 6 HBA)
  • LPe160XX FC Host Bus Adapter (Emulex 16/8G FC Gen 5 HBA)
  • LPe15004 FC Host Bus Adapter (Emulex 16/8G FC Gen 5 HBA)

🌸 UPDATING FIRMWARE 🌸

First thing, bestie: adapter firmware updates are persistent. ok noted. 🫢

Here's the whole ritual for updating firmware:

  1. Copy this code to a Makefile:
KMOD=ocsflash
FIRMWS=imagename.grp:ocsflash
.include <bsd.kmod.mk>
  1. Replace imagename with the name of the GRP file.
  2. Copy the Makefile and GRP file to a local directory
  3. Execute make and copy the generated ocsflash.ko file to /lib/modules
  4. sysctl dev.ocs_fc.<N>.fw_upgrade=ocsflash
  5. Check kernel messages regarding status of the operation
  6. Reboot the machine
step 7 is not optional, bestie, do not skip the reboot πŸ™ˆ

πŸ’œ BOOT OPTIONS πŸ’œ

These bad boys are controlled by setting values in /boot/device.hints:

  • hint.ocs_fc.N.initiator β€” Enable initiator functionality. Default 1 (enabled), 0 to disable.
  • hint.ocs_fc.N.target β€” Enable target functionality. Default 1 (enabled), 0 to disable.
  • hint.ocs_fc.N.topology β€” Topology: 0 for Auto, 1 for NPort only, 2 for Loop only.
  • hint.ocs_fc.N.speed β€” Link speed in megabits per second. Possible values include: 0 Auto-speed negotiation (default), 4000 (4GFC), 8000 (8GFC), 16000 (16GFC).

🧚 SYSCTL OPTIONS 🧚

  • dev.ocs_fc.N.port_state β€” Port state (read/write). Valid values are online and offline. that's literally it, two moods πŸ’€
  • dev.ocs_fc.N.wwpn β€” World Wide Port Name (read/write).
  • dev.ocs_fc.N.wwnn β€” World Wide Node Name (read/write).
  • dev.ocs_fc.N.fwrev β€” Firmware revision (read-only). look, don't touch πŸ‘€
  • dev.ocs_fc.N.sn β€” Adapter serial number (read-only).
  • dev.ocs_fc.N.configured_speed β€” Configured Port Speed (read/write). Valid values are: 0 Auto-speed negotiation (default), 4000 (4GFC), 8000 (8GFC), 16000 (16GFC).
  • dev.ocs_fc.N.configured_topology β€” Configured Port Topology (read/write). Valid values are: 0-Auto; 1-NPort; 2-Loop.
  • dev.ocs_fc.N.current_speed β€” Current Port Speed (read-only).
  • dev.ocs_fc.N.current_topology β€” Current Port Topology (read-only).

⭐ SUPPORT ⭐

For general information and support, go to the Broadcom website at: http://www.broadcom.com/ or E-Mail at ocs-driver-team.pdl@broadcom.com. they're literally waiting to hear from you πŸ’Œ


🌈 SEE ALSO 🌈


πŸ‘‘ AUTHORS πŸ‘‘

The ocs_fc driver was written by Broadcom. periodt. πŸ’…


ok that's the whole page, you're officially an ocs_fc girlie now πŸŽ€βœ¨ this beauty lives in the Debian build of the manual, dated May 1, 2026 β€” go forth and slay your Fibre Channel setup, ily πŸ«ΆπŸ’–

πŸ“¦ where this page comes from