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 | /** |
9 | * cvm_oct_get_buffer_ptr - convert packet data address to pointer |
10 | * @packet_ptr: Packet data hardware address |
11 | * |
12 | * Returns Packet buffer pointer |
13 | */ |
14 | static inline void *cvm_oct_get_buffer_ptr(union cvmx_buf_ptr packet_ptr) |
15 | { |
16 | return cvmx_phys_to_ptr(physical_address: ((packet_ptr.s.addr >> 7) - packet_ptr.s.back) |
17 | << 7); |
18 | } |
19 | |
20 | /** |
21 | * INTERFACE - convert IPD port to logical interface |
22 | * @ipd_port: Port to check |
23 | * |
24 | * Returns Logical interface |
25 | */ |
26 | static inline int INTERFACE(int ipd_port) |
27 | { |
28 | int interface; |
29 | |
30 | if (ipd_port == CVMX_PIP_NUM_INPUT_PORTS) |
31 | return 10; |
32 | interface = cvmx_helper_get_interface_num(ipd_port); |
33 | if (interface >= 0) |
34 | return interface; |
35 | panic(fmt: "Illegal ipd_port %d passed to %s\n" , ipd_port, __func__); |
36 | } |
37 | |
38 | /** |
39 | * INDEX - convert IPD/PKO port number to the port's interface index |
40 | * @ipd_port: Port to check |
41 | * |
42 | * Returns Index into interface port list |
43 | */ |
44 | static inline int INDEX(int ipd_port) |
45 | { |
46 | return cvmx_helper_get_interface_index_num(ipd_port); |
47 | } |
48 | |