1/* 2 * This file is based on code from OCTEON SDK by Cavium Networks. 3 * 4 * Copyright (c) 2003-2007 Cavium Networks 5 * 6 * This file is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License, Version 2, as 8 * published by the Free Software Foundation. 9 */ 10 11#include <asm/octeon/cvmx-fau.h> 12 13void cvm_oct_poll_controller(struct net_device *dev); 14void cvm_oct_rx_initialize(void); 15void cvm_oct_rx_shutdown(void); 16 17static inline void cvm_oct_rx_refill_pool(int fill_threshold) 18{ 19 int number_to_free; 20 int num_freed; 21 /* Refill the packet buffer pool */ 22 number_to_free = 23 cvmx_fau_fetch_and_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, 0); 24 25 if (number_to_free > fill_threshold) { 26 cvmx_fau_atomic_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, 27 -number_to_free); 28 num_freed = cvm_oct_mem_fill_fpa(CVMX_FPA_PACKET_POOL, 29 CVMX_FPA_PACKET_POOL_SIZE, 30 number_to_free); 31 if (num_freed != number_to_free) { 32 cvmx_fau_atomic_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, 33 number_to_free - num_freed); 34 } 35 } 36} 37