net/mlx5: Expose PCAM, MCAM registers infrastructure
[sfrench/cifs-2.6.git] / include / linux / mlx5 / driver.h
index 9a3a0954855b87af505b8de0e0aa729036d34c4f..60c2b156da8cadbe844060378b0882b072c50ce5 100644 (file)
@@ -121,11 +121,14 @@ enum {
        MLX5_REG_PVLC            = 0x500f,
        MLX5_REG_PCMR            = 0x5041,
        MLX5_REG_PMLP            = 0x5002,
+       MLX5_REG_PCAM            = 0x507f,
        MLX5_REG_NODE_DESC       = 0x6001,
        MLX5_REG_HOST_ENDIANNESS = 0x7004,
        MLX5_REG_MCIA            = 0x9014,
        MLX5_REG_MLCR            = 0x902b,
-       MLX5_REG_MPCNT           = 0x9051,
+       MLX5_REG_MTPPS           = 0x9053,
+       MLX5_REG_MTPPSE          = 0x9054,
+       MLX5_REG_MCAM            = 0x907f,
 };
 
 enum mlx5_dcbx_oper_mode {
@@ -173,6 +176,7 @@ enum mlx5_dev_event {
        MLX5_DEV_EVENT_PKEY_CHANGE,
        MLX5_DEV_EVENT_GUID_CHANGE,
        MLX5_DEV_EVENT_CLIENT_REREG,
+       MLX5_DEV_EVENT_PPS,
 };
 
 enum mlx5_port_status {
@@ -189,35 +193,17 @@ enum mlx5_eq_type {
 };
 
 struct mlx5_bfreg_info {
-       struct mlx5_uar        *uars;
-       int                     num_uars;
+       u32                    *sys_pages;
        int                     num_low_latency_bfregs;
-       unsigned long          *bitmap;
        unsigned int           *count;
-       struct mlx5_bf         *bfs;
 
        /*
         * protect bfreg allocation data structs
         */
        struct mutex            lock;
        u32                     ver;
-};
-
-struct mlx5_bf {
-       void __iomem           *reg;
-       void __iomem           *regreg;
-       int                     buf_size;
-       struct mlx5_uar        *uar;
-       unsigned long           offset;
-       int                     need_lock;
-       /* protect blue flame buffer selection when needed
-        */
-       spinlock_t              lock;
-
-       /* serialize 64 bit writes when done as two 32 bit accesses
-        */
-       spinlock_t              lock32;
-       int                     bfregn;
+       bool                    lib_uar_4k;
+       u32                     num_sys_pages;
 };
 
 struct mlx5_cmd_first {
@@ -485,15 +471,6 @@ struct mlx5_sq_bfreg {
        unsigned int            offset;
 };
 
-struct mlx5_uar {
-       u32                     index;
-       struct list_head        bf_list;
-       unsigned                free_bf_bmap;
-       void __iomem           *bf_map;
-       void __iomem           *map;
-};
-
-
 struct mlx5_core_health {
        struct health_buffer __iomem   *health;
        __be32 __iomem                 *health_counter;
@@ -612,8 +589,6 @@ struct mlx5_priv {
        struct mlx5_eq_table    eq_table;
        struct msix_entry       *msix_arr;
        struct mlx5_irq_info    *irq_info;
-       struct mlx5_bfreg_info  bfregi;
-       MLX5_DECLARE_DOORBELL_LOCK(cq_uar_lock);
 
        /* pages stuff */
        struct workqueue_struct *pg_wq;
@@ -748,7 +723,6 @@ struct mlx5_td {
 };
 
 struct mlx5e_resources {
-       struct mlx5_uar            cq_uar;
        u32                        pdn;
        struct mlx5_td             td;
        struct mlx5_core_mkey      mkey;
@@ -938,11 +912,6 @@ void mlx5_cmd_mbox_status(void *out, u8 *status, u32 *syndrome);
 int mlx5_core_get_caps(struct mlx5_core_dev *dev, enum mlx5_cap_type cap_type);
 int mlx5_cmd_alloc_uar(struct mlx5_core_dev *dev, u32 *uarn);
 int mlx5_cmd_free_uar(struct mlx5_core_dev *dev, u32 uarn);
-int mlx5_alloc_bfregs(struct mlx5_core_dev *dev, struct mlx5_bfreg_info *bfregi);
-int mlx5_free_bfregs(struct mlx5_core_dev *dev, struct mlx5_bfreg_info *bfregi);
-int mlx5_alloc_map_uar(struct mlx5_core_dev *mdev, struct mlx5_uar *uar,
-                      bool map_wc);
-void mlx5_unmap_free_uar(struct mlx5_core_dev *mdev, struct mlx5_uar *uar);
 void mlx5_health_cleanup(struct mlx5_core_dev *dev);
 int mlx5_health_init(struct mlx5_core_dev *dev);
 void mlx5_start_health_poll(struct mlx5_core_dev *dev);