@@ -277,6 +277,26 @@ static int bgmac_dma_rx_skb_for_slot(struct bgmac *bgmac,
277277 return 0 ;
278278}
279279
280+ static void bgmac_dma_rx_setup_desc (struct bgmac * bgmac ,
281+ struct bgmac_dma_ring * ring , int desc_idx )
282+ {
283+ struct bgmac_dma_desc * dma_desc = ring -> cpu_base + desc_idx ;
284+ u32 ctl0 = 0 , ctl1 = 0 ;
285+
286+ if (desc_idx == ring -> num_slots - 1 )
287+ ctl0 |= BGMAC_DESC_CTL0_EOT ;
288+ ctl1 |= BGMAC_RX_BUF_SIZE & BGMAC_DESC_CTL1_LEN ;
289+ /* Is there any BGMAC device that requires extension? */
290+ /* ctl1 |= (addrext << B43_DMA64_DCTL1_ADDREXT_SHIFT) &
291+ * B43_DMA64_DCTL1_ADDREXT_MASK;
292+ */
293+
294+ dma_desc -> addr_low = cpu_to_le32 (lower_32_bits (ring -> slots [desc_idx ].dma_addr ));
295+ dma_desc -> addr_high = cpu_to_le32 (upper_32_bits (ring -> slots [desc_idx ].dma_addr ));
296+ dma_desc -> ctl0 = cpu_to_le32 (ctl0 );
297+ dma_desc -> ctl1 = cpu_to_le32 (ctl1 );
298+ }
299+
280300static int bgmac_dma_rx_read (struct bgmac * bgmac , struct bgmac_dma_ring * ring ,
281301 int weight )
282302{
@@ -503,8 +523,6 @@ static int bgmac_dma_alloc(struct bgmac *bgmac)
503523static void bgmac_dma_init (struct bgmac * bgmac )
504524{
505525 struct bgmac_dma_ring * ring ;
506- struct bgmac_dma_desc * dma_desc ;
507- u32 ctl0 , ctl1 ;
508526 int i ;
509527
510528 for (i = 0 ; i < BGMAC_MAX_TX_RINGS ; i ++ ) {
@@ -537,23 +555,8 @@ static void bgmac_dma_init(struct bgmac *bgmac)
537555 if (ring -> unaligned )
538556 bgmac_dma_rx_enable (bgmac , ring );
539557
540- for (j = 0 , dma_desc = ring -> cpu_base ; j < ring -> num_slots ;
541- j ++ , dma_desc ++ ) {
542- ctl0 = ctl1 = 0 ;
543-
544- if (j == ring -> num_slots - 1 )
545- ctl0 |= BGMAC_DESC_CTL0_EOT ;
546- ctl1 |= BGMAC_RX_BUF_SIZE & BGMAC_DESC_CTL1_LEN ;
547- /* Is there any BGMAC device that requires extension? */
548- /* ctl1 |= (addrext << B43_DMA64_DCTL1_ADDREXT_SHIFT) &
549- * B43_DMA64_DCTL1_ADDREXT_MASK;
550- */
551-
552- dma_desc -> addr_low = cpu_to_le32 (lower_32_bits (ring -> slots [j ].dma_addr ));
553- dma_desc -> addr_high = cpu_to_le32 (upper_32_bits (ring -> slots [j ].dma_addr ));
554- dma_desc -> ctl0 = cpu_to_le32 (ctl0 );
555- dma_desc -> ctl1 = cpu_to_le32 (ctl1 );
556- }
558+ for (j = 0 ; j < ring -> num_slots ; j ++ )
559+ bgmac_dma_rx_setup_desc (bgmac , ring , j );
557560
558561 bgmac_write (bgmac , ring -> mmio_base + BGMAC_DMA_RX_INDEX ,
559562 ring -> index_base +
0 commit comments