@@ -1163,6 +1163,7 @@ static int mtk_star_tx_poll(struct napi_struct *napi, int budget)
11631163 struct net_device * ndev = priv -> ndev ;
11641164 unsigned int head = ring -> head ;
11651165 unsigned int entry = ring -> tail ;
1166+ unsigned long flags ;
11661167
11671168 while (entry != head && count < (MTK_STAR_RING_NUM_DESCS - 1 )) {
11681169 ret = mtk_star_tx_complete_one (priv );
@@ -1182,9 +1183,9 @@ static int mtk_star_tx_poll(struct napi_struct *napi, int budget)
11821183 netif_wake_queue (ndev );
11831184
11841185 if (napi_complete (napi )) {
1185- spin_lock (& priv -> lock );
1186+ spin_lock_irqsave (& priv -> lock , flags );
11861187 mtk_star_enable_dma_irq (priv , false, true);
1187- spin_unlock (& priv -> lock );
1188+ spin_unlock_irqrestore (& priv -> lock , flags );
11881189 }
11891190
11901191 return 0 ;
@@ -1341,16 +1342,17 @@ static int mtk_star_rx(struct mtk_star_priv *priv, int budget)
13411342static int mtk_star_rx_poll (struct napi_struct * napi , int budget )
13421343{
13431344 struct mtk_star_priv * priv ;
1345+ unsigned long flags ;
13441346 int work_done = 0 ;
13451347
13461348 priv = container_of (napi , struct mtk_star_priv , rx_napi );
13471349
13481350 work_done = mtk_star_rx (priv , budget );
13491351 if (work_done < budget ) {
13501352 napi_complete_done (napi , work_done );
1351- spin_lock (& priv -> lock );
1353+ spin_lock_irqsave (& priv -> lock , flags );
13521354 mtk_star_enable_dma_irq (priv , true, false);
1353- spin_unlock (& priv -> lock );
1355+ spin_unlock_irqrestore (& priv -> lock , flags );
13541356 }
13551357
13561358 return work_done ;
0 commit comments