net/mlx4_core: Introduce ACCESS_REG CMD and eth_prot_ctrl dev cap
[cascardo/linux.git] / include / linux / mlx4 / device.h
index 73910da..181cd9f 100644 (file)
@@ -186,7 +186,8 @@ enum {
        MLX4_DEV_CAP_FLAG2_VXLAN_OFFLOADS       = 1LL <<  10,
        MLX4_DEV_CAP_FLAG2_MAD_DEMUX            = 1LL <<  11,
        MLX4_DEV_CAP_FLAG2_CQE_STRIDE           = 1LL <<  12,
-       MLX4_DEV_CAP_FLAG2_EQE_STRIDE           = 1LL <<  13
+       MLX4_DEV_CAP_FLAG2_EQE_STRIDE           = 1LL <<  13,
+       MLX4_DEV_CAP_FLAG2_ETH_PROT_CTRL        = 1LL <<  14
 };
 
 enum {
@@ -1319,4 +1320,41 @@ static inline bool mlx4_low_memory_profile(void)
        return is_kdump_kernel();
 }
 
+/* ACCESS REG commands */
+enum mlx4_access_reg_method {
+       MLX4_ACCESS_REG_QUERY = 0x1,
+       MLX4_ACCESS_REG_WRITE = 0x2,
+};
+
+/* ACCESS PTYS Reg command */
+enum mlx4_ptys_proto {
+       MLX4_PTYS_IB = 1<<0,
+       MLX4_PTYS_EN = 1<<2,
+};
+
+struct mlx4_ptys_reg {
+       u8 resrvd1;
+       u8 local_port;
+       u8 resrvd2;
+       u8 proto_mask;
+       __be32 resrvd3[2];
+       __be32 eth_proto_cap;
+       __be16 ib_width_cap;
+       __be16 ib_speed_cap;
+       __be32 resrvd4;
+       __be32 eth_proto_admin;
+       __be16 ib_width_admin;
+       __be16 ib_speed_admin;
+       __be32 resrvd5;
+       __be32 eth_proto_oper;
+       __be16 ib_width_oper;
+       __be16 ib_speed_oper;
+       __be32 resrvd6;
+       __be32 eth_proto_lp_adv;
+} __packed;
+
+int mlx4_ACCESS_PTYS_REG(struct mlx4_dev *dev,
+                        enum mlx4_access_reg_method method,
+                        struct mlx4_ptys_reg *ptys_reg);
+
 #endif /* MLX4_DEVICE_H */