[PATCH v2] staging: rtl8723bs: Use % 4096 instead of & 0xfff

Abraham Samuel Adekunle posted 1 patch 8 months, 1 week ago
drivers/staging/rtl8723bs/core/rtw_xmit.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[PATCH v2] staging: rtl8723bs: Use % 4096 instead of & 0xfff
Posted by Abraham Samuel Adekunle 8 months, 1 week ago
Replace the bitwise AND operator `&` with a modulo
operator `%` and decimal number to make the upper limit visible
and clear what the semantic of it is.

Also add white spaces around binary operators for improved
readabiity and adherence to Linux kernel coding style.

Suggested-by Andy Shevchenko <andy.shevchenko@gmail.com>

Signed-off-by: Abraham Samuel Adekunle <abrahamadekunle50@gmail.com>
---
Changes in v1:
	- Added more patch recipients.

 drivers/staging/rtl8723bs/core/rtw_xmit.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rtl8723bs/core/rtw_xmit.c
index 297c93d65315..630669193be4 100644
--- a/drivers/staging/rtl8723bs/core/rtw_xmit.c
+++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c
@@ -943,7 +943,7 @@ s32 rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr, struct pkt_attrib *pattr
 
 			if (psta) {
 				psta->sta_xmitpriv.txseq_tid[pattrib->priority]++;
-				psta->sta_xmitpriv.txseq_tid[pattrib->priority] &= 0xFFF;
+				psta->sta_xmitpriv.txseq_tid[pattrib->priority] %= 4096;
 				pattrib->seqnum = psta->sta_xmitpriv.txseq_tid[pattrib->priority];
 
 				SetSeqNum(hdr, pattrib->seqnum);
@@ -963,11 +963,11 @@ s32 rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr, struct pkt_attrib *pattr
 					if (SN_LESS(pattrib->seqnum, tx_seq)) {
 						pattrib->ampdu_en = false;/* AGG BK */
 					} else if (SN_EQUAL(pattrib->seqnum, tx_seq)) {
-						psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (tx_seq+1)&0xfff;
+						psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (tx_seq + 1) % 4096;
 
 						pattrib->ampdu_en = true;/* AGG EN */
 					} else {
-						psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (pattrib->seqnum+1)&0xfff;
+						psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (pattrib->seqnum + 1) % 4096;
 						pattrib->ampdu_en = true;/* AGG EN */
 					}
 				}
-- 
2.34.1
Re: [PATCH v2] staging: rtl8723bs: Use % 4096 instead of & 0xfff
Posted by Greg Kroah-Hartman 8 months, 1 week ago
On Sat, Apr 05, 2025 at 12:09:59AM +0000, Abraham Samuel Adekunle wrote:
> Replace the bitwise AND operator `&` with a modulo
> operator `%` and decimal number to make the upper limit visible
> and clear what the semantic of it is.

Eeek, no.  We all "know" what & means (it's a bit mask to handle the
issues involved), and we all do NOT know that % will do the same thing
at all.

So this just made things more difficult to maintain over time.

What tool suggested this type of change to be made to this driver and
these lines?

thanks,

greg k-h
Re: [PATCH v2] staging: rtl8723bs: Use % 4096 instead of & 0xfff
Posted by Andy Shevchenko 8 months, 1 week ago
On Sat, Apr 5, 2025 at 11:23 AM Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
> On Sat, Apr 05, 2025 at 12:09:59AM +0000, Abraham Samuel Adekunle wrote:
> > Replace the bitwise AND operator `&` with a modulo
> > operator `%` and decimal number to make the upper limit visible
> > and clear what the semantic of it is.
>
> Eeek, no.  We all "know" what & means (it's a bit mask to handle the
> issues involved), and we all do NOT know that % will do the same thing
> at all.

And that is exactly the purpose of the change. The % 4096 makes it
clearer on what's going on, i.e. we are doing indexes that are wrapped
around the given number.

> So this just made things more difficult to maintain over time.
>
> What tool suggested this type of change to be made to this driver and
> these lines?

It's not a tool, it was me. I read the code and suggested that change.

-- 
With Best Regards,
Andy Shevchenko
Re: [PATCH v2] staging: rtl8723bs: Use % 4096 instead of & 0xfff
Posted by Julia Lawall 8 months, 1 week ago

On Sat, 5 Apr 2025, Andy Shevchenko wrote:

> On Sat, Apr 5, 2025 at 11:23 AM Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> > On Sat, Apr 05, 2025 at 12:09:59AM +0000, Abraham Samuel Adekunle wrote:
> > > Replace the bitwise AND operator `&` with a modulo
> > > operator `%` and decimal number to make the upper limit visible
> > > and clear what the semantic of it is.
> >
> > Eeek, no.  We all "know" what & means (it's a bit mask to handle the
> > issues involved), and we all do NOT know that % will do the same thing
> > at all.
>
> And that is exactly the purpose of the change. The % 4096 makes it
> clearer on what's going on, i.e. we are doing indexes that are wrapped
> around the given number.

