<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="Keywords" content="Fibre Channel target, Emulex target, FC target, FCoE target">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="author" content="Daniel Fernandes">
<meta name="Robots" content="index,follow">
<link rel="stylesheet" href="images/Orange.css" type="text/css">
<title>Emulex FC/FCoE target driver</title>
</head>

<body>
<!-- wrap starts here -->
<div id="wrap">
	<div id="header">
		<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
		<h2 id=slogan>Generic SCSI Target Subsystem for Linux</h2>
	</div>

	<div id="menu">
		<ul>
			<li><a href="index.html">Home</a></li>
			<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
			<li><a href="http://sourceforge.net/news/?group_id=110471">News</a></li>
			<li id="current"><a href="targets.html">Drivers</a></li>
			<li><a href="downloads.html">Downloads</a></li>
			<li><a href="contributing.html">Contributing</a></li>
			<li><a href="comparison.html">Comparison</a></li>
			<li><a href="users.html">Users</a></li>
		</ul>
	</div>

	<!-- content-wrap starts here -->
	<div id="content-wrap">
			<div id="sidebar">
				<h1>Target Drivers</h1>
				<ul class="sidemenu">
					<li><a href="target_iscsi.html">ISCSI-SCST with iSER</a></li>
					<li><a href="target_qla2x00t.html">QLogic FC qla2x00t</a></li>
					<li><a href="target_srp.html">SCSI RDMA Protocol (SRP)</a></li>
					<li><a href="target_mvsas.html">Marvell SAS adapters</a></li>
					<li><a href="target_emulex.html">Emulex FC/FCoE</a></li>
					<li><a href="target_lsi.html">LSI/MPT adapters</a></li>
					<li><a href="target_fcoe.html">FCoE Target</a></li>
					<li><a href="target_local.html">Local Target Driver</a></li>
					<li><a href="target_ibmvscsi.html">IBM pSeries Virtual SCSI</a></li>
					<li><a href="target_old.html">Old Unsupported</a></li>
				</ul>
				<h1>User utilities</h1>
				<ul class="sidemenu">
					<li><a href="scst_admin.html">SCST Admin Utility</a></li>
					<li><a href="handler_fileio_tgt.html">FILEIO_TGT handler</a></li>
				</ul>
			</div>

	  		<div id="main">
				<h1>Target driver for Emulex FC/FCoE</h1>
				<p><img src="images/LPe16002.jpg" width="100" height="120" class="float-left" alt="SCST Emulex">

				<p>The Emulex OneCore Storage FC/FCoE driver (ocs_fc_scst) is developed and maintained by Broadcom. It is available on the
				<a href="https://www.broadcom.com/products/storage/fibre-channel-host-bus-adapters/onecore-storage-sdk" class="readmore">OneCore Storage SDK</a> page.</p>

				<p>The Emulex OneCore Storage SDK supports the Service Level Interface 4 (SLI-4) API and is compatible with the latest generation of Emulex 8 and 16 Gb/s Fibre Channel HBAs (LPe15000 and LPe16000 series),
				as well as the latest generation of 10 and 40 Gb/s FCoE UCNAs (OCe14000-series). It supports both target and initiator mode of operation and a number of advanced features: NPIV, T10-PI, etc.</p>

				<p>If you intend to use persistent reservations with this target driver, you may need to apply: <a href="https://sourceforge.net/p/scst/mailman/message/35682659/" class="readmore">this patch</a>.</p>

				<p>Note: The drivers on <a href="http://sourceforge.net/projects/lpfcxxxx/" class="readmore">SourceForge Emulex Drivers</a>
				are very old, not maintained and not recommended for new designs.</p>

				<br><br>
				<p class="post-footer align-right">
					<a href="https://www.broadcom.com/products/storage/fibre-channel-host-bus-adapters/onecore-storage-sdk" class="readmore">Emulex OneCore Storage Drivers</a>
				</p>
				<table border=0><tr><td height="300px">&nbsp;</td></tr></table>
	  		</div>
	<!-- content-wrap ends here -->
	</div>

<!-- wrap ends here -->
</div>
<!-- footer starts here -->
<div id="footer">
	<p>&copy; Copyright 2004 - 2020<b><font class="names"> Vladislav Bolkhovitin &amp others</font></b>&nbsp;&nbsp;
	Design by: <b><font class="names">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
</div>
<!-- footer ends here -->
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://apps.sourceforge.net/piwik/scst/" : "http://apps.sourceforge.net/piwik/scst/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script><script type="text/javascript">
piwik_action_name = '';
piwik_idsite = 1;
piwik_url = pkBaseURL + "piwik.php";
piwik_log(piwik_action_name, piwik_idsite, piwik_url);
</script>
<object><noscript><p><img src="http://apps.sourceforge.net/piwik/scst/piwik.php?idsite=1" alt="piwik"></p></noscript></object>
<!-- End Piwik Tag -->
</body>
</html>
