Skip to content

Commit d9d71a8

Browse files
Alex Elderdavem330
authored andcommitted
net: ipa: use proper endpoint mask for suspend
It is now possible for a system to have more than 32 endpoints. As a result, registers related to endpoint suspend are parameterized, with 32 endpoints represented in one more registers. In ipa_interrupt_suspend_control(), the IPA_SUSPEND_EN register offset is determined properly, but the bit mask used still assumes the number of enpoints won't exceed 32. This is a bug. Fix it. Fixes: f298ba7 ("net: ipa: add a parameter to suspend registers") Signed-off-by: Alex Elder <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 1c429c1 commit d9d71a8

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

drivers/net/ipa/ipa_interrupt.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,10 @@ static void ipa_interrupt_suspend_control(struct ipa_interrupt *interrupt,
132132
u32 endpoint_id, bool enable)
133133
{
134134
struct ipa *ipa = interrupt->ipa;
135+
u32 mask = BIT(endpoint_id % 32);
135136
u32 unit = endpoint_id / 32;
136137
const struct ipa_reg *reg;
137138
u32 offset;
138-
u32 mask;
139139
u32 val;
140140

141141
WARN_ON(!test_bit(endpoint_id, ipa->available));
@@ -148,7 +148,6 @@ static void ipa_interrupt_suspend_control(struct ipa_interrupt *interrupt,
148148
offset = ipa_reg_n_offset(reg, unit);
149149
val = ioread32(ipa->reg_virt + offset);
150150

151-
mask = BIT(endpoint_id);
152151
if (enable)
153152
val |= mask;
154153
else

0 commit comments

Comments
 (0)