Messages in this thread | | | From | Avri Altman <> | Subject | RE: [PATCH v24 4/4] scsi: ufs: Add HPB 2.0 support | Date | Wed, 24 Feb 2021 11:52:52 +0000 |
| |
> > > > +static int ufshpb_issue_umap_all_req(struct ufshpb_lu *hpb) > Maybe ufshpb_issue_umap_all_req is just a wrapper for > ufshpb_issue_umap_req? > e.g it calls ufshpb_issue_umap_req(hpb, int read_buferr_id = 0x3) ? > Then on host mode inactivation: > static int ufshpb_issue_umap_single_req(struct ufshpb_lu *hpb) > { > return ufshpb_issue_umap_req(hpb, 0x1); > } Better yet, ufshpb_execute_umap_req can get *rgn as an extra argument. ufshpb_issue_umap_all_req will call it with NULL, while ufshpb_issue_umap_single_req will call it with the rgn to inactivate.
Then, ufshpb_set_unmap_cmd takes the form: static void ufshpb_set_unmap_cmd(unsigned char *cdb, struct ufshpb_region *rgn) { cdb[0] = UFSHPB_WRITE_BUFFER;
if (rgn) { cdb[1] = UFSHPB_WRITE_BUFFER_INACT_SINGLE_ID; put_unaligned_be16(rgn->rgn_idx, &cdb[2]); } else { cdb[1] = UFSHPB_WRITE_BUFFER_INACT_ALL_ID; }
cdb[9] = 0x00; }
Does it make sense? Thanks, Avri
| |