From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hannes Reinecke Subject: Re: [PATCH 3/5] be2iscsi: Fix updating the boot enteries in sysfs Date: Wed, 27 Aug 2014 15:52:51 +0200 Message-ID: <53FDE2B3.6010208@suse.de> References: <1407474003-26220-1-git-send-email-jkallickal@emulex.com> <1407474003-26220-3-git-send-email-jkallickal@emulex.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: Received: from cantor2.suse.de ([195.135.220.15]:36156 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933404AbaH0Nwx (ORCPT ); Wed, 27 Aug 2014 09:52:53 -0400 In-Reply-To: <1407474003-26220-3-git-send-email-jkallickal@emulex.com> Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: Jay Kallickal , jbottomley@parallels.com, linux-scsi@vger.kernel.org, michaelc@cs.wisc.edu Cc: Jayamohan Kallickal , Minh Tran , John Soni Jose On 08/08/2014 07:00 AM, Jay Kallickal wrote: > From: Jayamohan Kallickal > > During port async event driver should check if there is any boot ta= rget > configured on the adapter. Update sysfs enteries with the boot targ= et > parameters. > > Signed-off-by: Minh Tran > Signed-off-by: John Soni Jose > Signed-off-by: Jayamohan Kallickal > --- > drivers/scsi/be2iscsi/be_cmds.c | 38 ++++++++++++++++++++++++++++++= ++++++-- > drivers/scsi/be2iscsi/be_cmds.h | 8 ++++++++ > drivers/scsi/be2iscsi/be_main.c | 17 +++++++++++++++++ > drivers/scsi/be2iscsi/be_main.h | 1 + > 4 files changed, 62 insertions(+), 2 deletions(-) > > diff --git a/drivers/scsi/be2iscsi/be_cmds.c b/drivers/scsi/be2iscsi/= be_cmds.c > index ea4477f..80d97f3 100644 > --- a/drivers/scsi/be2iscsi/be_cmds.c > +++ b/drivers/scsi/be2iscsi/be_cmds.c > @@ -275,6 +275,19 @@ bool is_link_state_evt(u32 trailer) > ASYNC_EVENT_CODE_LINK_STATE); > } > > +static bool is_iscsi_evt(u32 trailer) > +{ > + return ((trailer >> ASYNC_TRAILER_EVENT_CODE_SHIFT) & > + ASYNC_TRAILER_EVENT_CODE_MASK) =3D=3D > + ASYNC_EVENT_CODE_ISCSI; > +} > + > +static int iscsi_evt_type(u32 trailer) > +{ > + return (trailer >> ASYNC_TRAILER_EVENT_TYPE_SHIFT) & > + ASYNC_TRAILER_EVENT_TYPE_MASK; > +} > + > static inline bool be_mcc_compl_is_new(struct be_mcc_compl *compl) > { > if (compl->flags !=3D 0) { > @@ -438,7 +451,7 @@ void beiscsi_async_link_state_process(struct beis= csi_hba *phba, > } else if ((evt->port_link_status & ASYNC_EVENT_LINK_UP) || > ((evt->port_link_status & ASYNC_EVENT_LOGICAL) && > (evt->port_fault =3D=3D BEISCSI_PHY_LINK_FAULT_NONE))) { > - phba->state =3D BE_ADAPTER_LINK_UP; > + phba->state =3D BE_ADAPTER_LINK_UP | BE_ADAPTER_CHECK_BOOT; > > beiscsi_log(phba, KERN_ERR, > BEISCSI_LOG_CONFIG | BEISCSI_LOG_INIT, > @@ -461,7 +474,28 @@ int beiscsi_process_mcc(struct beiscsi_hba *phba= ) > /* Interpret compl as a async link evt */ > beiscsi_async_link_state_process(phba, > (struct be_async_event_link_state *) compl); > - else > + else if (is_iscsi_evt(compl->flags)) { > + switch (iscsi_evt_type(compl->flags)) { > + case ASYNC_EVENT_NEW_ISCSI_TGT_DISC: > + case ASYNC_EVENT_NEW_ISCSI_CONN: > + case ASYNC_EVENT_NEW_TCP_CONN: > + phba->state |=3D BE_ADAPTER_CHECK_BOOT; > + beiscsi_log(phba, KERN_ERR, > + BEISCSI_LOG_CONFIG | > + BEISCSI_LOG_MBOX, > + "BC_%d : Async iscsi Event," > + " flags handled =3D 0x%08x\n", > + compl->flags); > + break; > + default: > + beiscsi_log(phba, KERN_ERR, > + BEISCSI_LOG_CONFIG | > + BEISCSI_LOG_MBOX, > + "BC_%d : Unsupported Async" > + " Event, flags =3D 0x%08x\n", > + compl->flags); > + } > + } else > beiscsi_log(phba, KERN_ERR, > BEISCSI_LOG_CONFIG | > BEISCSI_LOG_MBOX, > diff --git a/drivers/scsi/be2iscsi/be_cmds.h b/drivers/scsi/be2iscsi/= be_cmds.h > index ccda0b6..9889743 100644 > --- a/drivers/scsi/be2iscsi/be_cmds.h > +++ b/drivers/scsi/be2iscsi/be_cmds.h > @@ -118,6 +118,14 @@ struct be_mcc_compl { > #define ASYNC_TRAILER_EVENT_CODE_SHIFT 8 /* bits 8 - 15 */ > #define ASYNC_TRAILER_EVENT_CODE_MASK 0xFF > #define ASYNC_EVENT_CODE_LINK_STATE 0x1 > +#define ASYNC_EVENT_CODE_ISCSI 0x4 > + > +#define ASYNC_TRAILER_EVENT_TYPE_SHIFT 16 /* bits 16 - 23 */ > +#define ASYNC_TRAILER_EVENT_TYPE_MASK 0xF > +#define ASYNC_EVENT_NEW_ISCSI_TGT_DISC 0x4 > +#define ASYNC_EVENT_NEW_ISCSI_CONN 0x5 > +#define ASYNC_EVENT_NEW_TCP_CONN 0x7 > + > struct be_async_event_trailer { > u32 code; > }; > diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/= be_main.c > index d6465ed..8f9f625 100644 > --- a/drivers/scsi/be2iscsi/be_main.c > +++ b/drivers/scsi/be2iscsi/be_main.c > @@ -4379,6 +4379,10 @@ static int beiscsi_setup_boot_info(struct beis= csi_hba *phba) > { > struct iscsi_boot_kobj *boot_kobj; > > + /* it has been created previously */ > + if (phba->boot_kset) > + return 0; > + > /* get boot info using mgmt cmd */ > if (beiscsi_get_boot_info(phba)) > /* Try to see if we can carry on without this */ > @@ -5337,6 +5341,14 @@ static void be_eqd_update(struct beiscsi_hba *= phba) > } > } > > +static void be_check_boot_session(struct beiscsi_hba *phba) > +{ > + if (beiscsi_setup_boot_info(phba)) > + beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT, > + "BM_%d : Could not set up " > + "iSCSI boot info on async event.\n"); > +} > + > /* > * beiscsi_hw_health_check()- Check adapter health > * @work: work item to check HW health > @@ -5352,6 +5364,11 @@ beiscsi_hw_health_check(struct work_struct *wo= rk) > > be_eqd_update(phba); > > + if (phba->state & BE_ADAPTER_CHECK_BOOT) { > + phba->state &=3D ~BE_ADAPTER_CHECK_BOOT; > + be_check_boot_session(phba); > + } > + > beiscsi_ue_detect(phba); > > schedule_delayed_work(&phba->beiscsi_hw_check_task, > diff --git a/drivers/scsi/be2iscsi/be_main.h b/drivers/scsi/be2iscsi/= be_main.h > index 0ca9d2d..1e3428a 100644 > --- a/drivers/scsi/be2iscsi/be_main.h > +++ b/drivers/scsi/be2iscsi/be_main.h > @@ -104,6 +104,7 @@ > #define BE_ADAPTER_LINK_DOWN 0x002 > #define BE_ADAPTER_PCI_ERR 0x004 > #define BE_ADAPTER_STATE_SHUTDOWN 0x008 > +#define BE_ADAPTER_CHECK_BOOT 0x010 > > > #define BEISCSI_CLEAN_UNLOAD 0x01 > Reviewed-by: Hannes Reinecke Cheers, Hannes --=20 Dr. Hannes Reinecke zSeries & Storage hare@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg GF: J. Hawn, J. Guild, F. Imend=F6rffer, HRB 16746 (AG N=FCrnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" i= n the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html