diff options
author | Jesse Brandeburg <jesse.brandeburg@intel.com> | 2014-02-11 20:45:33 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2014-03-06 21:41:31 -0500 |
commit | 206812b5fccb808d1194344eaa942f68f59b2630 (patch) | |
tree | 081381fd365e09b7b8060af8f7faeb90df01778f /drivers/net/ethernet/intel/i40evf/i40e_common.c | |
parent | cc6456af2c05eb02ec1efcddde688ac99da76e57 (diff) |
i40e/i40evf: i40e implementation for skb_set_hash
Original comment from Tom Herbert <therbert@google.com>
Drivers should call skb_set_hash to set the hash and its type
in an skbuff.
This patch builds upon Tom's original implementation and adds
the L4 type return when we know it is an L4 hash.
This requires use of the ptype decoder ring, so enable it.
Change-ID: I2f9fa86d1a6add58cff13386f7f4238b1abcc468
CC: Tom Herbert <therbert@google.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Acked-by: Shannon Nelson <shannon.nelson@intel.com>
Acked-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/i40evf/i40e_common.c')
-rw-r--r-- | drivers/net/ethernet/intel/i40evf/i40e_common.c | 366 |
1 files changed, 366 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_common.c b/drivers/net/ethernet/intel/i40evf/i40e_common.c index 7b13953b28c4..78618af271cf 100644 --- a/drivers/net/ethernet/intel/i40evf/i40e_common.c +++ b/drivers/net/ethernet/intel/i40evf/i40e_common.c | |||
@@ -160,6 +160,372 @@ i40e_status i40evf_aq_queue_shutdown(struct i40e_hw *hw, | |||
160 | } | 160 | } |
161 | 161 | ||
162 | 162 | ||
163 | /* The i40e_ptype_lookup table is used to convert from the 8-bit ptype in the | ||
164 | * hardware to a bit-field that can be used by SW to more easily determine the | ||
165 | * packet type. | ||
166 | * | ||
167 | * Macros are used to shorten the table lines and make this table human | ||
168 | * readable. | ||
169 | * | ||
170 | * We store the PTYPE in the top byte of the bit field - this is just so that | ||
171 | * we can check that the table doesn't have a row missing, as the index into | ||
172 | * the table should be the PTYPE. | ||
173 | * | ||
174 | * Typical work flow: | ||
175 | * | ||
176 | * IF NOT i40e_ptype_lookup[ptype].known | ||
177 | * THEN | ||
178 | * Packet is unknown | ||
179 | * ELSE IF i40e_ptype_lookup[ptype].outer_ip == I40E_RX_PTYPE_OUTER_IP | ||
180 | * Use the rest of the fields to look at the tunnels, inner protocols, etc | ||
181 | * ELSE | ||
182 | * Use the enum i40e_rx_l2_ptype to decode the packet type | ||
183 | * ENDIF | ||
184 | */ | ||
185 | |||
186 | /* macro to make the table lines short */ | ||
187 | #define I40E_PTT(PTYPE, OUTER_IP, OUTER_IP_VER, OUTER_FRAG, T, TE, TEF, I, PL)\ | ||
188 | { PTYPE, \ | ||
189 | 1, \ | ||
190 | I40E_RX_PTYPE_OUTER_##OUTER_IP, \ | ||
191 | I40E_RX_PTYPE_OUTER_##OUTER_IP_VER, \ | ||
192 | I40E_RX_PTYPE_##OUTER_FRAG, \ | ||
193 | I40E_RX_PTYPE_TUNNEL_##T, \ | ||
194 | I40E_RX_PTYPE_TUNNEL_END_##TE, \ | ||
195 | I40E_RX_PTYPE_##TEF, \ | ||
196 | I40E_RX_PTYPE_INNER_PROT_##I, \ | ||
197 | I40E_RX_PTYPE_PAYLOAD_LAYER_##PL } | ||
198 | |||
199 | #define I40E_PTT_UNUSED_ENTRY(PTYPE) \ | ||
200 | { PTYPE, 0, 0, 0, 0, 0, 0, 0, 0, 0 } | ||
201 | |||
202 | /* shorter macros makes the table fit but are terse */ | ||
203 | #define I40E_RX_PTYPE_NOF I40E_RX_PTYPE_NOT_FRAG | ||
204 | #define I40E_RX_PTYPE_FRG I40E_RX_PTYPE_FRAG | ||
205 | #define I40E_RX_PTYPE_INNER_PROT_TS I40E_RX_PTYPE_INNER_PROT_TIMESYNC | ||
206 | |||
207 | /* Lookup table mapping the HW PTYPE to the bit field for decoding */ | ||
208 | struct i40e_rx_ptype_decoded i40e_ptype_lookup[] = { | ||
209 | /* L2 Packet types */ | ||
210 | I40E_PTT_UNUSED_ENTRY(0), | ||
211 | I40E_PTT(1, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), | ||
212 | I40E_PTT(2, L2, NONE, NOF, NONE, NONE, NOF, TS, PAY2), | ||
213 | I40E_PTT(3, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), | ||
214 | I40E_PTT_UNUSED_ENTRY(4), | ||
215 | I40E_PTT_UNUSED_ENTRY(5), | ||
216 | I40E_PTT(6, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), | ||
217 | I40E_PTT(7, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), | ||
218 | I40E_PTT_UNUSED_ENTRY(8), | ||
219 | I40E_PTT_UNUSED_ENTRY(9), | ||
220 | I40E_PTT(10, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), | ||
221 | I40E_PTT(11, L2, NONE, NOF, NONE, NONE, NOF, NONE, NONE), | ||
222 | I40E_PTT(12, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), | ||
223 | I40E_PTT(13, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), | ||
224 | I40E_PTT(14, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), | ||
225 | I40E_PTT(15, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), | ||
226 | I40E_PTT(16, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), | ||
227 | I40E_PTT(17, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), | ||
228 | I40E_PTT(18, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), | ||
229 | I40E_PTT(19, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), | ||
230 | I40E_PTT(20, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), | ||
231 | I40E_PTT(21, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), | ||
232 | |||
233 | /* Non Tunneled IPv4 */ | ||
234 | I40E_PTT(22, IP, IPV4, FRG, NONE, NONE, NOF, NONE, PAY3), | ||
235 | I40E_PTT(23, IP, IPV4, NOF, NONE, NONE, NOF, NONE, PAY3), | ||
236 | I40E_PTT(24, IP, IPV4, NOF, NONE, NONE, NOF, UDP, PAY4), | ||
237 | I40E_PTT_UNUSED_ENTRY(25), | ||
238 | I40E_PTT(26, IP, IPV4, NOF, NONE, NONE, NOF, TCP, PAY4), | ||
239 | I40E_PTT(27, IP, IPV4, NOF, NONE, NONE, NOF, SCTP, PAY4), | ||
240 | I40E_PTT(28, IP, IPV4, NOF, NONE, NONE, NOF, ICMP, PAY4), | ||
241 | |||
242 | /* IPv4 --> IPv4 */ | ||
243 | I40E_PTT(29, IP, IPV4, NOF, IP_IP, IPV4, FRG, NONE, PAY3), | ||
244 | I40E_PTT(30, IP, IPV4, NOF, IP_IP, IPV4, NOF, NONE, PAY3), | ||
245 | I40E_PTT(31, IP, IPV4, NOF, IP_IP, IPV4, NOF, UDP, PAY4), | ||
246 | I40E_PTT_UNUSED_ENTRY(32), | ||
247 | I40E_PTT(33, IP, IPV4, NOF, IP_IP, IPV4, NOF, TCP, PAY4), | ||
248 | I40E_PTT(34, IP, IPV4, NOF, IP_IP, IPV4, NOF, SCTP, PAY4), | ||
249 | I40E_PTT(35, IP, IPV4, NOF, IP_IP, IPV4, NOF, ICMP, PAY4), | ||
250 | |||
251 | /* IPv4 --> IPv6 */ | ||
252 | I40E_PTT(36, IP, IPV4, NOF, IP_IP, IPV6, FRG, NONE, PAY3), | ||
253 | I40E_PTT(37, IP, IPV4, NOF, IP_IP, IPV6, NOF, NONE, PAY3), | ||
254 | I40E_PTT(38, IP, IPV4, NOF, IP_IP, IPV6, NOF, UDP, PAY4), | ||
255 | I40E_PTT_UNUSED_ENTRY(39), | ||
256 | I40E_PTT(40, IP, IPV4, NOF, IP_IP, IPV6, NOF, TCP, PAY4), | ||
257 | I40E_PTT(41, IP, IPV4, NOF, IP_IP, IPV6, NOF, SCTP, PAY4), | ||
258 | I40E_PTT(42, IP, IPV4, NOF, IP_IP, IPV6, NOF, ICMP, PAY4), | ||
259 | |||
260 | /* IPv4 --> GRE/NAT */ | ||
261 | I40E_PTT(43, IP, IPV4, NOF, IP_GRENAT, NONE, NOF, NONE, PAY3), | ||
262 | |||
263 | /* IPv4 --> GRE/NAT --> IPv4 */ | ||
264 | I40E_PTT(44, IP, IPV4, NOF, IP_GRENAT, IPV4, FRG, NONE, PAY3), | ||
265 | I40E_PTT(45, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, NONE, PAY3), | ||
266 | I40E_PTT(46, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, UDP, PAY4), | ||
267 | I40E_PTT_UNUSED_ENTRY(47), | ||
268 | I40E_PTT(48, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, TCP, PAY4), | ||
269 | I40E_PTT(49, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, SCTP, PAY4), | ||
270 | I40E_PTT(50, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, ICMP, PAY4), | ||
271 | |||
272 | /* IPv4 --> GRE/NAT --> IPv6 */ | ||
273 | I40E_PTT(51, IP, IPV4, NOF, IP_GRENAT, IPV6, FRG, NONE, PAY3), | ||
274 | I40E_PTT(52, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, NONE, PAY3), | ||
275 | I40E_PTT(53, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, UDP, PAY4), | ||
276 | I40E_PTT_UNUSED_ENTRY(54), | ||
277 | I40E_PTT(55, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, TCP, PAY4), | ||
278 | I40E_PTT(56, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, SCTP, PAY4), | ||
279 | I40E_PTT(57, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, ICMP, PAY4), | ||
280 | |||
281 | /* IPv4 --> GRE/NAT --> MAC */ | ||
282 | I40E_PTT(58, IP, IPV4, NOF, IP_GRENAT_MAC, NONE, NOF, NONE, PAY3), | ||
283 | |||
284 | /* IPv4 --> GRE/NAT --> MAC --> IPv4 */ | ||
285 | I40E_PTT(59, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, FRG, NONE, PAY3), | ||
286 | I40E_PTT(60, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, NONE, PAY3), | ||
287 | I40E_PTT(61, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, UDP, PAY4), | ||
288 | I40E_PTT_UNUSED_ENTRY(62), | ||
289 | I40E_PTT(63, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, TCP, PAY4), | ||
290 | I40E_PTT(64, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, SCTP, PAY4), | ||
291 | I40E_PTT(65, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, ICMP, PAY4), | ||
292 | |||
293 | /* IPv4 --> GRE/NAT -> MAC --> IPv6 */ | ||
294 | I40E_PTT(66, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, FRG, NONE, PAY3), | ||
295 | I40E_PTT(67, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, NONE, PAY3), | ||
296 | I40E_PTT(68, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, UDP, PAY4), | ||
297 | I40E_PTT_UNUSED_ENTRY(69), | ||
298 | I40E_PTT(70, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, TCP, PAY4), | ||
299 | I40E_PTT(71, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, SCTP, PAY4), | ||
300 | I40E_PTT(72, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, ICMP, PAY4), | ||
301 | |||
302 | /* IPv4 --> GRE/NAT --> MAC/VLAN */ | ||
303 | I40E_PTT(73, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, NONE, NOF, NONE, PAY3), | ||
304 | |||
305 | /* IPv4 ---> GRE/NAT -> MAC/VLAN --> IPv4 */ | ||
306 | I40E_PTT(74, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, FRG, NONE, PAY3), | ||
307 | I40E_PTT(75, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, NONE, PAY3), | ||
308 | I40E_PTT(76, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, UDP, PAY4), | ||
309 | I40E_PTT_UNUSED_ENTRY(77), | ||
310 | I40E_PTT(78, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, TCP, PAY4), | ||
311 | I40E_PTT(79, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, SCTP, PAY4), | ||
312 | I40E_PTT(80, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, ICMP, PAY4), | ||
313 | |||
314 | /* IPv4 -> GRE/NAT -> MAC/VLAN --> IPv6 */ | ||
315 | I40E_PTT(81, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, FRG, NONE, PAY3), | ||
316 | I40E_PTT(82, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, NONE, PAY3), | ||
317 | I40E_PTT(83, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, UDP, PAY4), | ||
318 | I40E_PTT_UNUSED_ENTRY(84), | ||
319 | I40E_PTT(85, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, TCP, PAY4), | ||
320 | I40E_PTT(86, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, SCTP, PAY4), | ||
321 | I40E_PTT(87, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, ICMP, PAY4), | ||
322 | |||
323 | /* Non Tunneled IPv6 */ | ||
324 | I40E_PTT(88, IP, IPV6, FRG, NONE, NONE, NOF, NONE, PAY3), | ||
325 | I40E_PTT(89, IP, IPV6, NOF, NONE, NONE, NOF, NONE, PAY3), | ||
326 | I40E_PTT(90, IP, IPV6, NOF, NONE, NONE, NOF, UDP, PAY3), | ||
327 | I40E_PTT_UNUSED_ENTRY(91), | ||
328 | I40E_PTT(92, IP, IPV6, NOF, NONE, NONE, NOF, TCP, PAY4), | ||
329 | I40E_PTT(93, IP, IPV6, NOF, NONE, NONE, NOF, SCTP, PAY4), | ||
330 | I40E_PTT(94, IP, IPV6, NOF, NONE, NONE, NOF, ICMP, PAY4), | ||
331 | |||
332 | /* IPv6 --> IPv4 */ | ||
333 | I40E_PTT(95, IP, IPV6, NOF, IP_IP, IPV4, FRG, NONE, PAY3), | ||
334 | I40E_PTT(96, IP, IPV6, NOF, IP_IP, IPV4, NOF, NONE, PAY3), | ||
335 | I40E_PTT(97, IP, IPV6, NOF, IP_IP, IPV4, NOF, UDP, PAY4), | ||
336 | I40E_PTT_UNUSED_ENTRY(98), | ||
337 | I40E_PTT(99, IP, IPV6, NOF, IP_IP, IPV4, NOF, TCP, PAY4), | ||
338 | I40E_PTT(100, IP, IPV6, NOF, IP_IP, IPV4, NOF, SCTP, PAY4), | ||
339 | I40E_PTT(101, IP, IPV6, NOF, IP_IP, IPV4, NOF, ICMP, PAY4), | ||
340 | |||
341 | /* IPv6 --> IPv6 */ | ||
342 | I40E_PTT(102, IP, IPV6, NOF, IP_IP, IPV6, FRG, NONE, PAY3), | ||
343 | I40E_PTT(103, IP, IPV6, NOF, IP_IP, IPV6, NOF, NONE, PAY3), | ||
344 | I40E_PTT(104, IP, IPV6, NOF, IP_IP, IPV6, NOF, UDP, PAY4), | ||
345 | I40E_PTT_UNUSED_ENTRY(105), | ||
346 | I40E_PTT(106, IP, IPV6, NOF, IP_IP, IPV6, NOF, TCP, PAY4), | ||
347 | I40E_PTT(107, IP, IPV6, NOF, IP_IP, IPV6, NOF, SCTP, PAY4), | ||
348 | I40E_PTT(108, IP, IPV6, NOF, IP_IP, IPV6, NOF, ICMP, PAY4), | ||
349 | |||
350 | /* IPv6 --> GRE/NAT */ | ||
351 | I40E_PTT(109, IP, IPV6, NOF, IP_GRENAT, NONE, NOF, NONE, PAY3), | ||
352 | |||
353 | /* IPv6 --> GRE/NAT -> IPv4 */ | ||
354 | I40E_PTT(110, IP, IPV6, NOF, IP_GRENAT, IPV4, FRG, NONE, PAY3), | ||
355 | I40E_PTT(111, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, NONE, PAY3), | ||
356 | I40E_PTT(112, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, UDP, PAY4), | ||
357 | I40E_PTT_UNUSED_ENTRY(113), | ||
358 | I40E_PTT(114, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, TCP, PAY4), | ||
359 | I40E_PTT(115, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, SCTP, PAY4), | ||
360 | I40E_PTT(116, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, ICMP, PAY4), | ||
361 | |||
362 | /* IPv6 --> GRE/NAT -> IPv6 */ | ||
363 | I40E_PTT(117, IP, IPV6, NOF, IP_GRENAT, IPV6, FRG, NONE, PAY3), | ||
364 | I40E_PTT(118, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, NONE, PAY3), | ||
365 | I40E_PTT(119, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, UDP, PAY4), | ||
366 | I40E_PTT_UNUSED_ENTRY(120), | ||
367 | I40E_PTT(121, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, TCP, PAY4), | ||
368 | I40E_PTT(122, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, SCTP, PAY4), | ||
369 | I40E_PTT(123, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, ICMP, PAY4), | ||
370 | |||
371 | /* IPv6 --> GRE/NAT -> MAC */ | ||
372 | I40E_PTT(124, IP, IPV6, NOF, IP_GRENAT_MAC, NONE, NOF, NONE, PAY3), | ||
373 | |||
374 | /* IPv6 --> GRE/NAT -> MAC -> IPv4 */ | ||
375 | I40E_PTT(125, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, FRG, NONE, PAY3), | ||
376 | I40E_PTT(126, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, NONE, PAY3), | ||
377 | I40E_PTT(127, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, UDP, PAY4), | ||
378 | I40E_PTT_UNUSED_ENTRY(128), | ||
379 | I40E_PTT(129, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, TCP, PAY4), | ||
380 | I40E_PTT(130, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, SCTP, PAY4), | ||
381 | I40E_PTT(131, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, ICMP, PAY4), | ||
382 | |||
383 | /* IPv6 --> GRE/NAT -> MAC -> IPv6 */ | ||
384 | I40E_PTT(132, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, FRG, NONE, PAY3), | ||
385 | I40E_PTT(133, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, NONE, PAY3), | ||
386 | I40E_PTT(134, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, UDP, PAY4), | ||
387 | I40E_PTT_UNUSED_ENTRY(135), | ||
388 | I40E_PTT(136, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, TCP, PAY4), | ||
389 | I40E_PTT(137, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, SCTP, PAY4), | ||
390 | I40E_PTT(138, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, ICMP, PAY4), | ||
391 | |||
392 | /* IPv6 --> GRE/NAT -> MAC/VLAN */ | ||
393 | I40E_PTT(139, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, NONE, NOF, NONE, PAY3), | ||
394 | |||
395 | /* IPv6 --> GRE/NAT -> MAC/VLAN --> IPv4 */ | ||
396 | I40E_PTT(140, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, FRG, NONE, PAY3), | ||
397 | I40E_PTT(141, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, NONE, PAY3), | ||
398 | I40E_PTT(142, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, UDP, PAY4), | ||
399 | I40E_PTT_UNUSED_ENTRY(143), | ||
400 | I40E_PTT(144, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, TCP, PAY4), | ||
401 | I40E_PTT(145, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, SCTP, PAY4), | ||
402 | I40E_PTT(146, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, ICMP, PAY4), | ||
403 | |||
404 | /* IPv6 --> GRE/NAT -> MAC/VLAN --> IPv6 */ | ||
405 | I40E_PTT(147, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, FRG, NONE, PAY3), | ||
406 | I40E_PTT(148, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, NONE, PAY3), | ||
407 | I40E_PTT(149, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, UDP, PAY4), | ||
408 | I40E_PTT_UNUSED_ENTRY(150), | ||
409 | I40E_PTT(151, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, TCP, PAY4), | ||
410 | I40E_PTT(152, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, SCTP, PAY4), | ||
411 | I40E_PTT(153, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, ICMP, PAY4), | ||
412 | |||
413 | /* unused entries */ | ||
414 | I40E_PTT_UNUSED_ENTRY(154), | ||
415 | I40E_PTT_UNUSED_ENTRY(155), | ||
416 | I40E_PTT_UNUSED_ENTRY(156), | ||
417 | I40E_PTT_UNUSED_ENTRY(157), | ||
418 | I40E_PTT_UNUSED_ENTRY(158), | ||
419 | I40E_PTT_UNUSED_ENTRY(159), | ||
420 | |||
421 | I40E_PTT_UNUSED_ENTRY(160), | ||
422 | I40E_PTT_UNUSED_ENTRY(161), | ||
423 | I40E_PTT_UNUSED_ENTRY(162), | ||
424 | I40E_PTT_UNUSED_ENTRY(163), | ||
425 | I40E_PTT_UNUSED_ENTRY(164), | ||
426 | I40E_PTT_UNUSED_ENTRY(165), | ||
427 | I40E_PTT_UNUSED_ENTRY(166), | ||
428 | I40E_PTT_UNUSED_ENTRY(167), | ||
429 | I40E_PTT_UNUSED_ENTRY(168), | ||
430 | I40E_PTT_UNUSED_ENTRY(169), | ||
431 | |||
432 | I40E_PTT_UNUSED_ENTRY(170), | ||
433 | I40E_PTT_UNUSED_ENTRY(171), | ||
434 | I40E_PTT_UNUSED_ENTRY(172), | ||
435 | I40E_PTT_UNUSED_ENTRY(173), | ||
436 | I40E_PTT_UNUSED_ENTRY(174), | ||
437 | I40E_PTT_UNUSED_ENTRY(175), | ||
438 | I40E_PTT_UNUSED_ENTRY(176), | ||
439 | I40E_PTT_UNUSED_ENTRY(177), | ||
440 | I40E_PTT_UNUSED_ENTRY(178), | ||
441 | I40E_PTT_UNUSED_ENTRY(179), | ||
442 | |||
443 | I40E_PTT_UNUSED_ENTRY(180), | ||
444 | I40E_PTT_UNUSED_ENTRY(181), | ||
445 | I40E_PTT_UNUSED_ENTRY(182), | ||
446 | I40E_PTT_UNUSED_ENTRY(183), | ||
447 | I40E_PTT_UNUSED_ENTRY(184), | ||
448 | I40E_PTT_UNUSED_ENTRY(185), | ||
449 | I40E_PTT_UNUSED_ENTRY(186), | ||
450 | I40E_PTT_UNUSED_ENTRY(187), | ||
451 | I40E_PTT_UNUSED_ENTRY(188), | ||
452 | I40E_PTT_UNUSED_ENTRY(189), | ||
453 | |||
454 | I40E_PTT_UNUSED_ENTRY(190), | ||
455 | I40E_PTT_UNUSED_ENTRY(191), | ||
456 | I40E_PTT_UNUSED_ENTRY(192), | ||
457 | I40E_PTT_UNUSED_ENTRY(193), | ||
458 | I40E_PTT_UNUSED_ENTRY(194), | ||
459 | I40E_PTT_UNUSED_ENTRY(195), | ||
460 | I40E_PTT_UNUSED_ENTRY(196), | ||
461 | I40E_PTT_UNUSED_ENTRY(197), | ||
462 | I40E_PTT_UNUSED_ENTRY(198), | ||
463 | I40E_PTT_UNUSED_ENTRY(199), | ||
464 | |||
465 | I40E_PTT_UNUSED_ENTRY(200), | ||
466 | I40E_PTT_UNUSED_ENTRY(201), | ||
467 | I40E_PTT_UNUSED_ENTRY(202), | ||
468 | I40E_PTT_UNUSED_ENTRY(203), | ||
469 | I40E_PTT_UNUSED_ENTRY(204), | ||
470 | I40E_PTT_UNUSED_ENTRY(205), | ||
471 | I40E_PTT_UNUSED_ENTRY(206), | ||
472 | I40E_PTT_UNUSED_ENTRY(207), | ||
473 | I40E_PTT_UNUSED_ENTRY(208), | ||
474 | I40E_PTT_UNUSED_ENTRY(209), | ||
475 | |||
476 | I40E_PTT_UNUSED_ENTRY(210), | ||
477 | I40E_PTT_UNUSED_ENTRY(211), | ||
478 | I40E_PTT_UNUSED_ENTRY(212), | ||
479 | I40E_PTT_UNUSED_ENTRY(213), | ||
480 | I40E_PTT_UNUSED_ENTRY(214), | ||
481 | I40E_PTT_UNUSED_ENTRY(215), | ||
482 | I40E_PTT_UNUSED_ENTRY(216), | ||
483 | I40E_PTT_UNUSED_ENTRY(217), | ||
484 | I40E_PTT_UNUSED_ENTRY(218), | ||
485 | I40E_PTT_UNUSED_ENTRY(219), | ||
486 | |||
487 | I40E_PTT_UNUSED_ENTRY(220), | ||
488 | I40E_PTT_UNUSED_ENTRY(221), | ||
489 | I40E_PTT_UNUSED_ENTRY(222), | ||
490 | I40E_PTT_UNUSED_ENTRY(223), | ||
491 | I40E_PTT_UNUSED_ENTRY(224), | ||
492 | I40E_PTT_UNUSED_ENTRY(225), | ||
493 | I40E_PTT_UNUSED_ENTRY(226), | ||
494 | I40E_PTT_UNUSED_ENTRY(227), | ||
495 | I40E_PTT_UNUSED_ENTRY(228), | ||
496 | I40E_PTT_UNUSED_ENTRY(229), | ||
497 | |||
498 | I40E_PTT_UNUSED_ENTRY(230), | ||
499 | I40E_PTT_UNUSED_ENTRY(231), | ||
500 | I40E_PTT_UNUSED_ENTRY(232), | ||
501 | I40E_PTT_UNUSED_ENTRY(233), | ||
502 | I40E_PTT_UNUSED_ENTRY(234), | ||
503 | I40E_PTT_UNUSED_ENTRY(235), | ||
504 | I40E_PTT_UNUSED_ENTRY(236), | ||
505 | I40E_PTT_UNUSED_ENTRY(237), | ||
506 | I40E_PTT_UNUSED_ENTRY(238), | ||
507 | I40E_PTT_UNUSED_ENTRY(239), | ||
508 | |||
509 | I40E_PTT_UNUSED_ENTRY(240), | ||
510 | I40E_PTT_UNUSED_ENTRY(241), | ||
511 | I40E_PTT_UNUSED_ENTRY(242), | ||
512 | I40E_PTT_UNUSED_ENTRY(243), | ||
513 | I40E_PTT_UNUSED_ENTRY(244), | ||
514 | I40E_PTT_UNUSED_ENTRY(245), | ||
515 | I40E_PTT_UNUSED_ENTRY(246), | ||
516 | I40E_PTT_UNUSED_ENTRY(247), | ||
517 | I40E_PTT_UNUSED_ENTRY(248), | ||
518 | I40E_PTT_UNUSED_ENTRY(249), | ||
519 | |||
520 | I40E_PTT_UNUSED_ENTRY(250), | ||
521 | I40E_PTT_UNUSED_ENTRY(251), | ||
522 | I40E_PTT_UNUSED_ENTRY(252), | ||
523 | I40E_PTT_UNUSED_ENTRY(253), | ||
524 | I40E_PTT_UNUSED_ENTRY(254), | ||
525 | I40E_PTT_UNUSED_ENTRY(255) | ||
526 | }; | ||
527 | |||
528 | |||
163 | /** | 529 | /** |
164 | * i40e_aq_send_msg_to_pf | 530 | * i40e_aq_send_msg_to_pf |
165 | * @hw: pointer to the hardware structure | 531 | * @hw: pointer to the hardware structure |