diff options
Diffstat (limited to 'include/linux/mlx5')
| -rw-r--r-- | include/linux/mlx5/device.h | 21 | ||||
| -rw-r--r-- | include/linux/mlx5/driver.h | 30 | ||||
| -rw-r--r-- | include/linux/mlx5/mlx5_ifc.h | 24 | 
3 files changed, 64 insertions, 11 deletions
diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h index b943cd9e2097..8eb3b19af2a4 100644 --- a/include/linux/mlx5/device.h +++ b/include/linux/mlx5/device.h @@ -402,6 +402,17 @@ struct mlx5_cmd_teardown_hca_mbox_out {  	u8			rsvd[8];  }; +struct mlx5_cmd_query_special_contexts_mbox_in { +	struct mlx5_inbox_hdr	hdr; +	u8			rsvd[8]; +}; + +struct mlx5_cmd_query_special_contexts_mbox_out { +	struct mlx5_outbox_hdr	hdr; +	__be32                  dump_fill_mkey; +	__be32                  resd_lkey; +}; +  struct mlx5_cmd_layout {  	u8		type;  	u8		rsvd0[3]; @@ -1182,6 +1193,16 @@ enum {  	MLX5_CMD_STAT_BAD_SIZE_OUTS_CQES_ERR	= 0x40,  }; +enum { +	MLX5_IEEE_802_3_COUNTERS_GROUP	      = 0x0, +	MLX5_RFC_2863_COUNTERS_GROUP	      = 0x1, +	MLX5_RFC_2819_COUNTERS_GROUP	      = 0x2, +	MLX5_RFC_3635_COUNTERS_GROUP	      = 0x3, +	MLX5_ETHERNET_EXTENDED_COUNTERS_GROUP = 0x5, +	MLX5_PER_PRIORITY_COUNTERS_GROUP      = 0x10, +	MLX5_PER_TRAFFIC_CLASS_COUNTERS_GROUP = 0x11 +}; +  static inline u16 mlx5_to_sw_pkey_sz(int pkey_sz)  {  	if (pkey_sz > MLX5_MAX_LOG_PKEY_TABLE) diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h index 5722d88c2429..27b53f9a24ad 100644 --- a/include/linux/mlx5/driver.h +++ b/include/linux/mlx5/driver.h @@ -103,6 +103,8 @@ enum {  	MLX5_REG_PMTU		 = 0x5003,  	MLX5_REG_PTYS		 = 0x5004,  	MLX5_REG_PAOS		 = 0x5006, +	MLX5_REG_PFCC            = 0x5007, +	MLX5_REG_PPCNT		 = 0x5008,  	MLX5_REG_PMAOS		 = 0x5012,  	MLX5_REG_PUDE		 = 0x5009,  	MLX5_REG_PMPE		 = 0x5010, @@ -151,8 +153,8 @@ enum mlx5_dev_event {  };  enum mlx5_port_status { -	MLX5_PORT_UP        = 1 << 1, -	MLX5_PORT_DOWN      = 1 << 2, +	MLX5_PORT_UP        = 1, +	MLX5_PORT_DOWN      = 2,  };  struct mlx5_uuar_info { @@ -380,7 +382,7 @@ struct mlx5_uar {  	u32			index;  	struct list_head	bf_list;  	unsigned		free_bf_bmap; -	void __iomem	       *wc_map; +	void __iomem	       *bf_map;  	void __iomem	       *map;  }; @@ -435,6 +437,8 @@ struct mlx5_priv {  	struct mlx5_uuar_info	uuari;  	MLX5_DECLARE_DOORBELL_LOCK(cq_uar_lock); +	struct io_mapping	*bf_mapping; +  	/* pages stuff */  	struct workqueue_struct *pg_wq;  	struct rb_root		page_root; @@ -463,6 +467,10 @@ struct mlx5_priv {  	/* end: mr staff */  	/* start: alloc staff */ +	/* protect buffer alocation according to numa node */ +	struct mutex            alloc_mutex; +	int                     numa_node; +  	struct mutex            pgdir_mutex;  	struct list_head        pgdir_list;  	/* end: alloc staff */ @@ -672,6 +680,8 @@ void mlx5_health_cleanup(void);  void  __init mlx5_health_init(void);  void mlx5_start_health_poll(struct mlx5_core_dev *dev);  void mlx5_stop_health_poll(struct mlx5_core_dev *dev); +int mlx5_buf_alloc_node(struct mlx5_core_dev *dev, int size, +			struct mlx5_buf *buf, int node);  int mlx5_buf_alloc(struct mlx5_core_dev *dev, int size, struct mlx5_buf *buf);  void mlx5_buf_free(struct mlx5_core_dev *dev, struct mlx5_buf *buf);  struct mlx5_cmd_mailbox *mlx5_alloc_cmd_mailbox_chain(struct mlx5_core_dev *dev, @@ -752,9 +762,10 @@ int mlx5_query_port_proto_oper(struct mlx5_core_dev *dev,  			       u8 local_port);  int mlx5_set_port_proto(struct mlx5_core_dev *dev, u32 proto_admin,  			int proto_mask); -int mlx5_set_port_status(struct mlx5_core_dev *dev, -			 enum mlx5_port_status status); -int mlx5_query_port_status(struct mlx5_core_dev *dev, u8 *status); +int mlx5_set_port_admin_status(struct mlx5_core_dev *dev, +			       enum mlx5_port_status status); +int mlx5_query_port_admin_status(struct mlx5_core_dev *dev, +				 enum mlx5_port_status *status);  int mlx5_set_port_mtu(struct mlx5_core_dev *dev, int mtu, u8 port);  void mlx5_query_port_max_mtu(struct mlx5_core_dev *dev, int *max_mtu, u8 port); @@ -764,6 +775,10 @@ void mlx5_query_port_oper_mtu(struct mlx5_core_dev *dev, int *oper_mtu,  int mlx5_query_port_vl_hw_cap(struct mlx5_core_dev *dev,  			      u8 *vl_hw_cap, u8 local_port); +int mlx5_set_port_pause(struct mlx5_core_dev *dev, u32 rx_pause, u32 tx_pause); +int mlx5_query_port_pause(struct mlx5_core_dev *dev, +			  u32 *rx_pause, u32 *tx_pause); +  int mlx5_debug_eq_add(struct mlx5_core_dev *dev, struct mlx5_eq *eq);  void mlx5_debug_eq_remove(struct mlx5_core_dev *dev, struct mlx5_eq *eq);  int mlx5_core_eq_query(struct mlx5_core_dev *dev, struct mlx5_eq *eq, @@ -773,6 +788,8 @@ void mlx5_eq_debugfs_cleanup(struct mlx5_core_dev *dev);  int mlx5_cq_debugfs_init(struct mlx5_core_dev *dev);  void mlx5_cq_debugfs_cleanup(struct mlx5_core_dev *dev);  int mlx5_db_alloc(struct mlx5_core_dev *dev, struct mlx5_db *db); +int mlx5_db_alloc_node(struct mlx5_core_dev *dev, struct mlx5_db *db, +		       int node);  void mlx5_db_free(struct mlx5_core_dev *dev, struct mlx5_db *db);  const char *mlx5_command_str(int command); @@ -828,6 +845,7 @@ void *mlx5_get_protocol_dev(struct mlx5_core_dev *mdev, int protocol);  int mlx5_register_interface(struct mlx5_interface *intf);  void mlx5_unregister_interface(struct mlx5_interface *intf);  int mlx5_core_query_vendor_id(struct mlx5_core_dev *mdev, u32 *vendor_id); +int mlx5_core_query_special_context(struct mlx5_core_dev *dev, u32 *rsvd_lkey);  struct mlx5_profile {  	u64	mask; diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h index 6d2f6fee041c..dd2097455a2e 100644 --- a/include/linux/mlx5/mlx5_ifc.h +++ b/include/linux/mlx5/mlx5_ifc.h @@ -1936,9 +1936,9 @@ enum {  };  enum { -	MLX5_TIRC_RX_HASH_FN_HASH_NONE           = 0x0, -	MLX5_TIRC_RX_HASH_FN_HASH_INVERTED_XOR8  = 0x1, -	MLX5_TIRC_RX_HASH_FN_HASH_TOEPLITZ       = 0x2, +	MLX5_RX_HASH_FN_NONE           = 0x0, +	MLX5_RX_HASH_FN_INVERTED_XOR8  = 0x1, +	MLX5_RX_HASH_FN_TOEPLITZ       = 0x2,  };  enum { @@ -4050,6 +4050,13 @@ struct mlx5_ifc_modify_tis_in_bits {  	struct mlx5_ifc_tisc_bits ctx;  }; +struct mlx5_ifc_modify_tir_bitmask_bits { +	u8	   reserved[0x20]; + +	u8         reserved1[0x1f]; +	u8         lro[0x1]; +}; +  struct mlx5_ifc_modify_tir_out_bits {  	u8         status[0x8];  	u8         reserved_0[0x18]; @@ -4071,7 +4078,7 @@ struct mlx5_ifc_modify_tir_in_bits {  	u8         reserved_3[0x20]; -	u8         modify_bitmask[0x40]; +	struct mlx5_ifc_modify_tir_bitmask_bits bitmask;  	u8         reserved_4[0x40]; @@ -4116,6 +4123,13 @@ struct mlx5_ifc_modify_rqt_out_bits {  	u8         reserved_1[0x40];  }; +struct mlx5_ifc_rqt_bitmask_bits { +	u8	   reserved[0x20]; + +	u8         reserved1[0x1f]; +	u8         rqn_list[0x1]; +}; +  struct mlx5_ifc_modify_rqt_in_bits {  	u8         opcode[0x10];  	u8         reserved_0[0x10]; @@ -4128,7 +4142,7 @@ struct mlx5_ifc_modify_rqt_in_bits {  	u8         reserved_3[0x20]; -	u8         modify_bitmask[0x40]; +	struct mlx5_ifc_rqt_bitmask_bits bitmask;  	u8         reserved_4[0x40];  |