summaryrefslogtreecommitdiff
path: root/roms/ipxe/src/net/fcels.c
diff options
context:
space:
mode:
Diffstat (limited to 'roms/ipxe/src/net/fcels.c')
-rw-r--r--roms/ipxe/src/net/fcels.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/roms/ipxe/src/net/fcels.c b/roms/ipxe/src/net/fcels.c
index f8bcb865f..1cfe90727 100644
--- a/roms/ipxe/src/net/fcels.c
+++ b/roms/ipxe/src/net/fcels.c
@@ -13,7 +13,8 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
*/
FILE_LICENCE ( GPL2_OR_LATER );
@@ -244,20 +245,15 @@ static struct interface_descriptor fc_els_job_desc =
/**
* Fibre Channel ELS process
*
- * @v process Process
+ * @v els Fibre Channel ELS transaction
*/
-static void fc_els_step ( struct process *process ) {
- struct fc_els *els =
- container_of ( process, struct fc_els, process );
+static void fc_els_step ( struct fc_els *els ) {
int xchg_id;
int rc;
/* Sanity check */
assert ( fc_els_is_request ( els ) );
- /* Stop process */
- process_del ( &els->process );
-
/* Create exchange */
if ( ( xchg_id = fc_xchg_originate ( &els->xchg, els->port,
&els->peer_port_id,
@@ -278,6 +274,10 @@ static void fc_els_step ( struct process *process ) {
}
}
+/** Fibre Channel ELS process descriptor */
+static struct process_descriptor fc_els_process_desc =
+ PROC_DESC_ONCE ( struct fc_els, process, fc_els_step );
+
/**
* Create ELS transaction
*
@@ -298,7 +298,8 @@ static struct fc_els * fc_els_create ( struct fc_port *port,
ref_init ( &els->refcnt, fc_els_free );
intf_init ( &els->job, &fc_els_job_desc, &els->refcnt );
intf_init ( &els->xchg, &fc_els_xchg_desc, &els->refcnt );
- process_init_stopped ( &els->process, fc_els_step, &els->refcnt );
+ process_init_stopped ( &els->process, &fc_els_process_desc,
+ &els->refcnt );
els->port = fc_port_get ( port );
memcpy ( &els->port_id, port_id, sizeof ( els->port_id ) );
memcpy ( &els->peer_port_id, peer_port_id,