net/mlx5: Port module event hardware structures
authorHuy Nguyen <huyn@mellanox.com>
Thu, 17 Nov 2016 11:45:56 +0000 (13:45 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 18 Nov 2016 17:08:57 +0000 (12:08 -0500)
Add hardware structures and constants definitions needed for module
events support.

Signed-off-by: Huy Nguyen <huyn@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/mlx5/device.h
include/linux/mlx5/mlx5_ifc.h
include/linux/mlx5/port.h

index 58276144ba81f338ae82f8d3ab960c7dff9d58e3..52b437431c6a642b04d33da532cfcd722c69fa0f 100644 (file)
@@ -277,6 +277,7 @@ enum mlx5_event {
        MLX5_EVENT_TYPE_INTERNAL_ERROR     = 0x08,
        MLX5_EVENT_TYPE_PORT_CHANGE        = 0x09,
        MLX5_EVENT_TYPE_GPIO_EVENT         = 0x15,
+       MLX5_EVENT_TYPE_PORT_MODULE_EVENT  = 0x16,
        MLX5_EVENT_TYPE_REMOTE_CONFIG      = 0x19,
 
        MLX5_EVENT_TYPE_DB_BF_CONGESTION   = 0x1a,
@@ -552,6 +553,15 @@ struct mlx5_eqe_vport_change {
        __be32          rsvd1[6];
 } __packed;
 
+struct mlx5_eqe_port_module {
+       u8        reserved_at_0[1];
+       u8        module;
+       u8        reserved_at_2[1];
+       u8        module_status;
+       u8        reserved_at_4[2];
+       u8        error_type;
+} __packed;
+
 union ev_data {
        __be32                          raw[7];
        struct mlx5_eqe_cmd             cmd;
@@ -565,6 +575,7 @@ union ev_data {
        struct mlx5_eqe_page_req        req_pages;
        struct mlx5_eqe_page_fault      page_fault;
        struct mlx5_eqe_vport_change    vport_change;
+       struct mlx5_eqe_port_module     port_module;
 } __packed;
 
 struct mlx5_eqe {
index 2632cb2caf1005c6886471dbd1c04bb62a1c98cf..cd1d530ca368fb0e88b983b3eb3e121efa4c8ff9 100644 (file)
@@ -824,7 +824,8 @@ struct mlx5_ifc_cmd_hca_cap_bits {
        u8         early_vf_enable[0x1];
        u8         reserved_at_1a9[0x2];
        u8         local_ca_ack_delay[0x5];
-       u8         reserved_at_1af[0x2];
+       u8         port_module_event[0x1];
+       u8         reserved_at_1b0[0x1];
        u8         ports_check[0x1];
        u8         reserved_at_1b2[0x1];
        u8         disable_link_up[0x1];
index b3065acd20b4c9f678d92c8d2e13a81a619dc006..dde8c7ec5ff1ff3918b4e5d2888fc379f1a0faa7 100644 (file)
@@ -94,6 +94,9 @@ enum mlx5e_link_mode {
 
 #define MLX5E_PROT_MASK(link_mode) (1 << link_mode)
 
+#define PORT_MODULE_EVENT_MODULE_STATUS_MASK 0xF
+#define PORT_MODULE_EVENT_ERROR_TYPE_MASK         0xF
+
 int mlx5_set_port_caps(struct mlx5_core_dev *dev, u8 port_num, u32 caps);
 int mlx5_query_port_ptys(struct mlx5_core_dev *dev, u32 *ptys,
                         int ptys_size, int proto_mask, u8 local_port);