Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: intel: move RSS packet classifier types to libie

The Intel i40e, iavf, and ice drivers all include a definition of the
packet classifier filter types used to program RSS hash enable bits. For
i40e, these bits are used for both the PF and VF to configure the PFQF_HENA
and VFQF_HENA registers.

For ice and iAVF, these bits are used to communicate the desired hash
enable filter over virtchnl via its struct virtchnl_rss_hashena. The
virtchnl.h header makes no mention of where the bit definitions reside.

Maintaining a separate copy of these bits across three drivers is
cumbersome. Move the definition to libie as a new pctype.h header file.
Each driver can include this, and drop its own definition.

The ice implementation also defined a ICE_AVF_FLOW_FIELD_INVALID, intending
to use this to indicate when there were no hash enable bits set. This is
confusing, since the enumeration is using bit positions. A value of 0
*should* indicate the first bit. Instead, rewrite the code that uses
ICE_AVF_FLOW_FIELD_INVALID to just check if the avf_hash is zero. From
context this should be clear that we're checking if none of the bits are
set.

The values are kept as bit positions instead of encoding the BIT_ULL
directly into their value. While most users will simply use BIT_ULL
immediately, i40e uses the macros both with BIT_ULL and test_bit/set_bit
calls.

Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>

authored by

Jacob Keller and committed by
Tony Nguyen
141d0c90 78b2d990

