diff options
| author | Petri Gynther <[email protected]> | 2015-03-04 22:30:01 +0000 |
|---|---|---|
| committer | David S. Miller <[email protected]> | 2015-03-05 04:54:54 +0000 |
| commit | 66d06757d9eb74a29775737b8c770e3b57e536d9 (patch) | |
| tree | f840abd25341fa137e0f48a3562294f6b4f6aa5b /net/switchdev/switchdev.c | |
| parent | Merge branch 'fib_trie-next' (diff) | |
| download | kernel-66d06757d9eb74a29775737b8c770e3b57e536d9.tar.gz kernel-66d06757d9eb74a29775737b8c770e3b57e536d9.zip | |
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 <[email protected]>
Reviewed-by: Florian Fainelli <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Diffstat (limited to 'net/switchdev/switchdev.c')
0 files changed, 0 insertions, 0 deletions
