@@ -1136,7 +1136,8 @@ static int macb_halt_tx(struct macb *bp)
11361136 bp , TSR );
11371137}
11381138
1139- static void macb_tx_unmap (struct macb * bp , struct macb_tx_buff * tx_buff , int budget )
1139+ static void macb_tx_unmap (struct macb * bp , struct macb_tx_buff * tx_buff ,
1140+ int budget )
11401141{
11411142 if (tx_buff -> mapping ) {
11421143 if (tx_buff -> mapped_as_page )
@@ -1148,9 +1149,9 @@ static void macb_tx_unmap(struct macb *bp, struct macb_tx_buff *tx_buff, int bud
11481149 tx_buff -> mapping = 0 ;
11491150 }
11501151
1151- if (tx_buff -> skb ) {
1152- napi_consume_skb (tx_buff -> skb , budget );
1153- tx_buff -> skb = NULL ;
1152+ if (tx_buff -> ptr ) {
1153+ napi_consume_skb (tx_buff -> ptr , budget );
1154+ tx_buff -> ptr = NULL ;
11541155 }
11551156}
11561157
@@ -1241,15 +1242,15 @@ static void macb_tx_error_task(struct work_struct *work)
12411242 desc = macb_tx_desc (queue , tail );
12421243 ctrl = desc -> ctrl ;
12431244 tx_buff = macb_tx_buff (queue , tail );
1244- skb = tx_buff -> skb ;
1245+ skb = tx_buff -> ptr ;
12451246
12461247 if (ctrl & MACB_BIT (TX_USED )) {
12471248 /* skb is set for the last buffer of the frame */
12481249 while (!skb ) {
12491250 macb_tx_unmap (bp , tx_buff , 0 );
12501251 tail ++ ;
12511252 tx_buff = macb_tx_buff (queue , tail );
1252- skb = tx_buff -> skb ;
1253+ skb = tx_buff -> ptr ;
12531254 }
12541255
12551256 /* ctrl still refers to the first buffer descriptor
@@ -1346,20 +1347,22 @@ static bool ptp_one_step_sync(struct sk_buff *skb)
13461347static int macb_tx_complete (struct macb_queue * queue , int budget )
13471348{
13481349 struct macb * bp = queue -> bp ;
1349- u16 queue_index = queue - bp -> queues ;
13501350 unsigned long flags ;
13511351 unsigned int tail ;
13521352 unsigned int head ;
1353+ u16 queue_index ;
13531354 int packets = 0 ;
13541355 u32 bytes = 0 ;
13551356
1357+ queue_index = queue - bp -> queues ;
1358+
13561359 spin_lock_irqsave (& queue -> tx_ptr_lock , flags );
13571360 head = queue -> tx_head ;
13581361 for (tail = queue -> tx_tail ; tail != head && packets < budget ; tail ++ ) {
1359- struct macb_tx_buff * tx_buff ;
1360- struct sk_buff * skb ;
1361- struct macb_dma_desc * desc ;
1362- u32 ctrl ;
1362+ struct macb_tx_buff * tx_buff ;
1363+ struct macb_dma_desc * desc ;
1364+ struct sk_buff * skb ;
1365+ u32 ctrl ;
13631366
13641367 desc = macb_tx_desc (queue , tail );
13651368
@@ -1377,7 +1380,7 @@ static int macb_tx_complete(struct macb_queue *queue, int budget)
13771380 /* Process all buffers of the current transmitted frame */
13781381 for (;; tail ++ ) {
13791382 tx_buff = macb_tx_buff (queue , tail );
1380- skb = tx_buff -> skb ;
1383+ skb = tx_buff -> ptr ;
13811384
13821385 /* First, update TX stats if needed */
13831386 if (skb ) {
@@ -2314,7 +2317,8 @@ static unsigned int macb_tx_map(struct macb *bp,
23142317 goto dma_error ;
23152318
23162319 /* Save info to properly release resources */
2317- tx_buff -> skb = NULL ;
2320+ tx_buff -> ptr = NULL ;
2321+ tx_buff -> type = MACB_TYPE_SKB ;
23182322 tx_buff -> mapping = mapping ;
23192323 tx_buff -> size = size ;
23202324 tx_buff -> mapped_as_page = false;
@@ -2343,7 +2347,8 @@ static unsigned int macb_tx_map(struct macb *bp,
23432347 goto dma_error ;
23442348
23452349 /* Save info to properly release resources */
2346- tx_buff -> skb = NULL ;
2350+ tx_buff -> ptr = NULL ;
2351+ tx_buff -> type = MACB_TYPE_SKB ;
23472352 tx_buff -> mapping = mapping ;
23482353 tx_buff -> size = size ;
23492354 tx_buff -> mapped_as_page = true;
@@ -2362,7 +2367,8 @@ static unsigned int macb_tx_map(struct macb *bp,
23622367 }
23632368
23642369 /* This is the last buffer of the frame: save socket buffer */
2365- tx_buff -> skb = skb ;
2370+ tx_buff -> ptr = skb ;
2371+ tx_buff -> type = MACB_TYPE_SKB ;
23662372
23672373 /* Update TX ring: update buffer descriptors in reverse order
23682374 * to avoid race condition
@@ -5280,8 +5286,9 @@ static netdev_tx_t at91ether_start_xmit(struct sk_buff *skb,
52805286 netif_stop_queue (dev );
52815287
52825288 /* Store packet information (to free when Tx completed) */
5283- lp -> rm9200_txq [desc ].skb = skb ;
5289+ lp -> rm9200_txq [desc ].ptr = skb ;
52845290 lp -> rm9200_txq [desc ].size = skb -> len ;
5291+ lp -> rm9200_txq [desc ].type = MACB_TYPE_SKB ;
52855292 lp -> rm9200_txq [desc ].mapping = dma_map_single (& lp -> pdev -> dev , skb -> data ,
52865293 skb -> len , DMA_TO_DEVICE );
52875294 if (dma_mapping_error (& lp -> pdev -> dev , lp -> rm9200_txq [desc ].mapping )) {
@@ -5373,9 +5380,9 @@ static irqreturn_t at91ether_interrupt(int irq, void *dev_id)
53735380 dev -> stats .tx_errors ++ ;
53745381
53755382 desc = 0 ;
5376- if (lp -> rm9200_txq [desc ].skb ) {
5377- dev_consume_skb_irq (lp -> rm9200_txq [desc ].skb );
5378- lp -> rm9200_txq [desc ].skb = NULL ;
5383+ if (lp -> rm9200_txq [desc ].ptr ) {
5384+ dev_consume_skb_irq (lp -> rm9200_txq [desc ].ptr );
5385+ lp -> rm9200_txq [desc ].ptr = NULL ;
53795386 dma_unmap_single (& lp -> pdev -> dev , lp -> rm9200_txq [desc ].mapping ,
53805387 lp -> rm9200_txq [desc ].size , DMA_TO_DEVICE );
53815388 dev -> stats .tx_packets ++ ;
0 commit comments