* [PATCH net]
@ 2025-01-08 8:13 Sudheer Kumar Doredla
2025-01-08 10:21 ` Simon Horman
0 siblings, 1 reply; 2+ messages in thread
From: Sudheer Kumar Doredla @ 2025-01-08 8:13 UTC (permalink / raw)
To: s-vadapalli, rogerq, andrew+netdev, davem, edumazet, kuba, pabeni,
horms, gnault, linux-omap, netdev, linux-kernel
Cc: s-doredla, t-patil, j-keerthy
cpsw_ale_get_field was returning incorrect data when requesting higher
word fields. Additionally, cpsw_ale_set_field was writing incorrect
data into the ALE entry while updating.
For example, while reading word2, word3 fields (62 to 64 bits), the word3
data was shifted to an incorrect position after reading. The same issue
occurred when setting an ALE entry.
This patch fixes the shifting of the word3 data by aligning it with the
required fileds, ensuring the correct value is returned from
cpsw_ale_get_field, even for higher words.
It also ensures the correct vlaue is written into ALE entry using
cpsw_ale_set_field.
Signed-off-by: Sudheer Kumar Doredla <s-doredla@ti.com>
---
drivers/net/ethernet/ti/cpsw_ale.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ethernet/ti/cpsw_ale.c b/drivers/net/ethernet/ti/cpsw_ale.c
index 64bf22cd860c..9eccc7064c2b 100644
--- a/drivers/net/ethernet/ti/cpsw_ale.c
+++ b/drivers/net/ethernet/ti/cpsw_ale.c
@@ -106,15 +106,15 @@ struct cpsw_ale_dev_id {
static inline int cpsw_ale_get_field(u32 *ale_entry, u32 start, u32 bits)
{
- int idx, idx2;
+ int idx, idx2, index;
u32 hi_val = 0;
idx = start / 32;
idx2 = (start + bits - 1) / 32;
/* Check if bits to be fetched exceed a word */
if (idx != idx2) {
- idx2 = 2 - idx2; /* flip */
- hi_val = ale_entry[idx2] << ((idx2 * 32) - start);
+ index = 2 - idx2; /* flip */
+ hi_val = ale_entry[index] << ((idx2 * 32) - start);
}
start -= idx * 32;
idx = 2 - idx; /* flip */
@@ -124,16 +124,16 @@ static inline int cpsw_ale_get_field(u32 *ale_entry, u32 start, u32 bits)
static inline void cpsw_ale_set_field(u32 *ale_entry, u32 start, u32 bits,
u32 value)
{
- int idx, idx2;
+ int idx, idx2, index;
value &= BITMASK(bits);
idx = start / 32;
idx2 = (start + bits - 1) / 32;
/* Check if bits to be set exceed a word */
if (idx != idx2) {
- idx2 = 2 - idx2; /* flip */
- ale_entry[idx2] &= ~(BITMASK(bits + start - (idx2 * 32)));
- ale_entry[idx2] |= (value >> ((idx2 * 32) - start));
+ index = 2 - idx2; /* flip */
+ ale_entry[index] &= ~(BITMASK(bits + start - (idx2 * 32)));
+ ale_entry[index] |= (value >> ((idx2 * 32) - start));
}
start -= idx * 32;
idx = 2 - idx; /* flip */
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH net]
2025-01-08 8:13 [PATCH net] Sudheer Kumar Doredla
@ 2025-01-08 10:21 ` Simon Horman
0 siblings, 0 replies; 2+ messages in thread
From: Simon Horman @ 2025-01-08 10:21 UTC (permalink / raw)
To: Sudheer Kumar Doredla
Cc: s-vadapalli, rogerq, andrew+netdev, davem, edumazet, kuba, pabeni,
gnault, linux-omap, netdev, linux-kernel, t-patil, j-keerthy
On Wed, Jan 08, 2025 at 01:43:03PM +0530, Sudheer Kumar Doredla wrote:
> cpsw_ale_get_field was returning incorrect data when requesting higher
> word fields. Additionally, cpsw_ale_set_field was writing incorrect
> data into the ALE entry while updating.
>
> For example, while reading word2, word3 fields (62 to 64 bits), the word3
> data was shifted to an incorrect position after reading. The same issue
> occurred when setting an ALE entry.
>
> This patch fixes the shifting of the word3 data by aligning it with the
> required fileds, ensuring the correct value is returned from
> cpsw_ale_get_field, even for higher words.
> It also ensures the correct vlaue is written into ALE entry using
> cpsw_ale_set_field.
Hi Sudheer,
It would be interesting to include some information on how this problem
manifests in practice.
And, as a fix for net this should have a fixes tag.
(Immediately above the other tags, no blank line in between.)
Perhaps this one is appropriate?
Fixes: b685f1a58956 ("net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field()/cpsw_ale_set_field()")
> Signed-off-by: Sudheer Kumar Doredla <s-doredla@ti.com>
And, lastly, the subject for this patch seems to be missing.
Please add one:
Subject: [PATCH v2 net] net: ethernet: ti: cpsw_ale: ...
The code changes themselves look good to me.
So with the above addressed, feel free to include.
Reviewed-by: Simon Horman <horms@kernel.org>
...
--
pw-bot: changes-requested
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-01-08 10:21 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-08 8:13 [PATCH net] Sudheer Kumar Doredla
2025-01-08 10:21 ` Simon Horman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).