crypto/cnxk: move IPsec SA creation to common
[dpdk.git] / drivers / common / iavf / virtchnl.h
index 249ae6e..f123dae 100644 (file)
@@ -159,6 +159,8 @@ enum virtchnl_ops {
        VIRTCHNL_OP_DISABLE_VLAN_INSERTION_V2 = 57,
        VIRTCHNL_OP_ENABLE_VLAN_FILTERING_V2 = 58,
        VIRTCHNL_OP_DISABLE_VLAN_FILTERING_V2 = 59,
+       VIRTCHNL_OP_1588_PTP_GET_CAPS = 60,
+       VIRTCHNL_OP_1588_PTP_GET_TIME = 61,
        VIRTCHNL_OP_GET_QOS_CAPS = 66,
        VIRTCHNL_OP_CONFIG_QUEUE_TC_MAP = 67,
        VIRTCHNL_OP_ENABLE_QUEUES_V2 = 107,
@@ -276,6 +278,10 @@ static inline const char *virtchnl_op_str(enum virtchnl_ops v_opcode)
                return "VIRTCHNL_OP_ENABLE_VLAN_FILTERING_V2";
        case VIRTCHNL_OP_DISABLE_VLAN_FILTERING_V2:
                return "VIRTCHNL_OP_DISABLE_VLAN_FILTERING_V2";
+       case VIRTCHNL_OP_1588_PTP_GET_CAPS:
+               return "VIRTCHNL_OP_1588_PTP_GET_CAPS";
+       case VIRTCHNL_OP_1588_PTP_GET_TIME:
+               return "VIRTCHNL_OP_1588_PTP_GET_TIME";
        case VIRTCHNL_OP_MAX:
                return "VIRTCHNL_OP_MAX";
        default:
@@ -411,7 +417,7 @@ VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_vsi_resource);
 #define VIRTCHNL_VF_OFFLOAD_FDIR_PF            BIT(28)
 #define VIRTCHNL_VF_OFFLOAD_QOS                BIT(29)
 #define VIRTCHNL_VF_CAP_DCF                    BIT(30)
-       /* BIT(31) is reserved */
+#define VIRTCHNL_VF_CAP_PTP                    BIT(31)
 
 #define VF_BASE_MODE_OFFLOADS (VIRTCHNL_VF_OFFLOAD_L2 | \
                               VIRTCHNL_VF_OFFLOAD_VLAN | \
@@ -498,6 +504,18 @@ enum virtchnl_rx_desc_id_bitmasks {
        /* 22 through 63 are reserved */
 };
 
+/* virtchnl_rxq_info_flags
+ *
+ * Definition of bits in the flags field of the virtchnl_rxq_info structure.
+ */
+enum virtchnl_rxq_info_flags {
+       /* If the VIRTCHNL_PTP_RX_TSTAMP bit of the flag field is set, this is
+        * a request to enable Rx timestamp. Other flag bits are currently
+        * reserved and they may be extended in the future.
+        */
+       VIRTCHNL_PTP_RX_TSTAMP = BIT(0),
+};
+
 /* VIRTCHNL_OP_CONFIG_RX_QUEUE
  * VF sends this message to set up parameters for one RX queue.
  * External data buffer contains one instance of virtchnl_rxq_info.
@@ -526,7 +544,8 @@ struct virtchnl_rxq_info {
         * with VIRTCHNL_RXDID_1_32B_BASE.
         */
        u8 rxdid;
-       u8 pad1[2];
+       u8 flags; /* see virtchnl_rxq_info_flags */
+       u8 pad1;
        u64 dma_ring_addr;
 
        /* see enum virtchnl_rx_hsplit; deprecated with AVF 1.0 */
@@ -1484,6 +1503,7 @@ enum virtchnl_vfr_states {
 };
 
 #define VIRTCHNL_MAX_NUM_PROTO_HDRS    32
