On 3/1/2026 7:26 PM, Jamin Lin wrote: > The GETMRL handling logic extracted MSB/LSB bytes from > s->cfg.buf_size using a mask-and-shift expression: > > (buf_size & (0xff00 >> (offset * 8))) >> > (8 - (offset * 8)) > > While functionally correct, the expression is difficult to read > and obscures the intent, which is simply to return a 16-bit value > in MSB-first order. > > Replace the mask/shift formula with explicit MSB/LSB extraction: > > offset == 0 -> buf_size >> 8 > offset == 1 -> buf_size & 0xff > > This makes the code clearer and easier to review without altering > behavior or data ordering. > > No functional change. > > Signed-off-by: Jamin Lin <[email protected]> > --- > hw/i3c/mock-i3c-target.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/hw/i3c/mock-i3c-target.c b/hw/i3c/mock-i3c-target.c > index 5c913ee49b..845c173427 100644 > --- a/hw/i3c/mock-i3c-target.c > +++ b/hw/i3c/mock-i3c-target.c > @@ -145,9 +145,12 @@ static int mock_i3c_target_handle_ccc_read(I3CTarget > *i3c, uint8_t *data, > if (s->ccc_byte_offset >= 2) { > break; > } > - data[s->ccc_byte_offset] = (s->cfg.buf_size & > - (0xff00 >> (s->ccc_byte_offset * > 8))) >> > - (8 - (s->ccc_byte_offset * 8)); > + if (s->ccc_byte_offset == 0) { > + data[s->ccc_byte_offset] = (uint8_t)(s->cfg.buf_size >> 8); > + } else { > + data[s->ccc_byte_offset] = (uint8_t)s->cfg.buf_size; > + } > + > s->ccc_byte_offset++; > *num_read = num_to_read; > }
Looks way more readable Reviewed-by: Jithu Joseph <[email protected]> Thanks Jithu
