net/i40e/base: new AQ commands for PPP
[dpdk.git] / drivers / net / i40e / base / i40e_type.h
index 590d97c..84d5757 100644 (file)
@@ -133,6 +133,7 @@ enum i40e_debug_mask {
        I40E_DEBUG_DCB                  = 0x00000400,
        I40E_DEBUG_DIAG                 = 0x00000800,
        I40E_DEBUG_FD                   = 0x00001000,
+       I40E_DEBUG_PACKAGE              = 0x00002000,
 
        I40E_DEBUG_AQ_MESSAGE           = 0x01000000,
        I40E_DEBUG_AQ_DESCRIPTOR        = 0x02000000,
@@ -1878,4 +1879,83 @@ struct i40e_lldp_variables {
 #define I40E_FLEX_56_MASK              (0x1ULL << I40E_FLEX_56_SHIFT)
 #define I40E_FLEX_57_SHIFT             6
 #define I40E_FLEX_57_MASK              (0x1ULL << I40E_FLEX_57_SHIFT)
+
+/* Version format for Dynamic Device Personalization(DDP) */
+struct i40e_ddp_version {
+       u8 major;
+       u8 minor;
+       u8 update;
+       u8 draft;
+};
+
+#define I40E_DDP_NAME_SIZE     32
+
+/* Package header */
+struct i40e_package_header {
+       struct i40e_ddp_version version;
+       u32 segment_count;
+       u32 segment_offset[1];
+};
+
+/* Generic segment header */
+struct i40e_generic_seg_header {
+#define SEGMENT_TYPE_METADATA  0x00000001
+#define SEGMENT_TYPE_NOTES     0x00000002
+#define SEGMENT_TYPE_I40E      0x00000011
+#define SEGMENT_TYPE_X722      0x00000012
+       u32 type;
+       struct i40e_ddp_version version;
+       u32 size;
+       char name[I40E_DDP_NAME_SIZE];
+};
+
+struct i40e_metadata_segment {
+       struct i40e_generic_seg_header header;
+       struct i40e_ddp_version version;
+       u32 track_id;
+       char     name[I40E_DDP_NAME_SIZE];
+};
+
+struct i40e_device_id_entry {
+       u32 vendor_dev_id;
+       u32 sub_vendor_dev_id;
+};
+
+struct i40e_profile_segment {
+       struct i40e_generic_seg_header header;
+       struct i40e_ddp_version version;
+       char name[I40E_DDP_NAME_SIZE];
+       u32 device_table_count;
+       struct i40e_device_id_entry device_table[1];
+};
+
+struct i40e_section_table {
+       u32 section_count;
+       u32 section_offset[1];
+};
+
+struct i40e_profile_section_header {
+       u16 tbl_size;
+       u16 data_end;
+       struct {
+#define SECTION_TYPE_INFO      0x00000010
+#define SECTION_TYPE_MMIO      0x00000800
+#define SECTION_TYPE_AQ                0x00000801
+#define SECTION_TYPE_NOTE      0x80000000
+#define SECTION_TYPE_NAME      0x80000001
+               u32 type;
+               u32 offset;
+               u32 size;
+       } section;
+};
+
+struct i40e_profile_info {
+       u32 track_id;
+       struct i40e_ddp_version version;
+       u8 op;
+#define I40E_DDP_ADD_TRACKID           0x01
+#define I40E_DDP_REMOVE_TRACKID        0x02
+       u8 reserved[7];
+       u8 name[I40E_DDP_NAME_SIZE];
+};
 #endif /* _I40E_TYPE_H_ */