diff options
| author | Petri Gynther <pgynther@google.com> | 2015-03-04 14:30:01 -0800 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-03-04 23:54:54 -0500 | 
| commit | 66d06757d9eb74a29775737b8c770e3b57e536d9 (patch) | |
| tree | f840abd25341fa137e0f48a3562294f6b4f6aa5b /net/switchdev/switchdev.c | |
| parent | f93eb4ba0f6c089252c8358563b5859a4daf40b1 (diff) | |
net: bcmgenet: simplify __bcmgenet_tx_reclaim()
1. Use c_index and ring->c_index to determine how many TxCBs/TxBDs are
   ready for cleanup
   - c_index = the current value of TDMA_CONS_INDEX
   - TDMA_CONS_INDEX is HW-incremented and auto-wraparound (0x0-0xFFFF)
   - ring->c_index = __bcmgenet_tx_reclaim() cleaned up to this point on
     the previous invocation
2. Add bcmgenet_tx_ring->clean_ptr
   - index of the next TxCB to be cleaned
   - incremented as TxCBs/TxBDs are processed
   - value always in range [ring->cb_ptr, ring->end_ptr]
3. Fix incrementing of dev->stats.tx_packets
   - should be incremented only when tx_cb_ptr->skb != NULL
These changes simplify __bcmgenet_tx_reclaim(). Furthermore, Tx ring size
can now be any value.
With the old code, Tx ring size had to be a power-of-2:
   num_tx_bds = ring->size;
   c_index &= (num_tx_bds - 1);
   last_c_index &= (num_tx_bds - 1);
Signed-off-by: Petri Gynther <pgynther@google.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/switchdev/switchdev.c')
0 files changed, 0 insertions, 0 deletions
