Message ID | 20170616055651.9674-11-jsmart2021@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On 06/16/2017 07:56 AM, James Smart wrote: > Beacon OFF from switch is rejected by driver. > > Driver fails Beacon OFF if frequency is set to 0. As per fc-ls > spec, status, capability, frequency and duration fields are only > applicable for Beacon ON. > > Remove frequency and type checks. Reject Beacon ON if duration > is non zero. > > Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> > Signed-off-by: James Smart <james.smart@broadcom.com> > --- > drivers/scsi/lpfc/lpfc_els.c | 22 ++++------------------ > 1 file changed, 4 insertions(+), 18 deletions(-) > > diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c > index 54de984d695f..6d1d6f691df4 100644 > --- a/drivers/scsi/lpfc/lpfc_els.c > +++ b/drivers/scsi/lpfc/lpfc_els.c > @@ -5703,27 +5703,13 @@ lpfc_els_rcv_lcb(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, > rjt_err = LSRJT_CMD_UNSUPPORTED; > goto rjt; > } > - if (beacon->lcb_frequency == 0) { > + if (beacon->lcb_sub_command != LPFC_LCB_ON && > + beacon->lcb_sub_command != LPFC_LCB_OFF) { > rjt_err = LSRJT_CMD_UNSUPPORTED; > goto rjt; > } > - if ((beacon->lcb_type != LPFC_LCB_GREEN) && > - (beacon->lcb_type != LPFC_LCB_AMBER)) { > - rjt_err = LSRJT_CMD_UNSUPPORTED; > - goto rjt; > - } > - if ((beacon->lcb_sub_command != LPFC_LCB_ON) && > - (beacon->lcb_sub_command != LPFC_LCB_OFF)) { > - rjt_err = LSRJT_CMD_UNSUPPORTED; > - goto rjt; > - } > - if ((beacon->lcb_sub_command == LPFC_LCB_ON) && > - (beacon->lcb_type != LPFC_LCB_GREEN) && > - (beacon->lcb_type != LPFC_LCB_AMBER)) { > - rjt_err = LSRJT_CMD_UNSUPPORTED; > - goto rjt; > - } > - if (be16_to_cpu(beacon->lcb_duration) != 0) { > + if (beacon->lcb_sub_command == LPFC_LCB_ON && > + be16_to_cpu(beacon->lcb_duration) != 0) { > rjt_err = LSRJT_CMD_UNSUPPORTED; > goto rjt; > } > Reviewed-by: Hannes Reinecke <hare@suse.com> Cheers, Hannes
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index 54de984d695f..6d1d6f691df4 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c @@ -5703,27 +5703,13 @@ lpfc_els_rcv_lcb(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, rjt_err = LSRJT_CMD_UNSUPPORTED; goto rjt; } - if (beacon->lcb_frequency == 0) { + if (beacon->lcb_sub_command != LPFC_LCB_ON && + beacon->lcb_sub_command != LPFC_LCB_OFF) { rjt_err = LSRJT_CMD_UNSUPPORTED; goto rjt; } - if ((beacon->lcb_type != LPFC_LCB_GREEN) && - (beacon->lcb_type != LPFC_LCB_AMBER)) { - rjt_err = LSRJT_CMD_UNSUPPORTED; - goto rjt; - } - if ((beacon->lcb_sub_command != LPFC_LCB_ON) && - (beacon->lcb_sub_command != LPFC_LCB_OFF)) { - rjt_err = LSRJT_CMD_UNSUPPORTED; - goto rjt; - } - if ((beacon->lcb_sub_command == LPFC_LCB_ON) && - (beacon->lcb_type != LPFC_LCB_GREEN) && - (beacon->lcb_type != LPFC_LCB_AMBER)) { - rjt_err = LSRJT_CMD_UNSUPPORTED; - goto rjt; - } - if (be16_to_cpu(beacon->lcb_duration) != 0) { + if (beacon->lcb_sub_command == LPFC_LCB_ON && + be16_to_cpu(beacon->lcb_duration) != 0) { rjt_err = LSRJT_CMD_UNSUPPORTED; goto rjt; }