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 cvm_oct_rx_refill_pool(int fill_threshold)12static 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, 0); 19 20 if (number_to_free > fill_threshold) { 21 cvmx_fau_atomic_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, 22 -number_to_free); 23 num_freed = cvm_oct_mem_fill_fpa(CVMX_FPA_PACKET_POOL, 24 CVMX_FPA_PACKET_POOL_SIZE, 25 number_to_free); 26 if (num_freed != number_to_free) { 27 cvmx_fau_atomic_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, 28 number_to_free - num_freed); 29 } 30 } 31 } 32