+#define HNS3_SFP_INFO_BD0_LEN 20UL
+#define HNS3_SFP_INFO_BDX_LEN 24UL
+
+struct hns3_sfp_info_bd0_cmd {
+ uint16_t offset;
+ uint16_t read_len;
+ uint8_t data[HNS3_SFP_INFO_BD0_LEN];
+};
+
+struct hns3_sfp_type {
+ uint8_t type;
+ uint8_t ext_type;
+};
+
+/* Bitmap flags in supported_speed */
+#define HNS3_FIBER_LINK_SPEED_1G_BIT BIT(0)
+#define HNS3_FIBER_LINK_SPEED_10G_BIT BIT(1)
+#define HNS3_FIBER_LINK_SPEED_25G_BIT BIT(2)
+#define HNS3_FIBER_LINK_SPEED_50G_BIT BIT(3)
+#define HNS3_FIBER_LINK_SPEED_100G_BIT BIT(4)
+#define HNS3_FIBER_LINK_SPEED_40G_BIT BIT(5)
+#define HNS3_FIBER_LINK_SPEED_100M_BIT BIT(6)
+#define HNS3_FIBER_LINK_SPEED_10M_BIT BIT(7)
+#define HNS3_FIBER_LINK_SPEED_200G_BIT BIT(8)
+
+struct hns3_sfp_info_cmd {
+ uint32_t sfp_speed;
+ uint8_t query_type; /* 0: sfp speed, 1: active */
+ uint8_t active_fec; /* current FEC mode */
+ uint8_t autoneg; /* current autoneg state */
+ /* 0: not support autoneg, 1: support autoneg */
+ uint8_t autoneg_ability;
+ uint32_t supported_speed; /* speed supported by current media */
+ uint32_t module_type;
+ uint8_t rsv1[8];
+};
+