forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-16 50a212ec906f7524620675f0c57357691c26c81f
kernel/arch/mips/cavium-octeon/executive/cvmx-helper-util.c
....@@ -81,93 +81,6 @@
8181 }
8282
8383 /**
84
- * Debug routine to dump the packet structure to the console
85
- *
86
- * @work: Work queue entry containing the packet to dump
87
- * Returns
88
- */
89
-int cvmx_helper_dump_packet(cvmx_wqe_t *work)
90
-{
91
- uint64_t count;
92
- uint64_t remaining_bytes;
93
- union cvmx_buf_ptr buffer_ptr;
94
- uint64_t start_of_buffer;
95
- uint8_t *data_address;
96
- uint8_t *end_of_data;
97
-
98
- cvmx_dprintf("Packet Length: %u\n", work->word1.len);
99
- cvmx_dprintf(" Input Port: %u\n", cvmx_wqe_get_port(work));
100
- cvmx_dprintf(" QoS: %u\n", cvmx_wqe_get_qos(work));
101
- cvmx_dprintf(" Buffers: %u\n", work->word2.s.bufs);
102
-
103
- if (work->word2.s.bufs == 0) {
104
- union cvmx_ipd_wqe_fpa_queue wqe_pool;
105
- wqe_pool.u64 = cvmx_read_csr(CVMX_IPD_WQE_FPA_QUEUE);
106
- buffer_ptr.u64 = 0;
107
- buffer_ptr.s.pool = wqe_pool.s.wqe_pool;
108
- buffer_ptr.s.size = 128;
109
- buffer_ptr.s.addr = cvmx_ptr_to_phys(work->packet_data);
110
- if (likely(!work->word2.s.not_IP)) {
111
- union cvmx_pip_ip_offset pip_ip_offset;
112
- pip_ip_offset.u64 = cvmx_read_csr(CVMX_PIP_IP_OFFSET);
113
- buffer_ptr.s.addr +=
114
- (pip_ip_offset.s.offset << 3) -
115
- work->word2.s.ip_offset;
116
- buffer_ptr.s.addr += (work->word2.s.is_v6 ^ 1) << 2;
117
- } else {
118
- /*
119
- * WARNING: This code assumes that the packet
120
- * is not RAW. If it was, we would use
121
- * PIP_GBL_CFG[RAW_SHF] instead of
122
- * PIP_GBL_CFG[NIP_SHF].
123
- */
124
- union cvmx_pip_gbl_cfg pip_gbl_cfg;
125
- pip_gbl_cfg.u64 = cvmx_read_csr(CVMX_PIP_GBL_CFG);
126
- buffer_ptr.s.addr += pip_gbl_cfg.s.nip_shf;
127
- }
128
- } else
129
- buffer_ptr = work->packet_ptr;
130
- remaining_bytes = work->word1.len;
131
-
132
- while (remaining_bytes) {
133
- start_of_buffer =
134
- ((buffer_ptr.s.addr >> 7) - buffer_ptr.s.back) << 7;
135
- cvmx_dprintf(" Buffer Start:%llx\n",
136
- (unsigned long long)start_of_buffer);
137
- cvmx_dprintf(" Buffer I : %u\n", buffer_ptr.s.i);
138
- cvmx_dprintf(" Buffer Back: %u\n", buffer_ptr.s.back);
139
- cvmx_dprintf(" Buffer Pool: %u\n", buffer_ptr.s.pool);
140
- cvmx_dprintf(" Buffer Data: %llx\n",
141
- (unsigned long long)buffer_ptr.s.addr);
142
- cvmx_dprintf(" Buffer Size: %u\n", buffer_ptr.s.size);
143
-
144
- cvmx_dprintf("\t\t");
145
- data_address = (uint8_t *) cvmx_phys_to_ptr(buffer_ptr.s.addr);
146
- end_of_data = data_address + buffer_ptr.s.size;
147
- count = 0;
148
- while (data_address < end_of_data) {
149
- if (remaining_bytes == 0)
150
- break;
151
- else
152
- remaining_bytes--;
153
- cvmx_dprintf("%02x", (unsigned int)*data_address);
154
- data_address++;
155
- if (remaining_bytes && (count == 7)) {
156
- cvmx_dprintf("\n\t\t");
157
- count = 0;
158
- } else
159
- count++;
160
- }
161
- cvmx_dprintf("\n");
162
-
163
- if (remaining_bytes)
164
- buffer_ptr = *(union cvmx_buf_ptr *)
165
- cvmx_phys_to_ptr(buffer_ptr.s.addr - 8);
166
- }
167
- return 0;
168
-}
169
-
170
-/**
17184 * Setup Random Early Drop on a specific input queue
17285 *
17386 * @queue: Input queue to setup RED on (0-7)
....@@ -179,7 +92,8 @@
17992 * than this many free packet buffers in FPA 0.
18093 * Returns Zero on success. Negative on failure
18194 */
182
-int cvmx_helper_setup_red_queue(int queue, int pass_thresh, int drop_thresh)
95
+static int cvmx_helper_setup_red_queue(int queue, int pass_thresh,
96
+ int drop_thresh)
18397 {
18498 union cvmx_ipd_qosx_red_marks red_marks;
18599 union cvmx_ipd_red_quex_param red_param;