+185 -230
+41 -40
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
··· 3 3 4 4 /* ethtool support for i40e */ 5 5 6 + #include <linux/net/intel/libie/pctype.h> 6 7 #include "i40e_devids.h" 7 8 #include "i40e_diag.h" 8 9 #include "i40e_txrx_common.h" ··· 3147 3146 3148 3147 switch (cmd->flow_type) { 3149 3148 case TCP_V4_FLOW: 3150 - flow_pctype = I40E_FILTER_PCTYPE_NONF_IPV4_TCP; 3149 + flow_pctype = LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP; 3151 3150 break; 3152 3151 case UDP_V4_FLOW: 3153 - flow_pctype = I40E_FILTER_PCTYPE_NONF_IPV4_UDP; 3152 + flow_pctype = LIBIE_FILTER_PCTYPE_NONF_IPV4_UDP; 3154 3153 break; 3155 3154 case TCP_V6_FLOW: 3156 - flow_pctype = I40E_FILTER_PCTYPE_NONF_IPV6_TCP; 3155 + flow_pctype = LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP; 3157 3156 break; 3158 3157 case UDP_V6_FLOW: 3159 - flow_pctype = I40E_FILTER_PCTYPE_NONF_IPV6_UDP; 3158 + flow_pctype = LIBIE_FILTER_PCTYPE_NONF_IPV6_UDP; 3160 3159 break; 3161 3160 case SCTP_V4_FLOW: 3162 3161 case AH_ESP_V4_FLOW: ··· 3413 3412 3414 3413 switch (rule->flow_type) { 3415 3414 case SCTP_V4_FLOW: 3416 - index = I40E_FILTER_PCTYPE_NONF_IPV4_SCTP; 3415 + index = LIBIE_FILTER_PCTYPE_NONF_IPV4_SCTP; 3417 3416 break; 3418 3417 case TCP_V4_FLOW: 3419 - index = I40E_FILTER_PCTYPE_NONF_IPV4_TCP; 3418 + index = LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP; 3420 3419 break; 3421 3420 case UDP_V4_FLOW: 3422 - index = I40E_FILTER_PCTYPE_NONF_IPV4_UDP; 3421 + index = LIBIE_FILTER_PCTYPE_NONF_IPV4_UDP; 3423 3422 break; 3424 3423 case SCTP_V6_FLOW: 3425 - index = I40E_FILTER_PCTYPE_NONF_IPV6_SCTP; 3424 + index = LIBIE_FILTER_PCTYPE_NONF_IPV6_SCTP; 3426 3425 break; 3427 3426 case TCP_V6_FLOW: 3428 - index = I40E_FILTER_PCTYPE_NONF_IPV6_TCP; 3427 + index = LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP; 3429 3428 break; 3430 3429 case UDP_V6_FLOW: 3431 - index = I40E_FILTER_PCTYPE_NONF_IPV6_UDP; 3430 + index = LIBIE_FILTER_PCTYPE_NONF_IPV6_UDP; 3432 3431 break; 3433 3432 case IP_USER_FLOW: 3434 - index = I40E_FILTER_PCTYPE_NONF_IPV4_OTHER; 3433 + index = LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER; 3435 3434 break; 3436 3435 case IPV6_USER_FLOW: 3437 - index = I40E_FILTER_PCTYPE_NONF_IPV6_OTHER; 3436 + index = LIBIE_FILTER_PCTYPE_NONF_IPV6_OTHER; 3438 3437 break; 3439 3438 default: 3440 3439 /* If we have stored a filter with a flow type not listed here ··· 3644 3643 3645 3644 switch (nfc->flow_type) { 3646 3645 case TCP_V4_FLOW: 3647 - set_bit(I40E_FILTER_PCTYPE_NONF_IPV4_TCP, flow_pctypes); 3646 + set_bit(LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP, flow_pctypes); 3648 3647 if (test_bit(I40E_HW_CAP_MULTI_TCP_UDP_RSS_PCTYPE, 3649 3648 pf->hw.caps)) 3650 - set_bit(I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK, 3649 + set_bit(LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK, 3651 3650 flow_pctypes); 3652 3651 break; 3653 3652 case TCP_V6_FLOW: 3654 - set_bit(I40E_FILTER_PCTYPE_NONF_IPV6_TCP, flow_pctypes); 3653 + set_bit(LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP, flow_pctypes); 3655 3654 if (test_bit(I40E_HW_CAP_MULTI_TCP_UDP_RSS_PCTYPE, 3656 3655 pf->hw.caps)) 3657 - set_bit(I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK, 3656 + set_bit(LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK, 3658 3657 flow_pctypes); 3659 3658 break; 3660 3659 case UDP_V4_FLOW: 3661 - set_bit(I40E_FILTER_PCTYPE_NONF_IPV4_UDP, flow_pctypes); 3660 + set_bit(LIBIE_FILTER_PCTYPE_NONF_IPV4_UDP, flow_pctypes); 3662 3661 if (test_bit(I40E_HW_CAP_MULTI_TCP_UDP_RSS_PCTYPE, 3663 3662 pf->hw.caps)) { 3664 - set_bit(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP, 3663 + set_bit(LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP, 3665 3664 flow_pctypes); 3666 - set_bit(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP, 3665 + set_bit(LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP, 3667 3666 flow_pctypes); 3668 3667 } 3669 - hena |= BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV4); 3668 + hena |= BIT_ULL(LIBIE_FILTER_PCTYPE_FRAG_IPV4); 3670 3669 break; 3671 3670 case UDP_V6_FLOW: 3672 - set_bit(I40E_FILTER_PCTYPE_NONF_IPV6_UDP, flow_pctypes); 3671 + set_bit(LIBIE_FILTER_PCTYPE_NONF_IPV6_UDP, flow_pctypes); 3673 3672 if (test_bit(I40E_HW_CAP_MULTI_TCP_UDP_RSS_PCTYPE, 3674 3673 pf->hw.caps)) { 3675 - set_bit(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP, 3674 + set_bit(LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP, 3676 3675 flow_pctypes); 3677 - set_bit(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP, 3676 + set_bit(LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP, 3678 3677 flow_pctypes); 3679 3678 } 3680 - hena |= BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV6); 3679 + hena |= BIT_ULL(LIBIE_FILTER_PCTYPE_FRAG_IPV6); 3681 3680 break; 3682 3681 case AH_ESP_V4_FLOW: 3683 3682 case AH_V4_FLOW: ··· 3686 3685 if ((nfc->data & RXH_L4_B_0_1) || 3687 3686 (nfc->data & RXH_L4_B_2_3)) 3688 3687 return -EINVAL; 3689 - hena |= BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_OTHER); 3688 + hena |= BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER); 3690 3689 break; 3691 3690 case AH_ESP_V6_FLOW: 3692 3691 case AH_V6_FLOW: ··· 3695 3694 if ((nfc->data & RXH_L4_B_0_1) || 3696 3695 (nfc->data & RXH_L4_B_2_3)) 3697 3696 return -EINVAL; 3698 - hena |= BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_OTHER); 3697 + hena |= BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_OTHER); 3699 3698 break; 3700 3699 case IPV4_FLOW: 3701 - hena |= BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_OTHER) | 3702 - BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV4); 3700 + hena |= BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER) | 3701 + BIT_ULL(LIBIE_FILTER_PCTYPE_FRAG_IPV4); 3703 3702 break; 3704 3703 case IPV6_FLOW: 3705 - hena |= BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_OTHER) | 3706 - BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV6); 3704 + hena |= BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_OTHER) | 3705 + BIT_ULL(LIBIE_FILTER_PCTYPE_FRAG_IPV6); 3707 3706 break; 3708 3707 default: 3709 3708 return -EINVAL; ··· 4313 4312 4314 4313 switch (fsp->flow_type & ~FLOW_EXT) { 4315 4314 case SCTP_V4_FLOW: 4316 - index = I40E_FILTER_PCTYPE_NONF_IPV4_SCTP; 4315 + index = LIBIE_FILTER_PCTYPE_NONF_IPV4_SCTP; 4317 4316 fdir_filter_count = &pf->fd_sctp4_filter_cnt; 4318 4317 break; 4319 4318 case TCP_V4_FLOW: 4320 - index = I40E_FILTER_PCTYPE_NONF_IPV4_TCP; 4319 + index = LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP; 4321 4320 fdir_filter_count = &pf->fd_tcp4_filter_cnt; 4322 4321 break; 4323 4322 case UDP_V4_FLOW: 4324 - index = I40E_FILTER_PCTYPE_NONF_IPV4_UDP; 4323 + index = LIBIE_FILTER_PCTYPE_NONF_IPV4_UDP; 4325 4324 fdir_filter_count = &pf->fd_udp4_filter_cnt; 4326 4325 break; 4327 4326 case SCTP_V6_FLOW: 4328 - index = I40E_FILTER_PCTYPE_NONF_IPV6_SCTP; 4327 + index = LIBIE_FILTER_PCTYPE_NONF_IPV6_SCTP; 4329 4328 fdir_filter_count = &pf->fd_sctp6_filter_cnt; 4330 4329 break; 4331 4330 case TCP_V6_FLOW: 4332 - index = I40E_FILTER_PCTYPE_NONF_IPV6_TCP; 4331 + index = LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP; 4333 4332 fdir_filter_count = &pf->fd_tcp6_filter_cnt; 4334 4333 break; 4335 4334 case UDP_V6_FLOW: 4336 - index = I40E_FILTER_PCTYPE_NONF_IPV6_UDP; 4335 + index = LIBIE_FILTER_PCTYPE_NONF_IPV6_UDP; 4337 4336 fdir_filter_count = &pf->fd_udp6_filter_cnt; 4338 4337 break; 4339 4338 case IP_USER_FLOW: 4340 - index = I40E_FILTER_PCTYPE_NONF_IPV4_OTHER; 4339 + index = LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER; 4341 4340 fdir_filter_count = &pf->fd_ip4_filter_cnt; 4342 4341 flex_l3 = true; 4343 4342 break; 4344 4343 case IPV6_USER_FLOW: 4345 - index = I40E_FILTER_PCTYPE_NONF_IPV6_OTHER; 4344 + index = LIBIE_FILTER_PCTYPE_NONF_IPV6_OTHER; 4346 4345 fdir_filter_count = &pf->fd_ip6_filter_cnt; 4347 4346 flex_l3 = true; 4348 4347 break; ··· 4678 4677 * separate support, we'll always assume and enforce that the two flow 4679 4678 * types must have matching input sets. 4680 4679 */ 4681 - if (index == I40E_FILTER_PCTYPE_NONF_IPV4_OTHER) 4682 - i40e_write_fd_input_set(pf, I40E_FILTER_PCTYPE_FRAG_IPV4, 4680 + if (index == LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER) 4681 + i40e_write_fd_input_set(pf, LIBIE_FILTER_PCTYPE_FRAG_IPV4, 4683 4682 new_mask); 4684 4683 4685 4684 /* Add the new offset and update table, if necessary */
+12 -11
drivers/net/ethernet/intel/i40e/i40e_main.c
··· 3 3 4 4 #include <generated/utsrelease.h> 5 5 #include <linux/crash_dump.h> 6 + #include <linux/net/intel/libie/pctype.h> 6 7 #include <linux/if_bridge.h> 7 8 #include <linux/if_macvlan.h> 8 9 #include <linux/module.h> ··· 9189 9188 i40e_reset_fdir_filter_cnt(pf); 9190 9189 9191 9190 /* Reprogram the default input set for TCP/IPv4 */ 9192 - i40e_write_fd_input_set(pf, I40E_FILTER_PCTYPE_NONF_IPV4_TCP, 9191 + i40e_write_fd_input_set(pf, LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP, 9193 9192 I40E_L3_SRC_MASK | I40E_L3_DST_MASK | 9194 9193 I40E_L4_SRC_MASK | I40E_L4_DST_MASK); 9195 9194 9196 9195 /* Reprogram the default input set for TCP/IPv6 */ 9197 - i40e_write_fd_input_set(pf, I40E_FILTER_PCTYPE_NONF_IPV6_TCP, 9196 + i40e_write_fd_input_set(pf, LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP, 9198 9197 I40E_L3_V6_SRC_MASK | I40E_L3_V6_DST_MASK | 9199 9198 I40E_L4_SRC_MASK | I40E_L4_DST_MASK); 9200 9199 9201 9200 /* Reprogram the default input set for UDP/IPv4 */ 9202 - i40e_write_fd_input_set(pf, I40E_FILTER_PCTYPE_NONF_IPV4_UDP, 9201 + i40e_write_fd_input_set(pf, LIBIE_FILTER_PCTYPE_NONF_IPV4_UDP, 9203 9202 I40E_L3_SRC_MASK | I40E_L3_DST_MASK | 9204 9203 I40E_L4_SRC_MASK | I40E_L4_DST_MASK); 9205 9204 9206 9205 /* Reprogram the default input set for UDP/IPv6 */ 9207 - i40e_write_fd_input_set(pf, I40E_FILTER_PCTYPE_NONF_IPV6_UDP, 9206 + i40e_write_fd_input_set(pf, LIBIE_FILTER_PCTYPE_NONF_IPV6_UDP, 9208 9207 I40E_L3_V6_SRC_MASK | I40E_L3_V6_DST_MASK | 9209 9208 I40E_L4_SRC_MASK | I40E_L4_DST_MASK); 9210 9209 9211 9210 /* Reprogram the default input set for SCTP/IPv4 */ 9212 - i40e_write_fd_input_set(pf, I40E_FILTER_PCTYPE_NONF_IPV4_SCTP, 9211 + i40e_write_fd_input_set(pf, LIBIE_FILTER_PCTYPE_NONF_IPV4_SCTP, 9213 9212 I40E_L3_SRC_MASK | I40E_L3_DST_MASK | 9214 9213 I40E_L4_SRC_MASK | I40E_L4_DST_MASK); 9215 9214 9216 9215 /* Reprogram the default input set for SCTP/IPv6 */ 9217 - i40e_write_fd_input_set(pf, I40E_FILTER_PCTYPE_NONF_IPV6_SCTP, 9216 + i40e_write_fd_input_set(pf, LIBIE_FILTER_PCTYPE_NONF_IPV6_SCTP, 9218 9217 I40E_L3_V6_SRC_MASK | I40E_L3_V6_DST_MASK | 9219 9218 I40E_L4_SRC_MASK | I40E_L4_DST_MASK); 9220 9219 9221 9220 /* Reprogram the default input set for Other/IPv4 */ 9222 - i40e_write_fd_input_set(pf, I40E_FILTER_PCTYPE_NONF_IPV4_OTHER, 9221 + i40e_write_fd_input_set(pf, LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER, 9223 9222 I40E_L3_SRC_MASK | I40E_L3_DST_MASK); 9224 9223 9225 - i40e_write_fd_input_set(pf, I40E_FILTER_PCTYPE_FRAG_IPV4, 9224 + i40e_write_fd_input_set(pf, LIBIE_FILTER_PCTYPE_FRAG_IPV4, 9226 9225 I40E_L3_SRC_MASK | I40E_L3_DST_MASK); 9227 9226 9228 9227 /* Reprogram the default input set for Other/IPv6 */ 9229 - i40e_write_fd_input_set(pf, I40E_FILTER_PCTYPE_NONF_IPV6_OTHER, 9228 + i40e_write_fd_input_set(pf, LIBIE_FILTER_PCTYPE_NONF_IPV6_OTHER, 9230 9229 I40E_L3_SRC_MASK | I40E_L3_DST_MASK); 9231 9230 9232 - i40e_write_fd_input_set(pf, I40E_FILTER_PCTYPE_FRAG_IPV6, 9231 + i40e_write_fd_input_set(pf, LIBIE_FILTER_PCTYPE_FRAG_IPV6, 9233 9232 I40E_L3_SRC_MASK | I40E_L3_DST_MASK); 9234 9233 } 9235 9234 ··· 9657 9656 * settings. It is safe to restore the default input set 9658 9657 * because there are no active TCPv4 filter rules. 9659 9658 */ 9660 - i40e_write_fd_input_set(pf, I40E_FILTER_PCTYPE_NONF_IPV4_TCP, 9659 + i40e_write_fd_input_set(pf, LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP, 9661 9660 I40E_L3_SRC_MASK | I40E_L3_DST_MASK | 9662 9661 I40E_L4_SRC_MASK | I40E_L4_DST_MASK); 9663 9662
+13 -12
drivers/net/ethernet/intel/i40e/i40e_txrx.c
··· 2 2 /* Copyright(c) 2013 - 2018 Intel Corporation. */ 3 3 4 4 #include <linux/bpf_trace.h> 5 + #include <linux/net/intel/libie/pctype.h> 5 6 #include <linux/net/intel/libie/rx.h> 6 7 #include <linux/prefetch.h> 7 8 #include <linux/sctp.h> ··· 398 397 ret = i40e_prepare_fdir_filter 399 398 (pf, fd_data, add, raw_packet, 400 399 I40E_UDPIP_DUMMY_PACKET_LEN, 401 - I40E_FILTER_PCTYPE_NONF_IPV4_UDP); 400 + LIBIE_FILTER_PCTYPE_NONF_IPV4_UDP); 402 401 else 403 402 ret = i40e_prepare_fdir_filter 404 403 (pf, fd_data, add, raw_packet, 405 404 I40E_UDPIP6_DUMMY_PACKET_LEN, 406 - I40E_FILTER_PCTYPE_NONF_IPV6_UDP); 405 + LIBIE_FILTER_PCTYPE_NONF_IPV6_UDP); 407 406 408 407 if (ret) { 409 408 kfree(raw_packet); ··· 445 444 ret = i40e_prepare_fdir_filter 446 445 (pf, fd_data, add, raw_packet, 447 446 I40E_TCPIP_DUMMY_PACKET_LEN, 448 - I40E_FILTER_PCTYPE_NONF_IPV4_TCP); 447 + LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP); 449 448 else 450 449 ret = i40e_prepare_fdir_filter 451 450 (pf, fd_data, add, raw_packet, 452 451 I40E_TCPIP6_DUMMY_PACKET_LEN, 453 - I40E_FILTER_PCTYPE_NONF_IPV6_TCP); 452 + LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP); 454 453 455 454 if (ret) { 456 455 kfree(raw_packet); ··· 500 499 ret = i40e_prepare_fdir_filter 501 500 (pf, fd_data, add, raw_packet, 502 501 I40E_SCTPIP_DUMMY_PACKET_LEN, 503 - I40E_FILTER_PCTYPE_NONF_IPV4_SCTP); 502 + LIBIE_FILTER_PCTYPE_NONF_IPV4_SCTP); 504 503 else 505 504 ret = i40e_prepare_fdir_filter 506 505 (pf, fd_data, add, raw_packet, 507 506 I40E_SCTPIP6_DUMMY_PACKET_LEN, 508 - I40E_FILTER_PCTYPE_NONF_IPV6_SCTP); 507 + LIBIE_FILTER_PCTYPE_NONF_IPV6_SCTP); 509 508 510 509 if (ret) { 511 510 kfree(raw_packet); ··· 544 543 int i; 545 544 546 545 if (ipv4) { 547 - iter_start = I40E_FILTER_PCTYPE_NONF_IPV4_OTHER; 548 - iter_end = I40E_FILTER_PCTYPE_FRAG_IPV4; 546 + iter_start = LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER; 547 + iter_end = LIBIE_FILTER_PCTYPE_FRAG_IPV4; 549 548 } else { 550 - iter_start = I40E_FILTER_PCTYPE_NONF_IPV6_OTHER; 551 - iter_end = I40E_FILTER_PCTYPE_FRAG_IPV6; 549 + iter_start = LIBIE_FILTER_PCTYPE_NONF_IPV6_OTHER; 550 + iter_end = LIBIE_FILTER_PCTYPE_FRAG_IPV6; 552 551 } 553 552 554 553 for (i = iter_start; i <= iter_end; i++) { ··· 2949 2948 flex_ptype = FIELD_PREP(I40E_TXD_FLTR_QW0_QINDEX_MASK, 2950 2949 tx_ring->queue_index); 2951 2950 flex_ptype |= (tx_flags & I40E_TX_FLAGS_IPV4) ? 2952 - (I40E_FILTER_PCTYPE_NONF_IPV4_TCP << 2951 + (LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP << 2953 2952 I40E_TXD_FLTR_QW0_PCTYPE_SHIFT) : 2954 - (I40E_FILTER_PCTYPE_NONF_IPV6_TCP << 2953 + (LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP << 2955 2954 I40E_TXD_FLTR_QW0_PCTYPE_SHIFT); 2956 2955 2957 2956 flex_ptype |= tx_ring->vsi->id << I40E_TXD_FLTR_QW0_DEST_VSI_SHIFT;
+18 -17
drivers/net/ethernet/intel/i40e/i40e_txrx.h
··· 4 4 #ifndef _I40E_TXRX_H_ 5 5 #define _I40E_TXRX_H_ 6 6 7 + #include <linux/net/intel/libie/pctype.h> 7 8 #include <net/xdp.h> 8 9 #include "i40e_type.h" 9 10 ··· 73 72 74 73 /* Supported RSS offloads */ 75 74 #define I40E_DEFAULT_RSS_HASHCFG ( \ 76 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_UDP) | \ 77 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_SCTP) | \ 78 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_TCP) | \ 79 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_OTHER) | \ 80 - BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV4) | \ 81 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_UDP) | \ 82 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_TCP) | \ 83 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_SCTP) | \ 84 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_OTHER) | \ 85 - BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV6) | \ 86 - BIT_ULL(I40E_FILTER_PCTYPE_L2_PAYLOAD)) 75 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_UDP) | \ 76 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_SCTP) | \ 77 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP) | \ 78 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER) | \ 79 + BIT_ULL(LIBIE_FILTER_PCTYPE_FRAG_IPV4) | \ 80 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_UDP) | \ 81 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP) | \ 82 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_SCTP) | \ 83 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_OTHER) | \ 84 + BIT_ULL(LIBIE_FILTER_PCTYPE_FRAG_IPV6) | \ 85 + BIT_ULL(LIBIE_FILTER_PCTYPE_L2_PAYLOAD)) 87 86 88 87 #define I40E_DEFAULT_RSS_HASHCFG_EXPANDED (I40E_DEFAULT_RSS_HASHCFG | \ 89 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK) | \ 90 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | \ 91 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) | \ 92 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK) | \ 93 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | \ 94 - BIT_ULL(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP)) 88 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK) | \ 89 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | \ 90 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) | \ 91 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK) | \ 92 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | \ 93 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP)) 95 94 96 95 #define i40e_pf_get_default_rss_hashcfg(pf) \ 97 96 (test_bit(I40E_HW_CAP_MULTI_TCP_UDP_RSS_PCTYPE, (pf)->hw.caps) ? \
-32
drivers/net/ethernet/intel/i40e/i40e_type.h
··· 929 929 #define I40E_TXD_FLTR_QW0_PCTYPE_MASK (0x3FUL << \ 930 930 I40E_TXD_FLTR_QW0_PCTYPE_SHIFT) 931 931 932 - /* Packet Classifier Types for filters */ 933 - enum i40e_filter_pctype { 934 - /* Note: Values 0-28 are reserved for future use. 935 - * Value 29, 30, 32 are not supported on XL710 and X710. 936 - */ 937 - I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP = 29, 938 - I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP = 30, 939 - I40E_FILTER_PCTYPE_NONF_IPV4_UDP = 31, 940 - I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK = 32, 941 - I40E_FILTER_PCTYPE_NONF_IPV4_TCP = 33, 942 - I40E_FILTER_PCTYPE_NONF_IPV4_SCTP = 34, 943 - I40E_FILTER_PCTYPE_NONF_IPV4_OTHER = 35, 944 - I40E_FILTER_PCTYPE_FRAG_IPV4 = 36, 945 - /* Note: Values 37-38 are reserved for future use. 946 - * Value 39, 40, 42 are not supported on XL710 and X710. 947 - */ 948 - I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP = 39, 949 - I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP = 40, 950 - I40E_FILTER_PCTYPE_NONF_IPV6_UDP = 41, 951 - I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK = 42, 952 - I40E_FILTER_PCTYPE_NONF_IPV6_TCP = 43, 953 - I40E_FILTER_PCTYPE_NONF_IPV6_SCTP = 44, 954 - I40E_FILTER_PCTYPE_NONF_IPV6_OTHER = 45, 955 - I40E_FILTER_PCTYPE_FRAG_IPV6 = 46, 956 - /* Note: Value 47 is reserved for future use */ 957 - I40E_FILTER_PCTYPE_FCOE_OX = 48, 958 - I40E_FILTER_PCTYPE_FCOE_RX = 49, 959 - I40E_FILTER_PCTYPE_FCOE_OTHER = 50, 960 - /* Note: Values 51-62 are reserved for future use */ 961 - I40E_FILTER_PCTYPE_L2_PAYLOAD = 63, 962 - }; 963 - 964 932 enum i40e_filter_program_desc_dest { 965 933 I40E_FILTER_PROGRAM_DESC_DEST_DROP_PACKET = 0x0, 966 934 I40E_FILTER_PROGRAM_DESC_DEST_DIRECT_PACKET_QINDEX = 0x1,
+19 -17
drivers/net/ethernet/intel/iavf/iavf_txrx.h
··· 4 4 #ifndef _IAVF_TXRX_H_ 5 5 #define _IAVF_TXRX_H_ 6 6 7 + #include <linux/net/intel/libie/pctype.h> 8 + 7 9 /* Interrupt Throttling and Rate Limiting Goodies */ 8 10 #define IAVF_DEFAULT_IRQ_WORK 256 9 11 ··· 62 60 63 61 /* Supported RSS offloads */ 64 62 #define IAVF_DEFAULT_RSS_HASHCFG ( \ 65 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_IPV4_UDP) | \ 66 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_IPV4_SCTP) | \ 67 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_IPV4_TCP) | \ 68 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_IPV4_OTHER) | \ 69 - BIT_ULL(IAVF_FILTER_PCTYPE_FRAG_IPV4) | \ 70 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_IPV6_UDP) | \ 71 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_IPV6_TCP) | \ 72 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_IPV6_SCTP) | \ 73 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_IPV6_OTHER) | \ 74 - BIT_ULL(IAVF_FILTER_PCTYPE_FRAG_IPV6) | \ 75 - BIT_ULL(IAVF_FILTER_PCTYPE_L2_PAYLOAD)) 63 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_UDP) | \ 64 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_SCTP) | \ 65 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP) | \ 66 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER) | \ 67 + BIT_ULL(LIBIE_FILTER_PCTYPE_FRAG_IPV4) | \ 68 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_UDP) | \ 69 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP) | \ 70 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_SCTP) | \ 71 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_OTHER) | \ 72 + BIT_ULL(LIBIE_FILTER_PCTYPE_FRAG_IPV6) | \ 73 + BIT_ULL(LIBIE_FILTER_PCTYPE_L2_PAYLOAD)) 76 74 77 75 #define IAVF_DEFAULT_RSS_HASHCFG_EXPANDED (IAVF_DEFAULT_RSS_HASHCFG | \ 78 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK) | \ 79 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | \ 80 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) | \ 81 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK) | \ 82 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | \ 83 - BIT_ULL(IAVF_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP)) 76 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK) | \ 77 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | \ 78 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) | \ 79 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK) | \ 80 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | \ 81 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP)) 84 82 85 83 /* How many Rx Buffers do we bundle into one write to the hardware ? */ 86 84 #define IAVF_RX_INCREMENT(r, i) \
-32
drivers/net/ethernet/intel/iavf/iavf_type.h
··· 463 463 IAVF_TX_CTX_DESC_SWPE = 0x40 464 464 }; 465 465 466 - /* Packet Classifier Types for filters */ 467 - enum iavf_filter_pctype { 468 - /* Note: Values 0-28 are reserved for future use. 469 - * Value 29, 30, 32 are not supported on XL710 and X710. 470 - */ 471 - IAVF_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP = 29, 472 - IAVF_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP = 30, 473 - IAVF_FILTER_PCTYPE_NONF_IPV4_UDP = 31, 474 - IAVF_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK = 32, 475 - IAVF_FILTER_PCTYPE_NONF_IPV4_TCP = 33, 476 - IAVF_FILTER_PCTYPE_NONF_IPV4_SCTP = 34, 477 - IAVF_FILTER_PCTYPE_NONF_IPV4_OTHER = 35, 478 - IAVF_FILTER_PCTYPE_FRAG_IPV4 = 36, 479 - /* Note: Values 37-38 are reserved for future use. 480 - * Value 39, 40, 42 are not supported on XL710 and X710. 481 - */ 482 - IAVF_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP = 39, 483 - IAVF_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP = 40, 484 - IAVF_FILTER_PCTYPE_NONF_IPV6_UDP = 41, 485 - IAVF_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK = 42, 486 - IAVF_FILTER_PCTYPE_NONF_IPV6_TCP = 43, 487 - IAVF_FILTER_PCTYPE_NONF_IPV6_SCTP = 44, 488 - IAVF_FILTER_PCTYPE_NONF_IPV6_OTHER = 45, 489 - IAVF_FILTER_PCTYPE_FRAG_IPV6 = 46, 490 - /* Note: Value 47 is reserved for future use */ 491 - IAVF_FILTER_PCTYPE_FCOE_OX = 48, 492 - IAVF_FILTER_PCTYPE_FCOE_RX = 49, 493 - IAVF_FILTER_PCTYPE_FCOE_OTHER = 50, 494 - /* Note: Values 51-62 are reserved for future use */ 495 - IAVF_FILTER_PCTYPE_L2_PAYLOAD = 63, 496 - }; 497 - 498 466 #define IAVF_TXD_CTX_QW1_TSO_LEN_SHIFT 30 499 467 #define IAVF_TXD_CTX_QW1_TSO_LEN_MASK (0x3FFFFULL << \ 500 468 IAVF_TXD_CTX_QW1_TSO_LEN_SHIFT)
+22 -23
drivers/net/ethernet/intel/ice/ice_flow.c
··· 2573 2573 * convert its values to their appropriate flow L3, L4 values. 2574 2574 */ 2575 2575 #define ICE_FLOW_AVF_RSS_IPV4_MASKS \ 2576 - (BIT_ULL(ICE_AVF_FLOW_FIELD_IPV4_OTHER) | \ 2577 - BIT_ULL(ICE_AVF_FLOW_FIELD_FRAG_IPV4)) 2576 + (BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER) | \ 2577 + BIT_ULL(LIBIE_FILTER_PCTYPE_FRAG_IPV4)) 2578 2578 #define ICE_FLOW_AVF_RSS_TCP_IPV4_MASKS \ 2579 - (BIT_ULL(ICE_AVF_FLOW_FIELD_IPV4_TCP_SYN_NO_ACK) | \ 2580 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV4_TCP)) 2579 + (BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK) | \ 2580 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP)) 2581 2581 #define ICE_FLOW_AVF_RSS_UDP_IPV4_MASKS \ 2582 - (BIT_ULL(ICE_AVF_FLOW_FIELD_UNICAST_IPV4_UDP) | \ 2583 - BIT_ULL(ICE_AVF_FLOW_FIELD_MULTICAST_IPV4_UDP) | \ 2584 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV4_UDP)) 2582 + (BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | \ 2583 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) | \ 2584 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_UDP)) 2585 2585 #define ICE_FLOW_AVF_RSS_ALL_IPV4_MASKS \ 2586 2586 (ICE_FLOW_AVF_RSS_TCP_IPV4_MASKS | ICE_FLOW_AVF_RSS_UDP_IPV4_MASKS | \ 2587 - ICE_FLOW_AVF_RSS_IPV4_MASKS | BIT_ULL(ICE_AVF_FLOW_FIELD_IPV4_SCTP)) 2587 + ICE_FLOW_AVF_RSS_IPV4_MASKS | BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_SCTP)) 2588 2588 2589 2589 #define ICE_FLOW_AVF_RSS_IPV6_MASKS \ 2590 - (BIT_ULL(ICE_AVF_FLOW_FIELD_IPV6_OTHER) | \ 2591 - BIT_ULL(ICE_AVF_FLOW_FIELD_FRAG_IPV6)) 2590 + (BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_OTHER) | \ 2591 + BIT_ULL(LIBIE_FILTER_PCTYPE_FRAG_IPV6)) 2592 2592 #define ICE_FLOW_AVF_RSS_UDP_IPV6_MASKS \ 2593 - (BIT_ULL(ICE_AVF_FLOW_FIELD_UNICAST_IPV6_UDP) | \ 2594 - BIT_ULL(ICE_AVF_FLOW_FIELD_MULTICAST_IPV6_UDP) | \ 2595 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV6_UDP)) 2593 + (BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | \ 2594 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP) | \ 2595 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_UDP)) 2596 2596 #define ICE_FLOW_AVF_RSS_TCP_IPV6_MASKS \ 2597 - (BIT_ULL(ICE_AVF_FLOW_FIELD_IPV6_TCP_SYN_NO_ACK) | \ 2598 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV6_TCP)) 2597 + (BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK) | \ 2598 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP)) 2599 2599 #define ICE_FLOW_AVF_RSS_ALL_IPV6_MASKS \ 2600 2600 (ICE_FLOW_AVF_RSS_TCP_IPV6_MASKS | ICE_FLOW_AVF_RSS_UDP_IPV6_MASKS | \ 2601 - ICE_FLOW_AVF_RSS_IPV6_MASKS | BIT_ULL(ICE_AVF_FLOW_FIELD_IPV6_SCTP)) 2601 + ICE_FLOW_AVF_RSS_IPV6_MASKS | BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_SCTP)) 2602 2602 2603 2603 /** 2604 2604 * ice_add_avf_rss_cfg - add an RSS configuration for AVF driver 2605 2605 * @hw: pointer to the hardware structure 2606 2606 * @vsi: VF's VSI 2607 - * @avf_hash: hash bit fields (ICE_AVF_FLOW_FIELD_*) to configure 2607 + * @avf_hash: hash bit fields (LIBIE_FILTER_PCTYPE_*) to configure 2608 2608 * 2609 2609 * This function will take the hash bitmap provided by the AVF driver via a 2610 2610 * message, convert it to ICE-compatible values, and configure RSS flow ··· 2621 2621 return -EINVAL; 2622 2622 2623 2623 vsi_handle = vsi->idx; 2624 - if (avf_hash == ICE_AVF_FLOW_FIELD_INVALID || 2625 - !ice_is_vsi_valid(hw, vsi_handle)) 2624 + if (!avf_hash || !ice_is_vsi_valid(hw, vsi_handle)) 2626 2625 return -EINVAL; 2627 2626 2628 2627 /* Make sure no unsupported bits are specified */ ··· 2657 2658 ICE_FLOW_HASH_UDP_PORT; 2658 2659 hash_flds &= ~ICE_FLOW_AVF_RSS_UDP_IPV4_MASKS; 2659 2660 } else if (hash_flds & 2660 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV4_SCTP)) { 2661 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_SCTP)) { 2661 2662 rss_hash = ICE_FLOW_HASH_IPV4 | 2662 2663 ICE_FLOW_HASH_SCTP_PORT; 2663 2664 hash_flds &= 2664 - ~BIT_ULL(ICE_AVF_FLOW_FIELD_IPV4_SCTP); 2665 + ~BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_SCTP); 2665 2666 } 2666 2667 } else if (hash_flds & ICE_FLOW_AVF_RSS_ALL_IPV6_MASKS) { 2667 2668 if (hash_flds & ICE_FLOW_AVF_RSS_IPV6_MASKS) { ··· 2678 2679 ICE_FLOW_HASH_UDP_PORT; 2679 2680 hash_flds &= ~ICE_FLOW_AVF_RSS_UDP_IPV6_MASKS; 2680 2681 } else if (hash_flds & 2681 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV6_SCTP)) { 2682 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_SCTP)) { 2682 2683 rss_hash = ICE_FLOW_HASH_IPV6 | 2683 2684 ICE_FLOW_HASH_SCTP_PORT; 2684 2685 hash_flds &= 2685 - ~BIT_ULL(ICE_AVF_FLOW_FIELD_IPV6_SCTP); 2686 + ~BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_SCTP); 2686 2687 } 2687 2688 } 2688 2689
+18 -46
drivers/net/ethernet/intel/ice/ice_flow.h
··· 4 4 #ifndef _ICE_FLOW_H_ 5 5 #define _ICE_FLOW_H_ 6 6 7 + #include <linux/net/intel/libie/pctype.h> 8 + 7 9 #include "ice_flex_type.h" 8 10 #include "ice_parser.h" 9 11 ··· 266 264 #define ICE_FLOW_HASH_FLD_GTPU_DWN_TEID \ 267 265 BIT_ULL(ICE_FLOW_FIELD_IDX_GTPU_DWN_TEID) 268 266 269 - /* Flow headers and fields for AVF support */ 270 - enum ice_flow_avf_hdr_field { 271 - /* Values 0 - 28 are reserved for future use */ 272 - ICE_AVF_FLOW_FIELD_INVALID = 0, 273 - ICE_AVF_FLOW_FIELD_UNICAST_IPV4_UDP = 29, 274 - ICE_AVF_FLOW_FIELD_MULTICAST_IPV4_UDP, 275 - ICE_AVF_FLOW_FIELD_IPV4_UDP, 276 - ICE_AVF_FLOW_FIELD_IPV4_TCP_SYN_NO_ACK, 277 - ICE_AVF_FLOW_FIELD_IPV4_TCP, 278 - ICE_AVF_FLOW_FIELD_IPV4_SCTP, 279 - ICE_AVF_FLOW_FIELD_IPV4_OTHER, 280 - ICE_AVF_FLOW_FIELD_FRAG_IPV4, 281 - /* Values 37-38 are reserved */ 282 - ICE_AVF_FLOW_FIELD_UNICAST_IPV6_UDP = 39, 283 - ICE_AVF_FLOW_FIELD_MULTICAST_IPV6_UDP, 284 - ICE_AVF_FLOW_FIELD_IPV6_UDP, 285 - ICE_AVF_FLOW_FIELD_IPV6_TCP_SYN_NO_ACK, 286 - ICE_AVF_FLOW_FIELD_IPV6_TCP, 287 - ICE_AVF_FLOW_FIELD_IPV6_SCTP, 288 - ICE_AVF_FLOW_FIELD_IPV6_OTHER, 289 - ICE_AVF_FLOW_FIELD_FRAG_IPV6, 290 - ICE_AVF_FLOW_FIELD_RSVD47, 291 - ICE_AVF_FLOW_FIELD_FCOE_OX, 292 - ICE_AVF_FLOW_FIELD_FCOE_RX, 293 - ICE_AVF_FLOW_FIELD_FCOE_OTHER, 294 - /* Values 51-62 are reserved */ 295 - ICE_AVF_FLOW_FIELD_L2_PAYLOAD = 63, 296 - ICE_AVF_FLOW_FIELD_MAX 297 - }; 298 - 299 267 /* Supported RSS offloads This macro is defined to support 300 268 * VIRTCHNL_OP_GET_RSS_HASHCFG_CAPS ops. PF driver sends the RSS hardware 301 269 * capabilities to the caller of this ops. 302 270 */ 303 271 #define ICE_DEFAULT_RSS_HASHCFG ( \ 304 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV4_UDP) | \ 305 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV4_SCTP) | \ 306 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV4_TCP) | \ 307 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV4_OTHER) | \ 308 - BIT_ULL(ICE_AVF_FLOW_FIELD_FRAG_IPV4) | \ 309 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV6_UDP) | \ 310 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV6_TCP) | \ 311 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV6_SCTP) | \ 312 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV6_OTHER) | \ 313 - BIT_ULL(ICE_AVF_FLOW_FIELD_FRAG_IPV6) | \ 314 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV4_TCP_SYN_NO_ACK) | \ 315 - BIT_ULL(ICE_AVF_FLOW_FIELD_UNICAST_IPV4_UDP) | \ 316 - BIT_ULL(ICE_AVF_FLOW_FIELD_MULTICAST_IPV4_UDP) | \ 317 - BIT_ULL(ICE_AVF_FLOW_FIELD_IPV6_TCP_SYN_NO_ACK) | \ 318 - BIT_ULL(ICE_AVF_FLOW_FIELD_UNICAST_IPV6_UDP) | \ 319 - BIT_ULL(ICE_AVF_FLOW_FIELD_MULTICAST_IPV6_UDP)) 272 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_UDP) | \ 273 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_SCTP) | \ 274 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP) | \ 275 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER) | \ 276 + BIT_ULL(LIBIE_FILTER_PCTYPE_FRAG_IPV4) | \ 277 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_UDP) | \ 278 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP) | \ 279 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_SCTP) | \ 280 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_OTHER) | \ 281 + BIT_ULL(LIBIE_FILTER_PCTYPE_FRAG_IPV6) | \ 282 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK) | \ 283 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | \ 284 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) | \ 285 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK) | \ 286 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | \ 287 + BIT_ULL(LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP)) 320 288 321 289 enum ice_rss_cfg_hdr_type { 322 290 ICE_RSS_OUTER_HEADERS, /* take outer headers as inputset. */
+1
include/linux/avf/virtchnl.h
··· 982 982 * traffic types that are hashed by the hardware. 983 983 */ 984 984 struct virtchnl_rss_hashcfg { 985 + /* Bits defined by enum libie_filter_pctype */ 985 986 u64 hashcfg; 986 987 }; 987 988
+41
include/linux/net/intel/libie/pctype.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0-only */ 2 + /* Copyright (C) 2025 Intel Corporation */ 3 + 4 + #ifndef __LIBIE_PCTYPE_H 5 + #define __LIBIE_PCTYPE_H 6 + 7 + /* Packet Classifier Type indexes, used to set the xxQF_HENA registers. Also 8 + * communicated over the virtchnl API as part of struct virtchnl_rss_hashena. 9 + */ 10 + enum libie_filter_pctype { 11 + /* Note: Values 0-28 are reserved for future use. 12 + * Value 29, 30, 32 are not supported on XL710 and X710. 13 + */ 14 + LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP = 29, 15 + LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP = 30, 16 + LIBIE_FILTER_PCTYPE_NONF_IPV4_UDP = 31, 17 + LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK = 32, 18 + LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP = 33, 19 + LIBIE_FILTER_PCTYPE_NONF_IPV4_SCTP = 34, 20 + LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER = 35, 21 + LIBIE_FILTER_PCTYPE_FRAG_IPV4 = 36, 22 + /* Note: Values 37-38 are reserved for future use. 23 + * Value 39, 40, 42 are not supported on XL710 and X710. 24 + */ 25 + LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP = 39, 26 + LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP = 40, 27 + LIBIE_FILTER_PCTYPE_NONF_IPV6_UDP = 41, 28 + LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK = 42, 29 + LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP = 43, 30 + LIBIE_FILTER_PCTYPE_NONF_IPV6_SCTP = 44, 31 + LIBIE_FILTER_PCTYPE_NONF_IPV6_OTHER = 45, 32 + LIBIE_FILTER_PCTYPE_FRAG_IPV6 = 46, 33 + /* Note: Value 47 is reserved for future use */ 34 + LIBIE_FILTER_PCTYPE_FCOE_OX = 48, 35 + LIBIE_FILTER_PCTYPE_FCOE_RX = 49, 36 + LIBIE_FILTER_PCTYPE_FCOE_OTHER = 50, 37 + /* Note: Values 51-62 are reserved for future use */ 38 + LIBIE_FILTER_PCTYPE_L2_PAYLOAD = 63 39 + }; 40 + 41 + #endif /* __LIBIE_PCTYPE_H */