Ah, OK.  Samuel, indeed, the log message was going in that direction.  But
probably it should be more clear.  Why is 4096 the upper limit in this
case, for example.

Thanks for the feedback Andy,

julia

>
> > So this just made things more difficult to maintain over time.
> >
> > What tool suggested this type of change to be made to this driver and
> > these lines?
>
> It's not a tool, it was me. I read the code and suggested that change.
>
> --
> With Best Regards,
> Andy Shevchenko
>
Re: [PATCH v2] staging: rtl8723bs: Use % 4096 instead of & 0xfff
Posted by Samuel Abraham 8 months, 1 week ago
On Sat, Apr 5, 2025 at 1:30 PM Julia Lawall <julia.lawall@inria.fr> wrote:
>
>
>
> On Sat, 5 Apr 2025, Andy Shevchenko wrote:
>
> > On Sat, Apr 5, 2025 at 11:23 AM Greg Kroah-Hartman
> > <gregkh@linuxfoundation.org> wrote:
> > > On Sat, Apr 05, 2025 at 12:09:59AM +0000, Abraham Samuel Adekunle wrote:
> > > > Replace the bitwise AND operator `&` with a modulo
> > > > operator `%` and decimal number to make the upper limit visible
> > > > and clear what the semantic of it is.
> > >
> > > Eeek, no.  We all "know" what & means (it's a bit mask to handle the
> > > issues involved), and we all do NOT know that % will do the same thing
> > > at all.
> >
> > And that is exactly the purpose of the change. The % 4096 makes it
> > clearer on what's going on, i.e. we are doing indexes that are wrapped
> > around the given number.
>
> Ah, OK.  Samuel, indeed, the log message was going in that direction.  But
> probably it should be more clear.  Why is 4096 the upper limit in this
> case, for example.

Okay thank you Julia.
So I can add something like this to the commit message?

"Replace the bitwise AND operator `&` with a modulo
operator `%` and decimal number to make the upper limit visible
and clear that we are doing indexes that are wrapped around the given number"?

You also said I should add a patch for the white space around binary operators.
I did it together because the changes were on the same line.
Should I still add a second patch for that change?
Thanks

Adekunle.
Re: [PATCH v2] staging: rtl8723bs: Use % 4096 instead of & 0xfff
Posted by Julia Lawall 8 months, 1 week ago

On Sat, 5 Apr 2025, Samuel Abraham wrote:

> On Sat, Apr 5, 2025 at 1:30 PM Julia Lawall <julia.lawall@inria.fr> wrote:
> >
> >
> >
> > On Sat, 5 Apr 2025, Andy Shevchenko wrote:
> >
> > > On Sat, Apr 5, 2025 at 11:23 AM Greg Kroah-Hartman
> > > <gregkh@linuxfoundation.org> wrote:
> > > > On Sat, Apr 05, 2025 at 12:09:59AM +0000, Abraham Samuel Adekunle wrote:
> > > > > Replace the bitwise AND operator `&` with a modulo
> > > > > operator `%` and decimal number to make the upper limit visible
> > > > > and clear what the semantic of it is.
> > > >
> > > > Eeek, no.  We all "know" what & means (it's a bit mask to handle the
> > > > issues involved), and we all do NOT know that % will do the same thing
> > > > at all.
> > >
> > > And that is exactly the purpose of the change. The % 4096 makes it
> > > clearer on what's going on, i.e. we are doing indexes that are wrapped
> > > around the given number.
> >
> > Ah, OK.  Samuel, indeed, the log message was going in that direction.  But
> > probably it should be more clear.  Why is 4096 the upper limit in this
> > case, for example.
>
> Okay thank you Julia.
> So I can add something like this to the commit message?
>
> "Replace the bitwise AND operator `&` with a modulo
> operator `%` and decimal number to make the upper limit visible
> and clear that we are doing indexes that are wrapped around the given number"?

No.  First say what the upper limit is.  Then explain that a module
operation is thus more appropriate than a bit mask.  People need to
understand the reasoning behind the change.  By saying "make the upper
limit visible" you are asking them to trust your reasoning, or more likely
requiring them to reconstruct it.  You need to make explicit all the
information that is needed to understand the change, so people will know
what to look for to verify it.

> You also said I should add a patch for the white space around binary operators.
> I did it together because the changes were on the same line.
> Should I still add a second patch for that change?

It's quite a different issue.  So a second patch seems reasonable.  YOu
can do it before yours.  Then if someone still doesn't unlike the modulo
patch, the spacing patch can still be accepted.

