Skip to content

Commit

Permalink
scsi: qla2xxx: edif: Fix inconsistent check of db_flags
Browse files Browse the repository at this point in the history
db_flags field is a bit field. Replace value check with bit flag check.

Link: https://lore.kernel.org/r/20211026115412.27691-12-njavali@marvell.com
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
  • Loading branch information
Quinn Tran authored and Martin K. Petersen committed Oct 27, 2021
1 parent 0f6d600 commit 36f468b
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 25 deletions.
26 changes: 13 additions & 13 deletions drivers/scsi/qla2xxx/qla_edif.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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__);
Expand Down Expand Up @@ -1272,7 +1272,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);
Expand Down Expand Up @@ -1775,7 +1775,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");
Expand Down Expand Up @@ -1818,7 +1818,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__);
Expand Down Expand Up @@ -1870,7 +1870,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__);
Expand Down Expand Up @@ -1921,7 +1921,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__);
Expand Down Expand Up @@ -1952,7 +1952,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 */
Expand Down Expand Up @@ -2047,7 +2047,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--;

Expand Down Expand Up @@ -2085,7 +2085,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;
Expand Down Expand Up @@ -2433,7 +2433,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,
Expand Down Expand Up @@ -3459,7 +3459,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);
Expand Down
7 changes: 5 additions & 2 deletions drivers/scsi/qla2xxx/qla_edif.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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 */
13 changes: 6 additions & 7 deletions drivers/scsi/qla2xxx/qla_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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);

Expand Down
3 changes: 1 addition & 2 deletions drivers/scsi/qla2xxx/qla_iocb.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion drivers/scsi/qla2xxx/qla_target.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 36f468b

Please sign in to comment.