+#define VIRTCHNL_MAX_SIZE_RAW_PACKET   1024
 #define PROTO_HDR_SHIFT                        5
 #define PROTO_HDR_FIELD_START(proto_hdr_type) \
                                        (proto_hdr_type << PROTO_HDR_SHIFT)
@@ -1678,14 +1698,25 @@ VIRTCHNL_CHECK_STRUCT_LEN(72, virtchnl_proto_hdr);
 struct virtchnl_proto_hdrs {
        u8 tunnel_level;
        /**
-        * specify where protocol header start from.
+        * specify where protocol header start from. must be 0 when sending a raw packet request.
         * 0 - from the outer layer
         * 1 - from the first inner layer
         * 2 - from the second inner layer
         * ....
-        **/
-       int count; /* the proto layers must < VIRTCHNL_MAX_NUM_PROTO_HDRS */
-       struct virtchnl_proto_hdr proto_hdr[VIRTCHNL_MAX_NUM_PROTO_HDRS];
+        */
+       int count;
+       /**
+        * number of proto layers, must < VIRTCHNL_MAX_NUM_PROTO_HDRS
+        * must be 0 for a raw packet request.
+        */
+       union {
+               struct virtchnl_proto_hdr proto_hdr[VIRTCHNL_MAX_NUM_PROTO_HDRS];
+               struct {
+                       u16 pkt_len;
+                       u8 spec[VIRTCHNL_MAX_SIZE_RAW_PACKET];
+                       u8 mask[VIRTCHNL_MAX_SIZE_RAW_PACKET];
+               } raw;
+       };
 };
 
 VIRTCHNL_CHECK_STRUCT_LEN(2312, virtchnl_proto_hdrs);
@@ -2004,6 +2035,39 @@ struct virtchnl_quanta_cfg {
 
 VIRTCHNL_CHECK_STRUCT_LEN(12, virtchnl_quanta_cfg);
 
+#define VIRTCHNL_1588_PTP_CAP_RX_TSTAMP                BIT(1)
+#define VIRTCHNL_1588_PTP_CAP_READ_PHC         BIT(2)
+
+struct virtchnl_phc_regs {
+       u32 clock_hi;
+       u32 clock_lo;
+       u8 pcie_region;
+       u8 rsvd[15];
+};
+
+VIRTCHNL_CHECK_STRUCT_LEN(24, virtchnl_phc_regs);
+
+struct virtchnl_ptp_caps {
+       struct virtchnl_phc_regs phc_regs;
+       u32 caps;
+       s32 max_adj;
+       u8 tx_tstamp_idx;
+       u8 n_ext_ts;
+       u8 n_per_out;
+       u8 n_pins;
+       u8 tx_tstamp_format;
+       u8 rsvd[11];
+};
+
+VIRTCHNL_CHECK_STRUCT_LEN(48, virtchnl_ptp_caps);
+
+struct virtchnl_phc_time {
+       u64 time;
+       u8 rsvd[8];
+};
+
+VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_phc_time);
+
 /* Since VF messages are limited by u16 size, precalculate the maximum possible
  * values of nested elements in virtchnl structures that virtual channel can
  * possibly handle in a single message.
@@ -2321,6 +2385,12 @@ virtchnl_vc_validate_vf_msg(struct virtchnl_version_info *ver, u32 v_opcode,
        case VIRTCHNL_OP_DISABLE_VLAN_FILTERING_V2:
                valid_len = sizeof(struct virtchnl_vlan_setting);
                break;
+       case VIRTCHNL_OP_1588_PTP_GET_CAPS:
+               valid_len = sizeof(struct virtchnl_ptp_caps);
+               break;
+       case VIRTCHNL_OP_1588_PTP_GET_TIME:
+               valid_len = sizeof(struct virtchnl_phc_time);
+               break;
        case VIRTCHNL_OP_ENABLE_QUEUES_V2:
        case VIRTCHNL_OP_DISABLE_QUEUES_V2:
                valid_len = sizeof(struct virtchnl_del_ena_dis_queues);