lkml.org 
[lkml]   [2021]   [Feb]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRE: RE: RE: [PATCH v22 2/4] scsi: ufs: L2P map management for HPB read
From
Date
> +/*
> > + * This function will parse recommended active subregion information in
> > sense
> > + * data field of response UPIU with SAM_STAT_GOOD state.
> > + */
> > +void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
> > +{
> > +       struct ufshpb_lu *hpb;
> > +       struct scsi_device *sdev;
> > +       struct utp_hpb_rsp *rsp_field = &lrbp->ucd_rsp_ptr->hr;
> > +       int data_seg_len;
> > +       bool found = false;
> > +
> > +       __shost_for_each_device(sdev, hba->host) {
> > +               hpb = ufshpb_get_hpb_data(sdev);
> > +
> > +               if (!hpb)
> > +                       continue;
> > +
> > +               if (rsp_field->lun == hpb->lun) {
> > +                       found = true;
> > +                       break;
> This piece of code looks awkward, although it is probably working.
> Why not just having a reference to the hpb luns, e.g. something like:
> struct ufshpb_lu *hpb_luns[8] in struct ufs_hba.
> Less elegant - but much more effective than iterating the scsi host on every completion interrupt.

How about checking (cmd->lun == rsp->lun) before the iteration?
Major case will be have same lun. And, it is hard to add struct ufshpb_lu *hpb_luns[128]
in struct ufs_hba, because LUN can be upto 127.

Thanks,
Daejun

\
 
 \ /
  Last update: 2021-02-23 09:33    [W:0.317 / U:0.200 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site