Lines Matching +full:8 +full:- +full:port
7 * Copyright (c) 2003-2008 Cavium Networks
14 * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
34 #include <asm/octeon/cvmx-config.h>
35 #include <asm/octeon/cvmx-pko.h>
36 #include <asm/octeon/cvmx-helper.h>
61 case 8: in __cvmx_pko_int()
64 return -1; in __cvmx_pko_int()
85 config.s.tail = (queue == (num_queues - 1)); in __cvmx_pko_iport_config()
95 (CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE - in __cvmx_pko_iport_config()
96 CVMX_PKO_COMMAND_BUFFER_SIZE_ADJUST * 8)); in __cvmx_pko_iport_config()
113 int port; in __cvmx_pko_queue_alloc_o68() local
115 for (port = 0; port < 48; port++) in __cvmx_pko_queue_alloc_o68()
116 __cvmx_pko_iport_config(port); in __cvmx_pko_queue_alloc_o68()
121 int port; in __cvmx_pko_port_map_o68() local
131 for (port = 0; port < 128; port++) { in __cvmx_pko_port_map_o68()
132 config.s.ipid = port; in __cvmx_pko_port_map_o68()
139 for (port = 0; port < 48; port++) { in __cvmx_pko_port_map_o68()
140 interface = cvmx_helper_get_interface_num(port); in __cvmx_pko_port_map_o68()
141 index = cvmx_helper_get_interface_index_num(port); in __cvmx_pko_port_map_o68()
146 config.s.ipid = port; in __cvmx_pko_port_map_o68()
153 index : port; in __cvmx_pko_port_map_o68()
172 const uint64_t priority = 8; in __cvmx_pko_chip_init()
196 config.s.size = CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE / 8 - 1; in cvmx_pko_initialize_global()
201 * Chip-specific setup. in cvmx_pko_initialize_global()
214 cvmx_helper_get_last_ipd_port(num_interfaces - 1); in cvmx_pko_initialize_global()
248 * always enable big endian for 3-word command. Does nothing in cvmx_pko_enable()
249 * for 2-word. in cvmx_pko_enable()
292 config.s.port = CVMX_PKO_MEM_QUEUE_PTRS_ILLEGAL_PID; in cvmx_pko_shutdown()
310 * Configure a output port and the associated queues for use.
312 * @port: Port to configure.
313 * @base_queue: First queue number to associate with this port.
314 * @num_queues: Number of queues to associate with this port
316 * allowed to be 0-8. A value of 8 get 8 times the traffic
326 cvmx_pko_status_t cvmx_pko_config_port(uint64_t port, uint64_t base_queue, in cvmx_pko_config_port() argument
334 int static_priority_base = -1; in cvmx_pko_config_port()
335 int static_priority_end = -1; in cvmx_pko_config_port()
340 if ((port >= CVMX_PKO_NUM_OUTPUT_PORTS) in cvmx_pko_config_port()
341 && (port != CVMX_PKO_MEM_QUEUE_PTRS_ILLEGAL_PID)) { in cvmx_pko_config_port()
342 cvmx_dprintf("ERROR: cvmx_pko_config_port: Invalid port %llu\n", in cvmx_pko_config_port()
343 (unsigned long long)port); in cvmx_pko_config_port()
354 if (port != CVMX_PKO_MEM_QUEUE_PTRS_ILLEGAL_PID) { in cvmx_pko_config_port()
362 if (static_priority_base == -1 in cvmx_pko_config_port()
367 if (static_priority_base != -1 in cvmx_pko_config_port()
368 && static_priority_end == -1 in cvmx_pko_config_port()
371 static_priority_end = queue - 1; in cvmx_pko_config_port()
372 else if (static_priority_base != -1 in cvmx_pko_config_port()
373 && static_priority_end == -1 in cvmx_pko_config_port()
374 && queue == num_queues - 1) in cvmx_pko_config_port()
383 if (static_priority_end != -1 in cvmx_pko_config_port()
403 cvmx_dprintf("Port %d: Static priority queue base: %d, " in cvmx_pko_config_port()
404 "end: %d\n", port, in cvmx_pko_config_port()
410 * are either both -1, or are valid start/end queue in cvmx_pko_config_port()
430 config.s.tail = queue == (num_queues - 1); in cvmx_pko_config_port()
432 config.s.port = port; in cvmx_pko_config_port()
470 case 8: in cvmx_pko_config_port()
488 if (port != CVMX_PKO_MEM_QUEUE_PTRS_ILLEGAL_PID) { in cvmx_pko_config_port()
495 - in cvmx_pko_config_port()
497 * 8); in cvmx_pko_config_port()
508 ("ERROR: cvmx_pko_config_port: Port already setup.\n"); in cvmx_pko_config_port()
538 * Show map of ports -> queues for different cores.
542 int core, port; in cvmx_pko_show_queue_map() local
545 cvmx_dprintf("port"); in cvmx_pko_show_queue_map()
546 for (port = 0; port < pko_output_ports; port++) in cvmx_pko_show_queue_map()
547 cvmx_dprintf("%3d ", port); in cvmx_pko_show_queue_map()
552 for (port = 0; port < pko_output_ports; port++) { in cvmx_pko_show_queue_map()
554 cvmx_pko_get_base_queue_per_core(port, in cvmx_pko_show_queue_map()
563 * Rate limit a PKO port to a max packets/sec. This function is only
566 * @port: Port to rate limit
573 int cvmx_pko_rate_limit_packets(int port, int packets_s, int burst) in cvmx_pko_rate_limit_packets() argument
579 pko_mem_port_rate0.s.pid = port; in cvmx_pko_rate_limit_packets()
581 cvmx_sysinfo_get()->cpu_clock_hz / packets_s / 16; in cvmx_pko_rate_limit_packets()
586 pko_mem_port_rate1.s.pid = port; in cvmx_pko_rate_limit_packets()
588 ((uint64_t) pko_mem_port_rate0.s.rate_pkt * burst) >> 8; in cvmx_pko_rate_limit_packets()
596 * Rate limit a PKO port to a max bits/sec. This function is only
599 * @port: Port to rate limit
606 int cvmx_pko_rate_limit_bits(int port, uint64_t bits_s, int burst) in cvmx_pko_rate_limit_bits() argument
610 uint64_t clock_rate = cvmx_sysinfo_get()->cpu_clock_hz; in cvmx_pko_rate_limit_bits()
614 pko_mem_port_rate0.s.pid = port; in cvmx_pko_rate_limit_bits()
616 * Each packet has a 12 bytes of interframe gap, an 8 byte in cvmx_pko_rate_limit_bits()
618 * per word count. Multiply by 8 to convert to bits and divide in cvmx_pko_rate_limit_bits()
621 pko_mem_port_rate0.s.rate_pkt = (12 + 8 + 4) * 8 * tokens_per_bit / 256; in cvmx_pko_rate_limit_bits()
622 /* Each 8 byte word has 64bits */ in cvmx_pko_rate_limit_bits()
626 pko_mem_port_rate1.s.pid = port; in cvmx_pko_rate_limit_bits()