@@ -1109,6 +1109,7 @@ static int stmmac_phy_setup(struct stmmac_priv *priv)
11091109static void stmmac_display_rx_rings (struct stmmac_priv * priv )
11101110{
11111111 u32 rx_cnt = priv -> plat -> rx_queues_to_use ;
1112+ unsigned int desc_size ;
11121113 void * head_rx ;
11131114 u32 queue ;
11141115
@@ -1118,19 +1119,24 @@ static void stmmac_display_rx_rings(struct stmmac_priv *priv)
11181119
11191120 pr_info ("\tRX Queue %u rings\n" , queue );
11201121
1121- if (priv -> extend_desc )
1122+ if (priv -> extend_desc ) {
11221123 head_rx = (void * )rx_q -> dma_erx ;
1123- else
1124+ desc_size = sizeof (struct dma_extended_desc );
1125+ } else {
11241126 head_rx = (void * )rx_q -> dma_rx ;
1127+ desc_size = sizeof (struct dma_desc );
1128+ }
11251129
11261130 /* Display RX ring */
1127- stmmac_display_ring (priv , head_rx , priv -> dma_rx_size , true);
1131+ stmmac_display_ring (priv , head_rx , priv -> dma_rx_size , true,
1132+ rx_q -> dma_rx_phy , desc_size );
11281133 }
11291134}
11301135
11311136static void stmmac_display_tx_rings (struct stmmac_priv * priv )
11321137{
11331138 u32 tx_cnt = priv -> plat -> tx_queues_to_use ;
1139+ unsigned int desc_size ;
11341140 void * head_tx ;
11351141 u32 queue ;
11361142
@@ -1140,14 +1146,19 @@ static void stmmac_display_tx_rings(struct stmmac_priv *priv)
11401146
11411147 pr_info ("\tTX Queue %d rings\n" , queue );
11421148
1143- if (priv -> extend_desc )
1149+ if (priv -> extend_desc ) {
11441150 head_tx = (void * )tx_q -> dma_etx ;
1145- else if (tx_q -> tbs & STMMAC_TBS_AVAIL )
1151+ desc_size = sizeof (struct dma_extended_desc );
1152+ } else if (tx_q -> tbs & STMMAC_TBS_AVAIL ) {
11461153 head_tx = (void * )tx_q -> dma_entx ;
1147- else
1154+ desc_size = sizeof (struct dma_edesc );
1155+ } else {
11481156 head_tx = (void * )tx_q -> dma_tx ;
1157+ desc_size = sizeof (struct dma_desc );
1158+ }
11491159
1150- stmmac_display_ring (priv , head_tx , priv -> dma_tx_size , false);
1160+ stmmac_display_ring (priv , head_tx , priv -> dma_tx_size , false,
1161+ tx_q -> dma_tx_phy , desc_size );
11511162 }
11521163}
11531164
@@ -3710,18 +3721,23 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue)
37103721 unsigned int count = 0 , error = 0 , len = 0 ;
37113722 int status = 0 , coe = priv -> hw -> rx_csum ;
37123723 unsigned int next_entry = rx_q -> cur_rx ;
3724+ unsigned int desc_size ;
37133725 struct sk_buff * skb = NULL ;
37143726
37153727 if (netif_msg_rx_status (priv )) {
37163728 void * rx_head ;
37173729
37183730 netdev_dbg (priv -> dev , "%s: descriptor ring:\n" , __func__ );
3719- if (priv -> extend_desc )
3731+ if (priv -> extend_desc ) {
37203732 rx_head = (void * )rx_q -> dma_erx ;
3721- else
3733+ desc_size = sizeof (struct dma_extended_desc );
3734+ } else {
37223735 rx_head = (void * )rx_q -> dma_rx ;
3736+ desc_size = sizeof (struct dma_desc );
3737+ }
37233738
3724- stmmac_display_ring (priv , rx_head , priv -> dma_rx_size , true);
3739+ stmmac_display_ring (priv , rx_head , priv -> dma_rx_size , true,
3740+ rx_q -> dma_rx_phy , desc_size );
37253741 }
37263742 while (count < limit ) {
37273743 unsigned int buf1_len = 0 , buf2_len = 0 ;
@@ -4289,24 +4305,27 @@ static int stmmac_set_mac_address(struct net_device *ndev, void *addr)
42894305static struct dentry * stmmac_fs_dir ;
42904306
42914307static void sysfs_display_ring (void * head , int size , int extend_desc ,
4292- struct seq_file * seq )
4308+ struct seq_file * seq , dma_addr_t dma_phy_addr )
42934309{
42944310 int i ;
42954311 struct dma_extended_desc * ep = (struct dma_extended_desc * )head ;
42964312 struct dma_desc * p = (struct dma_desc * )head ;
4313+ dma_addr_t dma_addr ;
42974314
42984315 for (i = 0 ; i < size ; i ++ ) {
42994316 if (extend_desc ) {
4300- seq_printf (seq , "%d [0x%x]: 0x%x 0x%x 0x%x 0x%x\n" ,
4301- i , (unsigned int )virt_to_phys (ep ),
4317+ dma_addr = dma_phy_addr + i * sizeof (* ep );
4318+ seq_printf (seq , "%d [%pad]: 0x%x 0x%x 0x%x 0x%x\n" ,
4319+ i , & dma_addr ,
43024320 le32_to_cpu (ep -> basic .des0 ),
43034321 le32_to_cpu (ep -> basic .des1 ),
43044322 le32_to_cpu (ep -> basic .des2 ),
43054323 le32_to_cpu (ep -> basic .des3 ));
43064324 ep ++ ;
43074325 } else {
4308- seq_printf (seq , "%d [0x%x]: 0x%x 0x%x 0x%x 0x%x\n" ,
4309- i , (unsigned int )virt_to_phys (p ),
4326+ dma_addr = dma_phy_addr + i * sizeof (* p );
4327+ seq_printf (seq , "%d [%pad]: 0x%x 0x%x 0x%x 0x%x\n" ,
4328+ i , & dma_addr ,
43104329 le32_to_cpu (p -> des0 ), le32_to_cpu (p -> des1 ),
43114330 le32_to_cpu (p -> des2 ), le32_to_cpu (p -> des3 ));
43124331 p ++ ;
@@ -4334,11 +4353,11 @@ static int stmmac_rings_status_show(struct seq_file *seq, void *v)
43344353 if (priv -> extend_desc ) {
43354354 seq_printf (seq , "Extended descriptor ring:\n" );
43364355 sysfs_display_ring ((void * )rx_q -> dma_erx ,
4337- priv -> dma_rx_size , 1 , seq );
4356+ priv -> dma_rx_size , 1 , seq , rx_q -> dma_rx_phy );
43384357 } else {
43394358 seq_printf (seq , "Descriptor ring:\n" );
43404359 sysfs_display_ring ((void * )rx_q -> dma_rx ,
4341- priv -> dma_rx_size , 0 , seq );
4360+ priv -> dma_rx_size , 0 , seq , rx_q -> dma_rx_phy );
43424361 }
43434362 }
43444363
@@ -4350,11 +4369,11 @@ static int stmmac_rings_status_show(struct seq_file *seq, void *v)
43504369 if (priv -> extend_desc ) {
43514370 seq_printf (seq , "Extended descriptor ring:\n" );
43524371 sysfs_display_ring ((void * )tx_q -> dma_etx ,
4353- priv -> dma_tx_size , 1 , seq );
4372+ priv -> dma_tx_size , 1 , seq , tx_q -> dma_tx_phy );
43544373 } else if (!(tx_q -> tbs & STMMAC_TBS_AVAIL )) {
43554374 seq_printf (seq , "Descriptor ring:\n" );
43564375 sysfs_display_ring ((void * )tx_q -> dma_tx ,
4357- priv -> dma_tx_size , 0 , seq );
4376+ priv -> dma_tx_size , 0 , seq , tx_q -> dma_tx_phy );
43584377 }
43594378 }
43604379
0 commit comments