fm10k: move to drivers/net/
[dpdk.git] / lib / librte_pmd_i40e / i40e / i40e_dcb.h
index 77f1d49..2d4a3d0 100644 (file)
@@ -1,6 +1,6 @@
 /*******************************************************************************
 
-Copyright (c) 2013 - 2014, Intel Corporation
+Copyright (c) 2013 - 2015, Intel Corporation
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -81,6 +81,11 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_IEEE_ETS_PRIO_0_MASK      (0x7 << I40E_IEEE_ETS_PRIO_0_SHIFT)
 #define I40E_IEEE_ETS_PRIO_1_SHIFT     4
 #define I40E_IEEE_ETS_PRIO_1_MASK      (0x7 << I40E_IEEE_ETS_PRIO_1_SHIFT)
+#define I40E_CEE_PGID_PRIO_0_SHIFT     0
+#define I40E_CEE_PGID_PRIO_0_MASK      (0xF << I40E_CEE_PGID_PRIO_0_SHIFT)
+#define I40E_CEE_PGID_PRIO_1_SHIFT     4
+#define I40E_CEE_PGID_PRIO_1_MASK      (0xF << I40E_CEE_PGID_PRIO_1_SHIFT)
+#define I40E_CEE_PGID_STRICT           15
 
 /* Defines for IEEE TSA types */
 #define I40E_IEEE_TSA_STRICT           0
@@ -102,6 +107,20 @@ POSSIBILITY OF SUCH DAMAGE.
 #define I40E_IEEE_APP_PRIO_SHIFT       5
 #define I40E_IEEE_APP_PRIO_MASK                (0x7 << I40E_IEEE_APP_PRIO_SHIFT)
 
+/* TLV definitions for preparing MIB */
+#define I40E_TLV_ID_CHASSIS_ID         0
+#define I40E_TLV_ID_PORT_ID            1
+#define I40E_TLV_ID_TIME_TO_LIVE       2
+#define I40E_IEEE_TLV_ID_ETS_CFG       3
+#define I40E_IEEE_TLV_ID_ETS_REC       4
+#define I40E_IEEE_TLV_ID_PFC_CFG       5
+#define I40E_IEEE_TLV_ID_APP_PRI       6
+#define I40E_TLV_ID_END_OF_LLDPPDU     7
+#define I40E_TLV_ID_START              I40E_IEEE_TLV_ID_ETS_CFG
+
+#define I40E_IEEE_ETS_TLV_LENGTH       25
+#define I40E_IEEE_PFC_TLV_LENGTH       6
+#define I40E_IEEE_APP_TLV_LENGTH       11
 
 #pragma pack(1)
 
@@ -149,109 +168,6 @@ struct i40e_dcbx_variables {
        u32 deftsaassignment;
 };
 
