net/mlx5: E-Switch, Introduce HCA cap and E-Switch vport context
[deliverable/linux.git] / include / linux / mlx5 / device.h
index 0b473cbfa7ef10c875c1eed802c2a7dd74f415d4..7d3a85faefb73eed68f5b7faef0118460a7e476f 100644 (file)
@@ -251,6 +251,7 @@ enum mlx5_event {
        MLX5_EVENT_TYPE_PAGE_REQUEST       = 0xb,
 
        MLX5_EVENT_TYPE_PAGE_FAULT         = 0xc,
+       MLX5_EVENT_TYPE_NIC_VPORT_CHANGE   = 0xd,
 };
 
 enum {
@@ -520,6 +521,12 @@ struct mlx5_eqe_page_fault {
        __be32 flags_qpn;
 } __packed;
 
+struct mlx5_eqe_vport_change {
+       u8              rsvd0[2];
+       __be16          vport_num;
+       __be32          rsvd1[6];
+} __packed;
+
 union ev_data {
        __be32                          raw[7];
        struct mlx5_eqe_cmd             cmd;
@@ -532,6 +539,7 @@ union ev_data {
        struct mlx5_eqe_stall_vl        stall_vl;
        struct mlx5_eqe_page_req        req_pages;
        struct mlx5_eqe_page_fault      page_fault;
+       struct mlx5_eqe_vport_change    vport_change;
 } __packed;
 
 struct mlx5_eqe {
@@ -1066,6 +1074,12 @@ enum {
        VPORT_STATE_UP                  = 0x1,
 };
 
+enum {
+       MLX5_ESW_VPORT_ADMIN_STATE_DOWN  = 0x0,
+       MLX5_ESW_VPORT_ADMIN_STATE_UP    = 0x1,
+       MLX5_ESW_VPORT_ADMIN_STATE_AUTO  = 0x2,
+};
+
 enum {
        MLX5_L3_PROT_TYPE_IPV4          = 0,
        MLX5_L3_PROT_TYPE_IPV6          = 1,
@@ -1102,6 +1116,12 @@ enum {
        MLX5_FLOW_CONTEXT_DEST_TYPE_TIR         = 2,
 };
 
+enum mlx5_list_type {
+       MLX5_NVPRT_LIST_TYPE_UC   = 0x0,
+       MLX5_NVPRT_LIST_TYPE_MC   = 0x1,
+       MLX5_NVPRT_LIST_TYPE_VLAN = 0x2,
+};
+
 enum {
        MLX5_RQC_RQ_TYPE_MEMORY_RQ_INLINE = 0x0,
        MLX5_RQC_RQ_TYPE_MEMORY_RQ_RPM    = 0x1,
@@ -1124,6 +1144,8 @@ enum mlx5_cap_type {
        MLX5_CAP_IPOIB_OFFLOADS,
        MLX5_CAP_EOIB_OFFLOADS,
        MLX5_CAP_FLOW_TABLE,
+       MLX5_CAP_ESWITCH_FLOW_TABLE,
+       MLX5_CAP_ESWITCH,
        /* NUM OF CAP Types */
        MLX5_CAP_NUM
 };
@@ -1161,6 +1183,28 @@ enum mlx5_cap_type {
 #define MLX5_CAP_FLOWTABLE_MAX(mdev, cap) \
        MLX5_GET(flow_table_nic_cap, mdev->hca_caps_max[MLX5_CAP_FLOW_TABLE], cap)
 
+#define MLX5_CAP_ESW_FLOWTABLE(mdev, cap) \
+       MLX5_GET(flow_table_eswitch_cap, \
+                mdev->hca_caps_cur[MLX5_CAP_ESWITCH_FLOW_TABLE], cap)
+
+#define MLX5_CAP_ESW_FLOWTABLE_MAX(mdev, cap) \
+       MLX5_GET(flow_table_eswitch_cap, \
+                mdev->hca_caps_max[MLX5_CAP_ESWITCH_FLOW_TABLE], cap)
+
+#define MLX5_CAP_ESW_FLOWTABLE_FDB(mdev, cap) \
+       MLX5_CAP_ESW_FLOWTABLE(mdev, flow_table_properties_nic_esw_fdb.cap)
+
+#define MLX5_CAP_ESW_FLOWTABLE_FDB_MAX(mdev, cap) \
+       MLX5_CAP_ESW_FLOWTABLE_MAX(mdev, flow_table_properties_nic_esw_fdb.cap)
+
+#define MLX5_CAP_ESW(mdev, cap) \
+       MLX5_GET(e_switch_cap, \
+                mdev->hca_caps_cur[MLX5_CAP_ESWITCH], cap)
+
+#define MLX5_CAP_ESW_MAX(mdev, cap) \
+       MLX5_GET(e_switch_cap, \
+                mdev->hca_caps_max[MLX5_CAP_ESWITCH], cap)
+
 #define MLX5_CAP_ODP(mdev, cap)\
        MLX5_GET(odp_cap, mdev->hca_caps_cur[MLX5_CAP_ODP], cap)
 
This page took 0.025123 seconds and 5 git commands to generate.