[PATCH net-next 1/9] drivers: net: xgene: Protect indirect MAC access
Iyappan Subramanian
isubramanian at apm.com
Thu Apr 27 00:12:16 EDT 2017
On Wed, Apr 26, 2017 at 5:06 PM, Florian Fainelli <f.fainelli at gmail.com> wrote:
> On 04/26/2017 04:38 PM, Iyappan Subramanian wrote:
>> From: Quan Nguyen <qnguyen at apm.com>
>>
>> This patch adds lock to protect indirect mac access sequence.
>>
>> Signed-off-by: Quan Nguyen <qnguyen at apm.com>
>> Signed-off-by: Iyappan Subramanian <isubramanian at apm.com>
>> ---
>> drivers/net/ethernet/apm/xgene/xgene_enet_hw.c | 2 ++
>> drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 1 +
>> drivers/net/ethernet/apm/xgene/xgene_enet_main.h | 1 +
>> drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c | 7 ++++++-
>> drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.c | 2 ++
>> 5 files changed, 12 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c b/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
>> index 2a835e0..3697ba7 100644
>> --- a/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
>> +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
>> @@ -365,9 +365,11 @@ static void xgene_enet_rd_mcx_mac(struct xgene_enet_pdata *pdata,
>> cmd = pdata->mcx_mac_addr + MAC_COMMAND_REG_OFFSET;
>> cmd_done = pdata->mcx_mac_addr + MAC_COMMAND_DONE_REG_OFFSET;
>>
>> + spin_lock(&pdata->mac_lock);
>> if (!xgene_enet_rd_indirect(addr, rd, cmd, cmd_done, rd_addr, rd_data))
>> netdev_err(pdata->ndev, "MCX mac read failed, addr: %04x\n",
>> rd_addr);
>> + spin_unlock(&pdata->mac_lock);
>
> Why not fold the spinlock manipulation within xgenet_enet_rd_indirect()?
> That way the caller does not have to know that acquiring the spinlock is
> required and you avoid potential bugs in the future where you are
> missing the spinlock on indirect accesses?
Thanks. We'll do that and post the next version.
> --
> Florian
More information about the linux-arm-kernel
mailing list