-#ifdef I40E_DCB_SW
-/* Data structures to pass for SW DCBX */
-struct i40e_rx_pb_config {
-       u32     shared_pool_size;
-       u32     shared_pool_high_wm;
-       u32     shared_pool_low_wm;
-       u32     shared_pool_high_thresh[I40E_MAX_TRAFFIC_CLASS];
-       u32     shared_pool_low_thresh[I40E_MAX_TRAFFIC_CLASS];
-       u32     tc_pool_size[I40E_MAX_TRAFFIC_CLASS];
-       u32     tc_pool_high_wm[I40E_MAX_TRAFFIC_CLASS];
-       u32     tc_pool_low_wm[I40E_MAX_TRAFFIC_CLASS];
-};
-
-enum i40e_dcb_arbiter_mode {
-       I40E_DCB_ARB_MODE_STRICT_PRIORITY = 0,
-       I40E_DCB_ARB_MODE_ROUND_ROBIN = 1
-};
-
-#define I40E_DEFAULT_PAUSE_TIME                        0xffff
-#define I40E_MAX_FRAME_SIZE                    4608 /* 4.5 KB */
-
-#define I40E_DEVICE_RPB_SIZE                   968000 /* 968 KB */
-
-/* BitTimes (BT) conversion */
-#define I40E_BT2KB(BT) ((BT + (8 * 1024 - 1)) / (8 * 1024))
-#define I40E_B2BT(BT) (BT * 8)
-#define I40E_BT2B(BT) ((BT + (8 - 1)) / (8))
-
-/* Max Frame(TC) = MFS(max) + MFS(TC) */
-#define I40E_MAX_FRAME_TC(mfs_max, mfs_tc)     I40E_B2BT(mfs_max + mfs_tc)
-
-/* EEE Tx LPI Exit time in Bit Times */
-#define I40E_EEE_TX_LPI_EXIT_TIME              142500
-
-/* PCI Round Trip Time in Bit Times */
-#define I40E_PCIRTT_LINK_SPEED_10G             20000
-#define I40E_PCIRTT_BYTE_LINK_SPEED_20G                40000
-#define I40E_PCIRTT_BYTE_LINK_SPEED_40G                80000
-
-/* PFC Frame Delay Bit Times */
-#define I40E_PFC_FRAME_DELAY                   672
-
-/* Worst case Cable (10GBase-T) Delay Bit Times */
-#define I40E_CABLE_DELAY                       5556
-
-/* Higher Layer Delay @10G Bit Times */
-#define I40E_HIGHER_LAYER_DELAY_10G            6144
-
-/* Interface Delays in Bit Times */
-/* TODO: Add for other link speeds 20G/40G/etc. */
-#define I40E_INTERFACE_DELAY_10G_MAC_CONTROL   8192
-#define I40E_INTERFACE_DELAY_10G_MAC           8192
-#define I40E_INTERFACE_DELAY_10G_RS            8192
-
-#define I40E_INTERFACE_DELAY_XGXS              2048
-#define I40E_INTERFACE_DELAY_XAUI              2048
-
-#define I40E_INTERFACE_DELAY_10G_BASEX_PCS     2048
-#define I40E_INTERFACE_DELAY_10G_BASER_PCS     3584
-#define I40E_INTERFACE_DELAY_LX4_PMD           512
-#define I40E_INTERFACE_DELAY_CX4_PMD           512
-#define I40E_INTERFACE_DELAY_SERIAL_PMA                512
-#define I40E_INTERFACE_DELAY_PMD               512
-
-#define I40E_INTERFACE_DELAY_10G_BASET         25600
-
-/* delay values for with 10G BaseT in Bit Times */
-#define I40E_INTERFACE_DELAY_10G_COPPER        \
-       (I40E_INTERFACE_DELAY_10G_MAC + (2 * I40E_INTERFACE_DELAY_XAUI) \
-        + I40E_INTERFACE_DELAY_10G_BASET)
-#define I40E_DV_TC(mfs_max, mfs_tc) \
-               ((2 * I40E_MAX_FRAME_TC(mfs_max, mfs_tc)) \
-                 + I40E_PFC_FRAME_DELAY \
-                 + (2 * I40E_CABLE_DELAY) \
-                 + (2 * I40E_INTERFACE_DELAY_10G_COPPER) \
-                 + I40E_HIGHER_LAYER_DELAY_10G)
-#define I40E_STD_DV_TC(mfs_max, mfs_tc) \
-               (I40E_DV_TC(mfs_max, mfs_tc) + I40E_B2BT(mfs_max))
-
-enum i40e_status_code i40e_process_lldp_event(struct i40e_hw *hw,
-                                             struct i40e_arq_event_info *e);
-/* APIs for SW DCBX */
-void i40e_dcb_hw_rx_fifo_config(struct i40e_hw *hw,
-                               enum i40e_dcb_arbiter_mode ets_mode,
-                               enum i40e_dcb_arbiter_mode non_ets_mode,
-                               u32 max_exponent, u8 lltc_map);
-void i40e_dcb_hw_rx_cmd_monitor_config(struct i40e_hw *hw,
-                                      u8 num_tc, u8 num_ports);
-void i40e_dcb_hw_pfc_config(struct i40e_hw *hw,
-                           u8 pfc_en, u8 *prio_tc);
-void i40e_dcb_hw_set_num_tc(struct i40e_hw *hw, u8 num_tc);
-u8 i40e_dcb_hw_get_num_tc(struct i40e_hw *hw);
-void i40e_dcb_hw_rx_ets_bw_config(struct i40e_hw *hw, u8 *bw_share,
-                                 u8 *mode, u8 *prio_type);
-void i40e_dcb_hw_rx_up2tc_config(struct i40e_hw *hw, u8 *prio_tc);
-void i40e_dcb_hw_calculate_pool_sizes(struct i40e_hw *hw,
-                                     u8 num_ports, bool eee_enabled,
-                                     u8 pfc_en, u32 *mfs_tc,
-                                     struct i40e_rx_pb_config *pb_cfg);
-void i40e_dcb_hw_rx_pb_config(struct i40e_hw *hw,
-                             struct i40e_rx_pb_config *old_pb_cfg,
-                             struct i40e_rx_pb_config *new_pb_cfg);
-#endif /* I40E_DCB_SW */
 enum i40e_status_code i40e_get_dcbx_status(struct i40e_hw *hw,
                                           u16 *status);
 enum i40e_status_code i40e_lldp_to_dcb_config(u8 *lldpmib,
@@ -261,4 +177,5 @@ enum i40e_status_code i40e_aq_get_dcb_config(struct i40e_hw *hw, u8 mib_type,
                                             struct i40e_dcbx_config *dcbcfg);
 enum i40e_status_code i40e_get_dcb_config(struct i40e_hw *hw);
 enum i40e_status_code i40e_init_dcb(struct i40e_hw *hw);
+
 #endif /* _I40E_DCB_H_ */