Skip to content

Commit 6a88c79

Browse files
jacob-kelleranguy11
authored andcommitted
virtchnl: add enumeration for the rxdid format
Support for allowing VF to negotiate the descriptor format requires that the VF specify which descriptor format to use when requesting Rx queues. The VF is supposed to request the set of supported formats via the new VIRTCHNL_OP_GET_SUPPORTED_RXDIDS, and then set one of the supported formats in the rxdid field of the virtchnl_rxq_info structure. The virtchnl.h header does not provide an enumeration of the format values. The existing implementations in the PF directly use the values from the DDP package. Make the formats explicit by defining an enumeration of the RXDIDs. Provide an enumeration for the values as well as the bit positions as returned by the supported_rxdids data from the VIRTCHNL_OP_GET_SUPPORTED_RXDIDS. Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Reviewed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> Reviewed-by: Simon Horman <horms@kernel.org> Reviewed-by: Alexander Lobakin <aleksander.lobakin@intel.com> Tested-by: Rafal Romanowski <rafal.romanowski@intel.com> Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
1 parent 7c1178a commit 6a88c79

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

include/linux/avf/virtchnl.h

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,48 @@ struct virtchnl_txq_info {
313313

314314
VIRTCHNL_CHECK_STRUCT_LEN(24, virtchnl_txq_info);
315315

316+
/* RX descriptor IDs (range from 0 to 63) */
317+
enum virtchnl_rx_desc_ids {
318+
VIRTCHNL_RXDID_0_16B_BASE = 0,
319+
VIRTCHNL_RXDID_1_32B_BASE = 1,
320+
VIRTCHNL_RXDID_2_FLEX_SQ_NIC = 2,
321+
VIRTCHNL_RXDID_3_FLEX_SQ_SW = 3,
322+
VIRTCHNL_RXDID_4_FLEX_SQ_NIC_VEB = 4,
323+
VIRTCHNL_RXDID_5_FLEX_SQ_NIC_ACL = 5,
324+
VIRTCHNL_RXDID_6_FLEX_SQ_NIC_2 = 6,
325+
VIRTCHNL_RXDID_7_HW_RSVD = 7,
326+
/* 8 through 15 are reserved */
327+
VIRTCHNL_RXDID_16_COMMS_GENERIC = 16,
328+
VIRTCHNL_RXDID_17_COMMS_AUX_VLAN = 17,
329+
VIRTCHNL_RXDID_18_COMMS_AUX_IPV4 = 18,
330+
VIRTCHNL_RXDID_19_COMMS_AUX_IPV6 = 19,
331+
VIRTCHNL_RXDID_20_COMMS_AUX_FLOW = 20,
332+
VIRTCHNL_RXDID_21_COMMS_AUX_TCP = 21,
333+
/* 22 through 63 are reserved */
334+
};
335+
336+
#define VIRTCHNL_RXDID_BIT(x) BIT_ULL(VIRTCHNL_RXDID_##x)
337+
338+
/* RX descriptor ID bitmasks */
339+
enum virtchnl_rx_desc_id_bitmasks {
340+
VIRTCHNL_RXDID_0_16B_BASE_M = VIRTCHNL_RXDID_BIT(0_16B_BASE),
341+
VIRTCHNL_RXDID_1_32B_BASE_M = VIRTCHNL_RXDID_BIT(1_32B_BASE),
342+
VIRTCHNL_RXDID_2_FLEX_SQ_NIC_M = VIRTCHNL_RXDID_BIT(2_FLEX_SQ_NIC),
343+
VIRTCHNL_RXDID_3_FLEX_SQ_SW_M = VIRTCHNL_RXDID_BIT(3_FLEX_SQ_SW),
344+
VIRTCHNL_RXDID_4_FLEX_SQ_NIC_VEB_M = VIRTCHNL_RXDID_BIT(4_FLEX_SQ_NIC_VEB),
345+
VIRTCHNL_RXDID_5_FLEX_SQ_NIC_ACL_M = VIRTCHNL_RXDID_BIT(5_FLEX_SQ_NIC_ACL),
346+
VIRTCHNL_RXDID_6_FLEX_SQ_NIC_2_M = VIRTCHNL_RXDID_BIT(6_FLEX_SQ_NIC_2),
347+
VIRTCHNL_RXDID_7_HW_RSVD_M = VIRTCHNL_RXDID_BIT(7_HW_RSVD),
348+
/* 8 through 15 are reserved */
349+
VIRTCHNL_RXDID_16_COMMS_GENERIC_M = VIRTCHNL_RXDID_BIT(16_COMMS_GENERIC),
350+
VIRTCHNL_RXDID_17_COMMS_AUX_VLAN_M = VIRTCHNL_RXDID_BIT(17_COMMS_AUX_VLAN),
351+
VIRTCHNL_RXDID_18_COMMS_AUX_IPV4_M = VIRTCHNL_RXDID_BIT(18_COMMS_AUX_IPV4),
352+
VIRTCHNL_RXDID_19_COMMS_AUX_IPV6_M = VIRTCHNL_RXDID_BIT(19_COMMS_AUX_IPV6),
353+
VIRTCHNL_RXDID_20_COMMS_AUX_FLOW_M = VIRTCHNL_RXDID_BIT(20_COMMS_AUX_FLOW),
354+
VIRTCHNL_RXDID_21_COMMS_AUX_TCP_M = VIRTCHNL_RXDID_BIT(21_COMMS_AUX_TCP),
355+
/* 22 through 63 are reserved */
356+
};
357+
316358
/* virtchnl_rxq_info_flags - definition of bits in the flags field of the
317359
* virtchnl_rxq_info structure.
318360
*
@@ -347,7 +389,12 @@ struct virtchnl_rxq_info {
347389
u32 databuffer_size;
348390
u32 max_pkt_size;
349391
u8 crc_disable;
350-
u8 rxdid;
392+
/* see enum virtchnl_rx_desc_ids;
393+
* only used when VIRTCHNL_VF_OFFLOAD_RX_FLEX_DESC is supported. Note
394+
* that when the offload is not supported, the descriptor format aligns
395+
* with VIRTCHNL_RXDID_1_32B_BASE.
396+
*/
397+
enum virtchnl_rx_desc_ids rxdid:8;
351398
enum virtchnl_rxq_info_flags flags:8; /* see virtchnl_rxq_info_flags */
352399
u8 pad1;
353400
u64 dma_ring_addr;
@@ -1050,6 +1097,7 @@ struct virtchnl_filter {
10501097
VIRTCHNL_CHECK_STRUCT_LEN(272, virtchnl_filter);
10511098

10521099
struct virtchnl_supported_rxdids {
1100+
/* see enum virtchnl_rx_desc_id_bitmasks */
10531101
u64 supported_rxdids;
10541102
};
10551103

0 commit comments

Comments
 (0)