@@ -265,7 +265,7 @@ static void tsnep_tx_ring_cleanup(struct tsnep_tx *tx)
265265 }
266266}
267267
268- static int tsnep_tx_ring_init (struct tsnep_tx * tx )
268+ static int tsnep_tx_ring_create (struct tsnep_tx * tx )
269269{
270270 struct device * dmadev = tx -> adapter -> dmadev ;
271271 struct tsnep_tx_entry * entry ;
@@ -288,6 +288,7 @@ static int tsnep_tx_ring_init(struct tsnep_tx *tx)
288288 entry -> desc = (struct tsnep_tx_desc * )
289289 (((u8 * )entry -> desc_wb ) + TSNEP_DESC_OFFSET );
290290 entry -> desc_dma = tx -> page_dma [i ] + TSNEP_DESC_SIZE * j ;
291+ entry -> owner_user_flag = false;
291292 }
292293 }
293294 for (i = 0 ; i < TSNEP_RING_SIZE ; i ++ ) {
@@ -303,6 +304,19 @@ static int tsnep_tx_ring_init(struct tsnep_tx *tx)
303304 return retval ;
304305}
305306
307+ static void tsnep_tx_init (struct tsnep_tx * tx )
308+ {
309+ dma_addr_t dma ;
310+
311+ dma = tx -> entry [0 ].desc_dma | TSNEP_RESET_OWNER_COUNTER ;
312+ iowrite32 (DMA_ADDR_LOW (dma ), tx -> addr + TSNEP_TX_DESC_ADDR_LOW );
313+ iowrite32 (DMA_ADDR_HIGH (dma ), tx -> addr + TSNEP_TX_DESC_ADDR_HIGH );
314+ tx -> write = 0 ;
315+ tx -> read = 0 ;
316+ tx -> owner_counter = 1 ;
317+ tx -> increment_owner_counter = TSNEP_RING_SIZE - 1 ;
318+ }
319+
306320static void tsnep_tx_activate (struct tsnep_tx * tx , int index , int length ,
307321 bool last )
308322{
@@ -731,26 +745,15 @@ static bool tsnep_tx_pending(struct tsnep_tx *tx)
731745 return pending ;
732746}
733747
734- static int tsnep_tx_open (struct tsnep_adapter * adapter , void __iomem * addr ,
735- int queue_index , struct tsnep_tx * tx )
748+ static int tsnep_tx_open (struct tsnep_tx * tx )
736749{
737- dma_addr_t dma ;
738750 int retval ;
739751
740- memset (tx , 0 , sizeof (* tx ));
741- tx -> adapter = adapter ;
742- tx -> addr = addr ;
743- tx -> queue_index = queue_index ;
744-
745- retval = tsnep_tx_ring_init (tx );
752+ retval = tsnep_tx_ring_create (tx );
746753 if (retval )
747754 return retval ;
748755
749- dma = tx -> entry [0 ].desc_dma | TSNEP_RESET_OWNER_COUNTER ;
750- iowrite32 (DMA_ADDR_LOW (dma ), tx -> addr + TSNEP_TX_DESC_ADDR_LOW );
751- iowrite32 (DMA_ADDR_HIGH (dma ), tx -> addr + TSNEP_TX_DESC_ADDR_HIGH );
752- tx -> owner_counter = 1 ;
753- tx -> increment_owner_counter = TSNEP_RING_SIZE - 1 ;
756+ tsnep_tx_init (tx );
754757
755758 return 0 ;
756759}
@@ -795,7 +798,7 @@ static void tsnep_rx_ring_cleanup(struct tsnep_rx *rx)
795798 }
796799}
797800
798- static int tsnep_rx_ring_init (struct tsnep_rx * rx )
801+ static int tsnep_rx_ring_create (struct tsnep_rx * rx )
799802{
800803 struct device * dmadev = rx -> adapter -> dmadev ;
801804 struct tsnep_rx_entry * entry ;
@@ -850,6 +853,19 @@ static int tsnep_rx_ring_init(struct tsnep_rx *rx)
850853 return retval ;
851854}
852855
856+ static void tsnep_rx_init (struct tsnep_rx * rx )
857+ {
858+ dma_addr_t dma ;
859+
860+ dma = rx -> entry [0 ].desc_dma | TSNEP_RESET_OWNER_COUNTER ;
861+ iowrite32 (DMA_ADDR_LOW (dma ), rx -> addr + TSNEP_RX_DESC_ADDR_LOW );
862+ iowrite32 (DMA_ADDR_HIGH (dma ), rx -> addr + TSNEP_RX_DESC_ADDR_HIGH );
863+ rx -> write = 0 ;
864+ rx -> read = 0 ;
865+ rx -> owner_counter = 1 ;
866+ rx -> increment_owner_counter = TSNEP_RING_SIZE - 1 ;
867+ }
868+
853869static int tsnep_rx_desc_available (struct tsnep_rx * rx )
854870{
855871 if (rx -> read <= rx -> write )
@@ -1181,26 +1197,15 @@ static bool tsnep_rx_pending(struct tsnep_rx *rx)
11811197 return false;
11821198}
11831199
1184- static int tsnep_rx_open (struct tsnep_adapter * adapter , void __iomem * addr ,
1185- int queue_index , struct tsnep_rx * rx )
1200+ static int tsnep_rx_open (struct tsnep_rx * rx )
11861201{
1187- dma_addr_t dma ;
11881202 int retval ;
11891203
1190- memset (rx , 0 , sizeof (* rx ));
1191- rx -> adapter = adapter ;
1192- rx -> addr = addr ;
1193- rx -> queue_index = queue_index ;
1194-
1195- retval = tsnep_rx_ring_init (rx );
1204+ retval = tsnep_rx_ring_create (rx );
11961205 if (retval )
11971206 return retval ;
11981207
1199- dma = rx -> entry [0 ].desc_dma | TSNEP_RESET_OWNER_COUNTER ;
1200- iowrite32 (DMA_ADDR_LOW (dma ), rx -> addr + TSNEP_RX_DESC_ADDR_LOW );
1201- iowrite32 (DMA_ADDR_HIGH (dma ), rx -> addr + TSNEP_RX_DESC_ADDR_HIGH );
1202- rx -> owner_counter = 1 ;
1203- rx -> increment_owner_counter = TSNEP_RING_SIZE - 1 ;
1208+ tsnep_rx_init (rx );
12041209
12051210 tsnep_rx_refill (rx , tsnep_rx_desc_available (rx ), false);
12061211
@@ -1335,8 +1340,6 @@ static int tsnep_queue_open(struct tsnep_adapter *adapter,
13351340 struct tsnep_tx * tx = queue -> tx ;
13361341 int retval ;
13371342
1338- queue -> adapter = adapter ;
1339-
13401343 netif_napi_add (adapter -> netdev , & queue -> napi , tsnep_poll );
13411344
13421345 if (rx ) {
@@ -1377,27 +1380,18 @@ static int tsnep_queue_open(struct tsnep_adapter *adapter,
13771380static int tsnep_netdev_open (struct net_device * netdev )
13781381{
13791382 struct tsnep_adapter * adapter = netdev_priv (netdev );
1380- int tx_queue_index = 0 ;
1381- int rx_queue_index = 0 ;
1382- void __iomem * addr ;
13831383 int i , retval ;
13841384
13851385 for (i = 0 ; i < adapter -> num_queues ; i ++ ) {
13861386 if (adapter -> queue [i ].tx ) {
1387- addr = adapter -> addr + TSNEP_QUEUE (tx_queue_index );
1388- retval = tsnep_tx_open (adapter , addr , tx_queue_index ,
1389- adapter -> queue [i ].tx );
1387+ retval = tsnep_tx_open (adapter -> queue [i ].tx );
13901388 if (retval )
13911389 goto failed ;
1392- tx_queue_index ++ ;
13931390 }
13941391 if (adapter -> queue [i ].rx ) {
1395- addr = adapter -> addr + TSNEP_QUEUE (rx_queue_index );
1396- retval = tsnep_rx_open (adapter , addr , rx_queue_index ,
1397- adapter -> queue [i ].rx );
1392+ retval = tsnep_rx_open (adapter -> queue [i ].rx );
13981393 if (retval )
13991394 goto failed ;
1400- rx_queue_index ++ ;
14011395 }
14021396
14031397 retval = tsnep_queue_open (adapter , & adapter -> queue [i ], i == 0 );
@@ -1796,9 +1790,16 @@ static int tsnep_queue_init(struct tsnep_adapter *adapter, int queue_count)
17961790 adapter -> num_tx_queues = 1 ;
17971791 adapter -> num_rx_queues = 1 ;
17981792 adapter -> num_queues = 1 ;
1793+ adapter -> queue [0 ].adapter = adapter ;
17991794 adapter -> queue [0 ].irq = retval ;
18001795 adapter -> queue [0 ].tx = & adapter -> tx [0 ];
1796+ adapter -> queue [0 ].tx -> adapter = adapter ;
1797+ adapter -> queue [0 ].tx -> addr = adapter -> addr + TSNEP_QUEUE (0 );
1798+ adapter -> queue [0 ].tx -> queue_index = 0 ;
18011799 adapter -> queue [0 ].rx = & adapter -> rx [0 ];
1800+ adapter -> queue [0 ].rx -> adapter = adapter ;
1801+ adapter -> queue [0 ].rx -> addr = adapter -> addr + TSNEP_QUEUE (0 );
1802+ adapter -> queue [0 ].rx -> queue_index = 0 ;
18021803 adapter -> queue [0 ].irq_mask = irq_mask ;
18031804 adapter -> queue [0 ].irq_delay_addr = adapter -> addr + ECM_INT_DELAY ;
18041805 retval = tsnep_set_irq_coalesce (& adapter -> queue [0 ],
@@ -1820,9 +1821,16 @@ static int tsnep_queue_init(struct tsnep_adapter *adapter, int queue_count)
18201821 adapter -> num_tx_queues ++ ;
18211822 adapter -> num_rx_queues ++ ;
18221823 adapter -> num_queues ++ ;
1824+ adapter -> queue [i ].adapter = adapter ;
18231825 adapter -> queue [i ].irq = retval ;
18241826 adapter -> queue [i ].tx = & adapter -> tx [i ];
1827+ adapter -> queue [i ].tx -> adapter = adapter ;
1828+ adapter -> queue [i ].tx -> addr = adapter -> addr + TSNEP_QUEUE (i );
1829+ adapter -> queue [i ].tx -> queue_index = i ;
18251830 adapter -> queue [i ].rx = & adapter -> rx [i ];
1831+ adapter -> queue [i ].rx -> adapter = adapter ;
1832+ adapter -> queue [i ].rx -> addr = adapter -> addr + TSNEP_QUEUE (i );
1833+ adapter -> queue [i ].rx -> queue_index = i ;
18261834 adapter -> queue [i ].irq_mask =
18271835 irq_mask << (ECM_INT_TXRX_SHIFT * i );
18281836 adapter -> queue [i ].irq_delay_addr =
0 commit comments