/** * Allocate memory and initialize the FPA pools using memory * from cvmx-bootmem. Sizes of each element in the pools is * controlled by the cvmx-config.h header file. Specifying * zero for any parameter will cause that FPA pool to not be * setup. This is useful if you aren't using some of the * hardware and want to save memory. * * @param packet_buffers * Number of packet buffers to allocate * @param work_queue_entries * Number of work queue entries * @param pko_buffers * PKO Command buffers. You should at minimum have two per * each PKO queue. * @param tim_buffers * TIM ring buffer command queues. At least two per timer bucket * is recommened. * @param dfa_buffers * DFA command buffer. A relatively small (32 for example) * number should work. * @return Zero on success, non-zero if out of memory */ int cvmx_helper_initialize_fpa(int packet_buffers, int work_queue_entries, int pko_buffers, int tim_buffers, int dfa_buffers) { #ifndef CVMX_FPA_PACKET_POOL #define CVMX_FPA_PACKET_POOL -1 #define CVMX_FPA_PACKET_POOL_SIZE 0 #endif #ifndef CVMX_FPA_WQE_POOL #define CVMX_FPA_WQE_POOL -1 #define CVMX_FPA_WQE_POOL_SIZE 0 #endif #ifndef CVMX_FPA_OUTPUT_BUFFER_POOL #define CVMX_FPA_OUTPUT_BUFFER_POOL -1 #define CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE 0 #endif #ifndef CVMX_FPA_TIMER_POOL #define CVMX_FPA_TIMER_POOL -1 #define CVMX_FPA_TIMER_POOL_SIZE 0 #endif #ifndef CVMX_FPA_DFA_POOL #define CVMX_FPA_DFA_POOL -1 #define CVMX_FPA_DFA_POOL_SIZE 0 #endif return __cvmx_helper_initialize_fpa( CVMX_FPA_PACKET_POOL, CVMX_FPA_PACKET_POOL_SIZE, packet_buffers, CVMX_FPA_WQE_POOL, CVMX_FPA_WQE_POOL_SIZE, work_queue_entries, CVMX_FPA_OUTPUT_BUFFER_POOL, CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE, pko_buffers, CVMX_FPA_TIMER_POOL, CVMX_FPA_TIMER_POOL_SIZE, tim_buffers, CVMX_FPA_DFA_POOL, CVMX_FPA_DFA_POOL_SIZE, dfa_buffers); }
/** * Allocate memory and initialize the FPA pools using memory * from cvmx-bootmem. Sizes of each element in the pools is * controlled by the cvmx-config.h header file. Specifying * zero for any parameter will cause that FPA pool to not be * setup. This is useful if you aren't using some of the * hardware and want to save memory. * * @param packet_buffers * Number of packet buffers to allocate * @param work_queue_entries * Number of work queue entries * @param pko_buffers * PKO Command buffers. You should at minimum have two per * each PKO queue. * @param tim_buffers * TIM ring buffer command queues. At least two per timer bucket * is recommended. * @param dfa_buffers * DFA command buffer. A relatively small (32 for example) * number should work. * @return Zero on success, non-zero if out of memory */ int cvmx_helper_initialize_fpa(int packet_buffers, int work_queue_entries, int pko_buffers, int tim_buffers, int dfa_buffers) { int packet_pool = (int)cvmx_fpa_get_packet_pool(); int wqe_pool = (int)cvmx_fpa_get_wqe_pool(); int outputbuffer_pool = (int)cvmx_fpa_get_pko_pool(); int timer_pool = (int)cvmx_fpa_get_timer_pool(); int dfa_pool = (int)cvmx_fpa_get_dfa_pool(); int rv; rv = __cvmx_helper_initialize_fpa(packet_pool, cvmx_fpa_get_packet_pool_block_size(), packet_buffers, wqe_pool, cvmx_fpa_get_wqe_pool_block_size(), work_queue_entries, outputbuffer_pool, cvmx_fpa_get_pko_pool_block_size(), pko_buffers, timer_pool, cvmx_fpa_get_timer_pool_block_size(), tim_buffers, dfa_pool, cvmx_fpa_get_dfa_pool_block_size(), dfa_buffers ); return rv; }