Re: [PATCH v2 11/13] qla2xxx: edif: fix inconsistent check of db_flags

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> On Oct 21, 2021, at 2:32 AM, Nilesh Javali <njavali@xxxxxxxxxxx> wrote:
> 
> From: Quinn Tran <qutran@xxxxxxxxxxx>
> 
> db_flags field is a bit field. Replace value check with bit flag check.
> 
> Signed-off-by: Quinn Tran <qutran@xxxxxxxxxxx>
> Signed-off-by: Nilesh Javali <njavali@xxxxxxxxxxx>
> ---
> drivers/scsi/qla2xxx/qla_edif.c   | 26 +++++++++++++-------------
> drivers/scsi/qla2xxx/qla_edif.h   |  7 +++++--
> drivers/scsi/qla2xxx/qla_init.c   | 13 ++++++-------
> drivers/scsi/qla2xxx/qla_iocb.c   |  3 +--
> drivers/scsi/qla2xxx/qla_target.c |  2 +-
> 5 files changed, 26 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_edif.c b/drivers/scsi/qla2xxx/qla_edif.c
> index 1ea130c61d70..440a3caa28f9 100644
> --- a/drivers/scsi/qla2xxx/qla_edif.c
> +++ b/drivers/scsi/qla2xxx/qla_edif.c
> @@ -218,7 +218,7 @@ fc_port_t *fcport)
> 		    "%s edif not enabled\n", __func__);
> 		goto done;
> 	}
> -	if (vha->e_dbell.db_flags != EDB_ACTIVE) {
> +	if (DBELL_INACTIVE(vha)) {
> 		ql_dbg(ql_dbg_edif, vha, 0x09102,
> 		    "%s doorbell not enabled\n", __func__);
> 		goto done;
> @@ -482,9 +482,9 @@ qla_edif_app_start(scsi_qla_host_t *vha, struct bsg_job *bsg_job)
> 	ql_dbg(ql_dbg_edif, vha, 0x911d, "%s app_vid=%x app_start_flags %x\n",
> 	     __func__, appstart.app_info.app_vid, appstart.app_start_flags);
> 
> -	if (vha->e_dbell.db_flags != EDB_ACTIVE) {
> +	if (DBELL_INACTIVE(vha)) {
> 		/* mark doorbell as active since an app is now present */
> -		vha->e_dbell.db_flags = EDB_ACTIVE;
> +		vha->e_dbell.db_flags |= EDB_ACTIVE;
> 	} else {
> 		ql_dbg(ql_dbg_edif, vha, 0x911e, "%s doorbell already active\n",
> 		     __func__);
> @@ -1274,7 +1274,7 @@ qla24xx_sadb_update(struct bsg_job *bsg_job)
> 		goto done;
> 	}
> 
> -	if (vha->e_dbell.db_flags != EDB_ACTIVE) {
> +	if (DBELL_INACTIVE(vha)) {
> 		ql_log(ql_log_warn, vha, 0x70a1, "App not started\n");
> 		rval = -EIO;
> 		SET_DID_STATUS(bsg_reply->result, DID_ERROR);
> @@ -1778,7 +1778,7 @@ qla_els_reject_iocb(scsi_qla_host_t *vha, struct qla_qpair *qp,
> void
> qla_edb_init(scsi_qla_host_t *vha)
> {
> -	if (vha->e_dbell.db_flags == EDB_ACTIVE) {
> +	if (DBELL_ACTIVE(vha)) {
> 		/* list already init'd - error */
> 		ql_dbg(ql_dbg_edif, vha, 0x09102,
> 		    "edif db already initialized, cannot reinit\n");
> @@ -1821,7 +1821,7 @@ static void qla_edb_clear(scsi_qla_host_t *vha, port_id_t portid)
> 	port_id_t sid;
> 	LIST_HEAD(edb_list);
> 
> -	if (vha->e_dbell.db_flags != EDB_ACTIVE) {
> +	if (DBELL_INACTIVE(vha)) {
> 		/* doorbell list not enabled */
> 		ql_dbg(ql_dbg_edif, vha, 0x09102,
> 		       "%s doorbell not enabled\n", __func__);
> @@ -1875,7 +1875,7 @@ qla_edb_stop(scsi_qla_host_t *vha)
> 	unsigned long flags;
> 	struct edb_node *node, *q;
> 
> -	if (vha->e_dbell.db_flags != EDB_ACTIVE) {
> +	if (DBELL_INACTIVE(vha)) {
> 		/* doorbell list not enabled */
> 		ql_dbg(ql_dbg_edif, vha, 0x09102,
> 		    "%s doorbell not enabled\n", __func__);
> @@ -1926,7 +1926,7 @@ qla_edb_node_add(scsi_qla_host_t *vha, struct edb_node *ptr)
> {
> 	unsigned long		flags;
> 
> -	if (vha->e_dbell.db_flags != EDB_ACTIVE) {
> +	if (DBELL_INACTIVE(vha)) {
> 		/* doorbell list not enabled */
> 		ql_dbg(ql_dbg_edif, vha, 0x09102,
> 		    "%s doorbell not enabled\n", __func__);
> @@ -1957,7 +1957,7 @@ qla_edb_eventcreate(scsi_qla_host_t *vha, uint32_t dbtype,
> 		return;
> 	}
> 
> -	if (vha->e_dbell.db_flags != EDB_ACTIVE) {
> +	if (DBELL_INACTIVE(vha)) {
> 		if (fcport)
> 			fcport->edif.auth_state = dbtype;
> 		/* doorbell list not enabled */
> @@ -2052,7 +2052,7 @@ qla_edif_timer(scsi_qla_host_t *vha)
> 	struct qla_hw_data *ha = vha->hw;
> 
> 	if (!vha->vp_idx && N2N_TOPO(ha) && ha->flags.n2n_fw_acc_sec) {
> -		if (vha->e_dbell.db_flags != EDB_ACTIVE &&
> +		if (DBELL_INACTIVE(vha) &&
> 		    ha->edif_post_stop_cnt_down) {
> 			ha->edif_post_stop_cnt_down--;
> 
> @@ -2090,7 +2090,7 @@ edif_doorbell_show(struct device *dev, struct device_attribute *attr,
> 	sz = 256;
> 
> 	/* stop new threads from waiting if we're not init'd */
> -	if (vha->e_dbell.db_flags != EDB_ACTIVE) {
> +	if (DBELL_INACTIVE(vha)) {
> 		ql_dbg(ql_dbg_edif + ql_dbg_verbose, vha, 0x09122,
> 		    "%s error - edif db not enabled\n", __func__);
> 		return 0;
> @@ -2438,7 +2438,7 @@ void qla24xx_auth_els(scsi_qla_host_t *vha, void **pkt, struct rsp_que **rsp)
> 
> 	fcport = qla2x00_find_fcport_by_pid(host, &purex->pur_info.pur_sid);
> 
> -	if (host->e_dbell.db_flags != EDB_ACTIVE ||
> +	if (DBELL_INACTIVE(vha) ||
> 	    (fcport && EDIF_SESSION_DOWN(fcport))) {
> 		ql_dbg(ql_dbg_edif, host, 0x0910c, "%s e_dbell.db_flags =%x %06x\n",
> 		    __func__, host->e_dbell.db_flags,
> @@ -3464,7 +3464,7 @@ int qla_edif_process_els(scsi_qla_host_t *vha, struct bsg_job *bsg_job)
> 
> void qla_edif_sess_down(struct scsi_qla_host *vha, struct fc_port *sess)
> {
> -	if (sess->edif.app_sess_online && vha->e_dbell.db_flags & EDB_ACTIVE) {
> +	if (sess->edif.app_sess_online && DBELL_ACTIVE(vha)) {
> 		ql_dbg(ql_dbg_disc, vha, 0xf09c,
> 			"%s: sess %8phN send port_offline event\n",
> 			__func__, sess->port_name);
> diff --git a/drivers/scsi/qla2xxx/qla_edif.h b/drivers/scsi/qla2xxx/qla_edif.h
> index 2517005fb08c..a965ca8e47ce 100644
> --- a/drivers/scsi/qla2xxx/qla_edif.h
> +++ b/drivers/scsi/qla2xxx/qla_edif.h
> @@ -41,9 +41,12 @@ struct pur_core {
> };
> 
> enum db_flags_t {
> -	EDB_ACTIVE = 0x1,
> +	EDB_ACTIVE = BIT_0,
> };
> 
> +#define DBELL_ACTIVE(_v) (_v->e_dbell.db_flags & EDB_ACTIVE)
> +#define DBELL_INACTIVE(_v) (!(_v->e_dbell.db_flags & EDB_ACTIVE))
> +
> struct edif_dbell {
> 	enum db_flags_t		db_flags;
> 	spinlock_t		db_lock;
> @@ -134,7 +137,7 @@ struct enode {
> 	 !_s->edif.app_sess_online))
> 
> #define EDIF_NEGOTIATION_PENDING(_fcport) \
> -	((_fcport->vha.e_dbell.db_flags & EDB_ACTIVE) && \
> +	(DBELL_ACTIVE(_fcport->vha) && \
> 	 (_fcport->disc_state == DSC_LOGIN_AUTH_PEND))
> 
> #endif	/* __QLA_EDIF_H */
> diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
> index 2bc5593645ec..c0b813fc1ec4 100644
> --- a/drivers/scsi/qla2xxx/qla_init.c
> +++ b/drivers/scsi/qla2xxx/qla_init.c
> @@ -330,7 +330,7 @@ qla2x00_async_login(struct scsi_qla_host *vha, fc_port_t *fcport,
> 		lio->u.logio.flags |= SRB_LOGIN_PRLI_ONLY;
> 	} else {
> 		if (vha->hw->flags.edif_enabled &&
> -		    vha->e_dbell.db_flags & EDB_ACTIVE) {
> +		    DBELL_ACTIVE(vha)) {
> 			lio->u.logio.flags |=
> 				(SRB_LOGIN_FCSP | SRB_LOGIN_SKIP_PRLI);
> 		} else {
> @@ -861,7 +861,7 @@ static void qla24xx_handle_gnl_done_event(scsi_qla_host_t *vha,
> 				break;
> 			case DSC_LS_PLOGI_COMP:
> 				if (vha->hw->flags.edif_enabled &&
> -				    vha->e_dbell.db_flags & EDB_ACTIVE) {
> +				    DBELL_ACTIVE(vha)) {
> 					/* check to see if App support secure or not */
> 					qla24xx_post_gpdb_work(vha, fcport, 0);
> 					break;
> @@ -1451,7 +1451,7 @@ static int	qla_chk_secure_login(scsi_qla_host_t	*vha, fc_port_t *fcport,
> 			qla2x00_post_aen_work(vha, FCH_EVT_PORT_ONLINE,
> 			    fcport->d_id.b24);
> 
> -			if (vha->e_dbell.db_flags ==  EDB_ACTIVE) {
> +			if (DBELL_ACTIVE(vha)) {
> 				ql_dbg(ql_dbg_disc, vha, 0x20ef,
> 				    "%s %d %8phC EDIF: post DB_AUTH: AUTH needed\n",
> 				    __func__, __LINE__, fcport->port_name);
> @@ -1794,7 +1794,7 @@ void qla2x00_handle_rscn(scsi_qla_host_t *vha, struct event_arg *ea)
> 				return;
> 			}
> 
> -			if (vha->hw->flags.edif_enabled && vha->e_dbell.db_flags & EDB_ACTIVE) {
> +			if (vha->hw->flags.edif_enabled && DBELL_ACTIVE(vha)) {
> 				/*
> 				 * On ipsec start by remote port, Target port
> 				 * may use RSCN to trigger initiator to
> @@ -4240,7 +4240,7 @@ qla24xx_update_fw_options(scsi_qla_host_t *vha)
> 		 * fw shal not send PRLI after PLOGI Acc
> 		 */
> 		if (ha->flags.edif_enabled &&
> -		    vha->e_dbell.db_flags & EDB_ACTIVE) {
> +		    DBELL_ACTIVE(vha)) {
> 			ha->fw_options[3] |= BIT_15;
> 			ha->flags.n2n_fw_acc_sec = 1;
> 		} else {
> @@ -5396,8 +5396,7 @@ qla2x00_configure_loop(scsi_qla_host_t *vha)
> 			 * use link up to wake up app to get ready for
> 			 * authentication.
> 			 */
> -			if (ha->flags.edif_enabled &&
> -			    !(vha->e_dbell.db_flags & EDB_ACTIVE))
> +			if (ha->flags.edif_enabled && DBELL_INACTIVE(vha))
> 				qla2x00_post_aen_work(vha, FCH_EVT_LINKUP,
> 						      ha->link_data_rate);
> 
> diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c
> index 9d4ad1d2b00a..ed604f2185bf 100644
> --- a/drivers/scsi/qla2xxx/qla_iocb.c
> +++ b/drivers/scsi/qla2xxx/qla_iocb.c
> @@ -3034,8 +3034,7 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode,
> 	elsio->u.els_plogi.els_cmd = els_opcode;
> 	elsio->u.els_plogi.els_plogi_pyld->opcode = els_opcode;
> 
> -	if (els_opcode == ELS_DCMD_PLOGI && vha->hw->flags.edif_enabled &&
> -	    vha->e_dbell.db_flags & EDB_ACTIVE) {
> +	if (els_opcode == ELS_DCMD_PLOGI && DBELL_ACTIVE(vha)) {
> 		struct fc_els_flogi *p = ptr;
> 
> 		p->fl_csp.sp_features |= cpu_to_be16(FC_SP_FT_SEC);
> diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
> index edc34e69d75b..031233729ff4 100644
> --- a/drivers/scsi/qla2xxx/qla_target.c
> +++ b/drivers/scsi/qla2xxx/qla_target.c
> @@ -4817,7 +4817,7 @@ static int qlt_handle_login(struct scsi_qla_host *vha,
> 	}
> 
> 	if (vha->hw->flags.edif_enabled) {
> -		if (!(vha->e_dbell.db_flags & EDB_ACTIVE)) {
> +		if (DBELL_INACTIVE(vha)) {
> 			ql_dbg(ql_dbg_disc, vha, 0xffff,
> 			       "%s %d Term INOT due to app not started lid=%d, NportID %06X ",
> 			       __func__, __LINE__, loop_id, port_id.b24);
> -- 
> 2.19.0.rc0
> 

Reviewed-by: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx>

--
Himanshu Madhani	 Oracle Linux Engineering





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux