Thread (33 messages) 33 messages, 3 authors, 2021-02-25

RE: RE: RE: [PATCH v22 2/4] scsi: ufs: L2P map management for HPB read

From: Avri Altman <Avri.Altman@wdc.com>
Date: 2021-02-23 08:48:09
Also in: lkml

quoted
+/*
quoted
+ * 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.
Oh - yes, 8 is for write booster.
OK.  Whatever you think.

However, I think there can be up to 32 regular luns,
meaning UFS_UPIU_MAX_UNIT_NUM_ID need to be fixed as well.

Thanks,
Avri
Thanks,
Daejun
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help