@@ -1164,6 +1164,7 @@ static int mtk_star_tx_poll(struct napi_struct *napi, int budget)
1164
1164
struct net_device * ndev = priv -> ndev ;
1165
1165
unsigned int head = ring -> head ;
1166
1166
unsigned int entry = ring -> tail ;
1167
+ unsigned long flags ;
1167
1168
1168
1169
while (entry != head && count < (MTK_STAR_RING_NUM_DESCS - 1 )) {
1169
1170
ret = mtk_star_tx_complete_one (priv );
@@ -1183,9 +1184,9 @@ static int mtk_star_tx_poll(struct napi_struct *napi, int budget)
1183
1184
netif_wake_queue (ndev );
1184
1185
1185
1186
if (napi_complete (napi )) {
1186
- spin_lock (& priv -> lock );
1187
+ spin_lock_irqsave (& priv -> lock , flags );
1187
1188
mtk_star_enable_dma_irq (priv , false, true);
1188
- spin_unlock (& priv -> lock );
1189
+ spin_unlock_irqrestore (& priv -> lock , flags );
1189
1190
}
1190
1191
1191
1192
return 0 ;
@@ -1342,16 +1343,17 @@ static int mtk_star_rx(struct mtk_star_priv *priv, int budget)
1342
1343
static int mtk_star_rx_poll (struct napi_struct * napi , int budget )
1343
1344
{
1344
1345
struct mtk_star_priv * priv ;
1346
+ unsigned long flags ;
1345
1347
int work_done = 0 ;
1346
1348
1347
1349
priv = container_of (napi , struct mtk_star_priv , rx_napi );
1348
1350
1349
1351
work_done = mtk_star_rx (priv , budget );
1350
1352
if (work_done < budget ) {
1351
1353
napi_complete_done (napi , work_done );
1352
- spin_lock (& priv -> lock );
1354
+ spin_lock_irqsave (& priv -> lock , flags );
1353
1355
mtk_star_enable_dma_irq (priv , true, false);
1354
- spin_unlock (& priv -> lock );
1356
+ spin_unlock_irqrestore (& priv -> lock , flags );
1355
1357
}
1356
1358
1357
1359
return work_done ;
0 commit comments