Skip to content

Commit

Permalink
libfc, fcoe, bnx2fc: Always use fcoe_disc_init for discovery layer in…
Browse files Browse the repository at this point in the history
…itialization

Currently libfcoe is doing some libfc discovery layer initialization outside of
libfc. This patch moves this code into libfc and sets up a split in discovery
(one time) initialization code and (re-configurable) settings that will come in
the next patch.

Signed-off-by: Robert Love <robert.w.love@intel.com>
Tested-by: Jack Morgan <jack.morgan@intel.com>
Reviewed-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
  • Loading branch information
Robert Love committed Mar 25, 2013
1 parent f9c4358 commit 8a9a713
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 9 deletions.
2 changes: 1 addition & 1 deletion drivers/scsi/bnx2fc/bnx2fc_fcoe.c
Original file line number Diff line number Diff line change
Expand Up @@ -939,7 +939,7 @@ static int bnx2fc_libfc_config(struct fc_lport *lport)
fc_elsct_init(lport);
fc_exch_init(lport);
fc_rport_init(lport);
fc_disc_init(lport);
fc_disc_init(lport, lport);
return 0;
}

Expand Down
11 changes: 6 additions & 5 deletions drivers/scsi/fcoe/fcoe_ctlr.c
Original file line number Diff line number Diff line change
Expand Up @@ -2826,6 +2826,8 @@ static void fcoe_ctlr_vn_timeout(struct fcoe_ctlr *fip)
int fcoe_libfc_config(struct fc_lport *lport, struct fcoe_ctlr *fip,
const struct libfc_function_template *tt, int init_fcp)
{
void *priv = lport;

/* Set the function pointers set by the LLDD */
memcpy(&lport->tt, tt, sizeof(*tt));
if (init_fcp && fc_fcp_init(lport))
Expand All @@ -2842,12 +2844,11 @@ int fcoe_libfc_config(struct fc_lport *lport, struct fcoe_ctlr *fip,
lport->tt.disc_start = fcoe_ctlr_disc_start;
lport->tt.disc_stop = fcoe_ctlr_disc_stop;
lport->tt.disc_stop_final = fcoe_ctlr_disc_stop_final;
mutex_init(&lport->disc.disc_mutex);
INIT_LIST_HEAD(&lport->disc.rports);
lport->disc.priv = fip;
} else {
fc_disc_init(lport);
priv = fip;
}

fc_disc_init(lport, priv);

return 0;
}
EXPORT_SYMBOL_GPL(fcoe_libfc_config);
Expand Down
5 changes: 3 additions & 2 deletions drivers/scsi/libfc/fc_disc.c
Original file line number Diff line number Diff line change
Expand Up @@ -714,8 +714,9 @@ static void fc_disc_stop_final(struct fc_lport *lport)
/**
* fc_disc_init() - Initialize the discovery layer for a local port
* @lport: The local port that needs the discovery layer to be initialized
* @priv: Private data structre for users of the discovery layer
*/
int fc_disc_init(struct fc_lport *lport)
int fc_disc_init(struct fc_lport *lport, void *priv)
{
struct fc_disc *disc;

Expand All @@ -736,7 +737,7 @@ int fc_disc_init(struct fc_lport *lport)
mutex_init(&disc->disc_mutex);
INIT_LIST_HEAD(&disc->rports);

disc->priv = lport;
disc->priv = priv;

return 0;
}
Expand Down
2 changes: 1 addition & 1 deletion include/scsi/libfc.h
Original file line number Diff line number Diff line change
Expand Up @@ -1074,7 +1074,7 @@ void fc_rport_terminate_io(struct fc_rport *);
/*
* DISCOVERY LAYER
*****************************/
int fc_disc_init(struct fc_lport *);
int fc_disc_init(struct fc_lport *, void *);

static inline struct fc_lport *fc_disc_lport(struct fc_disc *disc)
{
Expand Down

0 comments on commit 8a9a713

Please sign in to comment.