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 #include <asm/octeon/cvmx-fau.h> 9 10 void cvm_oct_poll_controller(struct net_device *dev); 11 void cvm_oct_rx_initialize(void); 12 void cvm_oct_rx_shutdown(void); 13 cvm_oct_rx_refill_pool(int fill_threshold)14static inline void cvm_oct_rx_refill_pool(int fill_threshold) 15 { 16 int number_to_free; 17 int num_freed; 18 /* Refill the packet buffer pool */ 19 number_to_free = 20 cvmx_fau_fetch_and_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, 0); 21 22 if (number_to_free > fill_threshold) { 23 cvmx_fau_atomic_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, 24 -number_to_free); 25 num_freed = cvm_oct_mem_fill_fpa(CVMX_FPA_PACKET_POOL, 26 CVMX_FPA_PACKET_POOL_SIZE, 27 number_to_free); 28 if (num_freed != number_to_free) { 29 cvmx_fau_atomic_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, 30 number_to_free - num_freed); 31 } 32 } 33 } 34