Skip to content

Commit

Permalink
net: dsa: mv88e6xxx: shorten the locked section in mv88e6xxx_g1_atu_p…
Browse files Browse the repository at this point in the history
…rob_irq_thread_fn()

As only the hardware access functions up til and including
mv88e6xxx_g1_atu_mac_read() called under the interrupt handler
need to take the chip lock, we release the chip lock after this call.
The follow up code that handles the violations can run without the
chip lock held.
In further patches, the violation handler function will even be
incompatible with having the chip lock held. This due to an AB/BA
ordering inversion with rtnl_lock().

Signed-off-by: Hans J. Schultz <netdev@kapio-technology.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
  • Loading branch information
Hans J. Schultz authored and Paolo Abeni committed Jan 10, 2023
1 parent e06a9af commit 0c34aff
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions drivers/net/dsa/mv88e6xxx/global1_atu.c
Original file line number Diff line number Diff line change
Expand Up @@ -409,23 +409,25 @@ static irqreturn_t mv88e6xxx_g1_atu_prob_irq_thread_fn(int irq, void *dev_id)

err = mv88e6xxx_g1_read_atu_violation(chip);
if (err)
goto out;
goto out_unlock;

err = mv88e6xxx_g1_read(chip, MV88E6XXX_G1_ATU_OP, &val);
if (err)
goto out;
goto out_unlock;

err = mv88e6xxx_g1_atu_fid_read(chip, &fid);
if (err)
goto out;
goto out_unlock;

err = mv88e6xxx_g1_atu_data_read(chip, &entry);
if (err)
goto out;
goto out_unlock;

err = mv88e6xxx_g1_atu_mac_read(chip, &entry);
if (err)
goto out;
goto out_unlock;

mv88e6xxx_reg_unlock(chip);

spid = entry.state;

Expand All @@ -449,13 +451,11 @@ static irqreturn_t mv88e6xxx_g1_atu_prob_irq_thread_fn(int irq, void *dev_id)
fid);
chip->ports[spid].atu_full_violation++;
}
mv88e6xxx_reg_unlock(chip);

return IRQ_HANDLED;

out:
out_unlock:
mv88e6xxx_reg_unlock(chip);

dev_err(chip->dev, "ATU problem: error %d while handling interrupt\n",
err);
return IRQ_HANDLED;
Expand Down

0 comments on commit 0c34aff

Please sign in to comment.