julia
Re: [PATCH v2] staging: rtl8723bs: Use % 4096 instead of & 0xfff
Posted by Samuel Abraham 8 months, 1 week ago
On Sun, Apr 6, 2025 at 1:59 PM Julia Lawall <julia.lawall@inria.fr> wrote:
>
>
>
> On Sat, 5 Apr 2025, Samuel Abraham wrote:
>
> > On Sat, Apr 5, 2025 at 1:30 PM Julia Lawall <julia.lawall@inria.fr> wrote:
> > >
> > >
> > >
> > > On Sat, 5 Apr 2025, Andy Shevchenko wrote:
> > >
> > > > On Sat, Apr 5, 2025 at 11:23 AM Greg Kroah-Hartman
> > > > <gregkh@linuxfoundation.org> wrote:
> > > > > On Sat, Apr 05, 2025 at 12:09:59AM +0000, Abraham Samuel Adekunle wrote:
> > > > > > Replace the bitwise AND operator `&` with a modulo
> > > > > > operator `%` and decimal number to make the upper limit visible
> > > > > > and clear what the semantic of it is.
> > > > >
> > > > > Eeek, no.  We all "know" what & means (it's a bit mask to handle the
> > > > > issues involved), and we all do NOT know that % will do the same thing
> > > > > at all.
> > > >
> > > > And that is exactly the purpose of the change. The % 4096 makes it
> > > > clearer on what's going on, i.e. we are doing indexes that are wrapped
> > > > around the given number.
> > >
> > > Ah, OK.  Samuel, indeed, the log message was going in that direction.  But
> > > probably it should be more clear.  Why is 4096 the upper limit in this
> > > case, for example.
> >
> > Okay thank you Julia.
> > So I can add something like this to the commit message?
> >
> > "Replace the bitwise AND operator `&` with a modulo
> > operator `%` and decimal number to make the upper limit visible
> > and clear that we are doing indexes that are wrapped around the given number"?
>
> No.  First say what the upper limit is.  Then explain that a module
> operation is thus more appropriate than a bit mask.  People need to
> understand the reasoning behind the change.  By saying "make the upper
> limit visible" you are asking them to trust your reasoning, or more likely
> requiring them to reconstruct it.  You need to make explicit all the
> information that is needed to understand the change, so people will know
> what to look for to verify it.

Okay thank you very much I get now.
>
> > You also said I should add a patch for the white space around binary operators.
> > I did it together because the changes were on the same line.
> > Should I still add a second patch for that change?
>
> It's quite a different issue.  So, a second patch seems reasonable.  You
> can do it before yours.  Then, if someone still doesn't like the modulo
> patch, the spacing patch can still be accepted.

Okay then.
It makes a lot of sense.
Thank you.

Adekunle
Re: [PATCH v2] staging: rtl8723bs: Use % 4096 instead of & 0xfff
Posted by Julia Lawall 8 months, 1 week ago

On Sat, 5 Apr 2025, Abraham Samuel Adekunle wrote:

> Replace the bitwise AND operator `&` with a modulo
> operator `%` and decimal number to make the upper limit visible
> and clear what the semantic of it is.

I think that the & and the Fs are more understandable than using the % and
4096.  I would say no for this idea.

> Also add white spaces around binary operators for improved
> readabiity and adherence to Linux kernel coding style.

The "Also" is a hint that you are doing two things.  So they can be in two
different patches.

julia

>
> Suggested-by Andy Shevchenko <andy.shevchenko@gmail.com>
>
> Signed-off-by: Abraham Samuel Adekunle <abrahamadekunle50@gmail.com>
> ---
> Changes in v1:
> 	- Added more patch recipients.
>
>  drivers/staging/rtl8723bs/core/rtw_xmit.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rtl8723bs/core/rtw_xmit.c
> index 297c93d65315..630669193be4 100644
> --- a/drivers/staging/rtl8723bs/core/rtw_xmit.c
> +++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c
> @@ -943,7 +943,7 @@ s32 rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr, struct pkt_attrib *pattr
>
>  			if (psta) {
>  				psta->sta_xmitpriv.txseq_tid[pattrib->priority]++;
> -				psta->sta_xmitpriv.txseq_tid[pattrib->priority] &= 0xFFF;
> +				psta->sta_xmitpriv.txseq_tid[pattrib->priority] %= 4096;
>  				pattrib->seqnum = psta->sta_xmitpriv.txseq_tid[pattrib->priority];
>
>  				SetSeqNum(hdr, pattrib->seqnum);
> @@ -963,11 +963,11 @@ s32 rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr, struct pkt_attrib *pattr
>  					if (SN_LESS(pattrib->seqnum, tx_seq)) {
>  						pattrib->ampdu_en = false;/* AGG BK */
>  					} else if (SN_EQUAL(pattrib->seqnum, tx_seq)) {
> -						psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (tx_seq+1)&0xfff;
> +						psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (tx_seq + 1) % 4096;
>
>  						pattrib->ampdu_en = true;/* AGG EN */
>  					} else {
> -						psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (pattrib->seqnum+1)&0xfff;
> +						psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (pattrib->seqnum + 1) % 4096;
>  						pattrib->ampdu_en = true;/* AGG EN */
>  					}
>  				}
> --
> 2.34.1
>
>