@@ -1609,6 +1609,7 @@ static void xgbe_dev_xmit(struct xgbe_channel *channel)
1609
1609
struct xgbe_ring_data * rdata ;
1610
1610
struct xgbe_ring_desc * rdesc ;
1611
1611
struct xgbe_packet_data * packet = & ring -> packet_data ;
1612
+ unsigned int tx_packets , tx_bytes ;
1612
1613
unsigned int csum , tso , vlan ;
1613
1614
unsigned int tso_context , vlan_context ;
1614
1615
unsigned int tx_set_ic ;
@@ -1618,6 +1619,9 @@ static void xgbe_dev_xmit(struct xgbe_channel *channel)
1618
1619
1619
1620
DBGPR ("-->xgbe_dev_xmit\n" );
1620
1621
1622
+ tx_packets = packet -> tx_packets ;
1623
+ tx_bytes = packet -> tx_bytes ;
1624
+
1621
1625
csum = XGMAC_GET_BITS (packet -> attributes , TX_PACKET_ATTRIBUTES ,
1622
1626
CSUM_ENABLE );
1623
1627
tso = XGMAC_GET_BITS (packet -> attributes , TX_PACKET_ATTRIBUTES ,
@@ -1645,13 +1649,12 @@ static void xgbe_dev_xmit(struct xgbe_channel *channel)
1645
1649
* - Addition of Tx frame count to the frame count since the
1646
1650
* last interrupt was set does not exceed the frame count setting
1647
1651
*/
1648
- ring -> coalesce_count += packet -> tx_packets ;
1652
+ ring -> coalesce_count += tx_packets ;
1649
1653
if (!pdata -> tx_frames )
1650
1654
tx_set_ic = 0 ;
1651
- else if (packet -> tx_packets > pdata -> tx_frames )
1655
+ else if (tx_packets > pdata -> tx_frames )
1652
1656
tx_set_ic = 1 ;
1653
- else if ((ring -> coalesce_count % pdata -> tx_frames ) <
1654
- packet -> tx_packets )
1657
+ else if ((ring -> coalesce_count % pdata -> tx_frames ) < tx_packets )
1655
1658
tx_set_ic = 1 ;
1656
1659
else
1657
1660
tx_set_ic = 0 ;
@@ -1741,7 +1744,7 @@ static void xgbe_dev_xmit(struct xgbe_channel *channel)
1741
1744
XGMAC_SET_BITS_LE (rdesc -> desc3 , TX_NORMAL_DESC3 , TCPHDRLEN ,
1742
1745
packet -> tcp_header_len / 4 );
1743
1746
1744
- pdata -> ext_stats .tx_tso_packets += packet -> tx_packets ;
1747
+ pdata -> ext_stats .tx_tso_packets += tx_packets ;
1745
1748
} else {
1746
1749
/* Enable CRC and Pad Insertion */
1747
1750
XGMAC_SET_BITS_LE (rdesc -> desc3 , TX_NORMAL_DESC3 , CPC , 0 );
@@ -1789,8 +1792,11 @@ static void xgbe_dev_xmit(struct xgbe_channel *channel)
1789
1792
XGMAC_SET_BITS_LE (rdesc -> desc2 , TX_NORMAL_DESC2 , IC , 1 );
1790
1793
1791
1794
/* Save the Tx info to report back during cleanup */
1792
- rdata -> tx .packets = packet -> tx_packets ;
1793
- rdata -> tx .bytes = packet -> tx_bytes ;
1795
+ rdata -> tx .packets = tx_packets ;
1796
+ rdata -> tx .bytes = tx_bytes ;
1797
+
1798
+ pdata -> ext_stats .txq_packets [channel -> queue_index ] += tx_packets ;
1799
+ pdata -> ext_stats .txq_bytes [channel -> queue_index ] += tx_bytes ;
1794
1800
1795
1801
/* In case the Tx DMA engine is running, make sure everything
1796
1802
* is written to the descriptor(s) before setting the OWN bit
@@ -1944,6 +1950,9 @@ static int xgbe_dev_read(struct xgbe_channel *channel)
1944
1950
FRAME , 1 );
1945
1951
}
1946
1952
1953
+ pdata -> ext_stats .rxq_packets [channel -> queue_index ]++ ;
1954
+ pdata -> ext_stats .rxq_bytes [channel -> queue_index ] += rdata -> rx .len ;
1955
+
1947
1956
DBGPR ("<--xgbe_dev_read: %s - descriptor=%u (cur=%d)\n" , channel -> name ,
1948
1957
ring -> cur & (ring -> rdesc_count - 1 ), ring -> cur );
1949
1958
0 commit comments