1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | /* |
3 | * This file is based on code from OCTEON SDK by Cavium Networks. |
4 | * |
5 | * Copyright (c) 2003-2007 Cavium Networks |
6 | */ |
7 | |
8 | void cvm_oct_poll_controller(struct net_device *dev); |
9 | void cvm_oct_rx_initialize(void); |
10 | void cvm_oct_rx_shutdown(void); |
11 | |
12 | static inline void cvm_oct_rx_refill_pool(int fill_threshold) |
13 | { |
14 | int number_to_free; |
15 | int num_freed; |
16 | /* Refill the packet buffer pool */ |
17 | number_to_free = |
18 | cvmx_fau_fetch_and_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, value: 0); |
19 | |
20 | if (number_to_free > fill_threshold) { |
21 | cvmx_fau_atomic_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, |
22 | value: -number_to_free); |
23 | num_freed = cvm_oct_mem_fill_fpa(CVMX_FPA_PACKET_POOL, |
24 | CVMX_FPA_PACKET_POOL_SIZE, |
25 | elements: number_to_free); |
26 | if (num_freed != number_to_free) { |
27 | cvmx_fau_atomic_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, |
28 | value: number_to_free - num_freed); |
29 | } |
30 | } |
31 | } |
32 |