net/qede/base: update FW to 8.40.25.0
[dpdk.git] / drivers / net / qede / base / ecore_init_fw_funcs.h
index 3503a90..1d1b107 100644 (file)
@@ -6,7 +6,20 @@
 
 #ifndef _INIT_FW_FUNCS_H
 #define _INIT_FW_FUNCS_H
-/* Forward declarations */
+#include "ecore_hsi_common.h"
+#include "ecore_hsi_eth.h"
+
+/* Physical memory descriptor */
+struct phys_mem_desc {
+       dma_addr_t phys_addr;
+       void *virt_addr;
+       u32 size; /* In bytes */
+};
+
+/* Returns the VOQ based on port and TC */
+#define VOQ(port, tc, max_phys_tcs_per_port) \
+       ((tc) == PURE_LB_TC ? NUM_OF_PHYS_TCS * MAX_NUM_PORTS_BB + (port) : \
+        (port) * (max_phys_tcs_per_port) + (tc))
 
 struct init_qm_pq_params;
 
@@ -16,6 +29,7 @@ struct init_qm_pq_params;
  * Returns the required host memory size in 4KB units.
  * Must be called before all QM init HSI functions.
  *
+ * @param p_hwfn -             HW device data
  * @param num_pf_cids - number of connections used by this PF
  * @param num_vf_cids -        number of connections used by VFs of this PF
  * @param num_tids -   number of tasks used by this PF
@@ -24,7 +38,8 @@ struct init_qm_pq_params;
  *
  * @return The required host memory size in 4KB units.
  */
-u32 ecore_qm_pf_mem_size(u32 num_pf_cids,
+u32 ecore_qm_pf_mem_size(struct ecore_hwfn *p_hwfn,
+                        u32 num_pf_cids,
                                                 u32 num_vf_cids,
                                                 u32 num_tids,
                                                 u16 num_pf_pqs,
@@ -39,20 +54,24 @@ u32 ecore_qm_pf_mem_size(u32 num_pf_cids,
  * @param max_phys_tcs_per_port        - max number of physical TCs per port in HW
  * @param pf_rl_en             - enable per-PF rate limiters
  * @param pf_wfq_en            - enable per-PF WFQ
- * @param vport_rl_en          - enable per-VPORT rate limiters
+ * @param global_rl_en -         enable global rate limiters
  * @param vport_wfq_en         - enable per-VPORT WFQ
- * @param port_params - array of size MAX_NUM_PORTS with params for each port
+ * @param port_params -                  array with parameters for each port.
+ * @param global_rl_params -     array with parameters for each global RL.
+ *                               If OSAL_NULL, global RLs are not configured.
  *
  * @return 0 on success, -1 on error.
  */
 int ecore_qm_common_rt_init(struct ecore_hwfn *p_hwfn,
-                        u8 max_ports_per_engine,
-                        u8 max_phys_tcs_per_port,
-                        bool pf_rl_en,
-                        bool pf_wfq_en,
-                        bool vport_rl_en,
-                        bool vport_wfq_en,
-                        struct init_qm_port_params port_params[MAX_NUM_PORTS]);
+                           u8 max_ports_per_engine,
+                           u8 max_phys_tcs_per_port,
+                           bool pf_rl_en,
+                           bool pf_wfq_en,
+                           bool global_rl_en,
+                           bool vport_wfq_en,
+                         struct init_qm_port_params port_params[MAX_NUM_PORTS],
+                         struct init_qm_global_rl_params
+                                global_rl_params[COMMON_MAX_QM_GLOBAL_RLS]);
 
 /**
  * @brief ecore_qm_pf_rt_init  Prepare QM runtime init values for the PF phase
@@ -76,7 +95,6 @@ int ecore_qm_common_rt_init(struct ecore_hwfn *p_hwfn,
  *                be 0. otherwise, the weight must be non-zero.
  * @param pf_rl - rate limit in Mb/sec units. a value of 0 means don't
  *                configure. ignored if PF RL is globally disabled.
- * @param link_speed -           link speed in Mbps.
  * @param pq_params - array of size (num_pf_pqs+num_vf_pqs) with parameters for
  *                    each Tx PQ associated with the specified PF.
  * @param vport_params - array of size num_vports with parameters for each
@@ -95,11 +113,10 @@ int ecore_qm_pf_rt_init(struct ecore_hwfn *p_hwfn,
                        u16 start_pq,
                        u16 num_pf_pqs,
                        u16 num_vf_pqs,
-                       u8 start_vport,
-                       u8 num_vports,
+                       u16 start_vport,
+                       u16 num_vports,
                        u16 pf_wfq,
                        u32 pf_rl,
-                       u32 link_speed,
                        struct init_qm_pq_params *pq_params,
                        struct init_qm_vport_params *vport_params);
 
@@ -141,14 +158,30 @@ int ecore_init_pf_rl(struct ecore_hwfn *p_hwfn,
  * @param first_tx_pq_id- An array containing the first Tx PQ ID associated
  *                        with the VPORT for each TC. This array is filled by
  *                        ecore_qm_pf_rt_init
- * @param vport_wfq            - WFQ weight. Must be non-zero.
+ * @param wfq -                   WFQ weight. Must be non-zero.
  *
  * @return 0 on success, -1 on error.
  */
 int ecore_init_vport_wfq(struct ecore_hwfn *p_hwfn,
                                                 struct ecore_ptt *p_ptt,
                                                 u16 first_tx_pq_id[NUM_OF_TCS],
-                                                u16 vport_wfq);
+                        u16 wfq);
+
+/**
+ * @brief ecore_init_global_rl - Initializes the rate limit of the specified
+ * rate limiter.
+ *
+ * @param p_hwfn -             HW device data
+ * @param p_ptt -              ptt window used for writing the registers
+ * @param rl_id -      RL ID
+ * @param rate_limit - rate limit in Mb/sec units
+ *
+ * @return 0 on success, -1 on error.
+ */
+int ecore_init_global_rl(struct ecore_hwfn *p_hwfn,
+                        struct ecore_ptt *p_ptt,
+                        u16 rl_id,
+                        u32 rate_limit);
 
 /**
  * @brief ecore_init_vport_rl - Initializes the rate limit of the specified
@@ -283,8 +316,9 @@ void ecore_set_port_mf_ovlan_eth_type(struct ecore_hwfn *p_hwfn,
 
 /**
  * @brief ecore_set_vxlan_dest_port - initializes vxlan tunnel destination udp
- *                                    port
+ * port.
  *
+ * @param p_hwfn -       HW device data
  * @param p_ptt     - ptt window used for writing the registers.
  * @param dest_port - vxlan destination udp port.
  */
@@ -295,6 +329,7 @@ void ecore_set_vxlan_dest_port(struct ecore_hwfn *p_hwfn,
 /**
  * @brief ecore_set_vxlan_enable - enable or disable VXLAN tunnel in HW
  *
+ * @param p_hwfn -      HW device data
  * @param p_ptt                - ptt window used for writing the registers.
  * @param vxlan_enable - vxlan enable flag.
  */
@@ -305,6 +340,7 @@ void ecore_set_vxlan_enable(struct ecore_hwfn *p_hwfn,
 /**
  * @brief ecore_set_gre_enable - enable or disable GRE tunnel in HW
  *
+ * @param p_hwfn -        HW device data
  * @param p_ptt          - ptt window used for writing the registers.
  * @param eth_gre_enable - eth GRE enable enable flag.
  * @param ip_gre_enable  - IP GRE enable enable flag.
@@ -318,6 +354,7 @@ void ecore_set_gre_enable(struct ecore_hwfn *p_hwfn,
  * @brief ecore_set_geneve_dest_port - initializes geneve tunnel destination
  *                                     udp port
  *
+ * @param p_hwfn -       HW device data
  * @param p_ptt     - ptt window used for writing the registers.
  * @param dest_port - geneve destination udp port.
  */
@@ -326,8 +363,9 @@ void ecore_set_geneve_dest_port(struct ecore_hwfn *p_hwfn,
                                u16 dest_port);
 
 /**
- * @brief ecore_set_gre_enable - enable or disable GRE tunnel in HW
+ * @brief ecore_set_geneve_enable - enable or disable GRE tunnel in HW
  *
+ * @param p_hwfn -         HW device data
  * @param p_ptt             - ptt window used for writing the registers.
  * @param eth_geneve_enable - eth GENEVE enable enable flag.
  * @param ip_geneve_enable  - IP GENEVE enable enable flag.
@@ -347,7 +385,7 @@ void ecore_set_gft_event_id_cm_hdr(struct ecore_hwfn *p_hwfn,
                                   struct ecore_ptt *p_ptt);
 
 /**
- * @brief ecore_gft_disable - Disable and GFT
+ * @brief ecore_gft_disable - Disable GFT
  *
  * @param p_hwfn -   HW device data
  * @param p_ptt -   ptt window used for writing the registers.
@@ -360,6 +398,7 @@ void ecore_gft_disable(struct ecore_hwfn *p_hwfn,
 /**
  * @brief ecore_gft_config - Enable and configure HW for GFT
 *
+ * @param p_hwfn -   HW device data
 * @param p_ptt - ptt window used for writing the registers.
  * @param pf_id - pf on which to enable GFT.
 * @param tcp   - set profile tcp packets.
@@ -382,12 +421,13 @@ void ecore_gft_config(struct ecore_hwfn *p_hwfn,
 * @brief ecore_config_vf_zone_size_mode - Configure VF zone size mode. Must be
 *                                         used before first ETH queue started.
 *
-*
+ * @param p_hwfn -      HW device data
 * @param p_ptt        -  ptt window used for writing the registers. Don't care
-*                        if runtime_init used
+ *           if runtime_init used.
 * @param mode         -  VF zone size mode. Use enum vf_zone_size_mode.
-* @param runtime_init -  Set 1 to init runtime registers in engine phase. Set 0
-*                        if VF zone size mode configured after engine phase.
+ * @param runtime_init - Set 1 to init runtime registers in engine phase.
+ *           Set 0 if VF zone size mode configured after engine
+ *           phase.
 */
 void ecore_config_vf_zone_size_mode(struct ecore_hwfn *p_hwfn, struct ecore_ptt
                                    *p_ptt, u16 mode, bool runtime_init);
@@ -396,6 +436,7 @@ void ecore_config_vf_zone_size_mode(struct ecore_hwfn *p_hwfn, struct ecore_ptt
  * @brief ecore_get_mstorm_queue_stat_offset - Get mstorm statistics offset by
  * VF zone size mode.
 *
+ * @param p_hwfn -         HW device data
 * @param stat_cnt_id         -  statistic counter id
 * @param vf_zone_size_mode   -  VF zone size mode. Use enum vf_zone_size_mode.
 */
@@ -406,6 +447,7 @@ u32 ecore_get_mstorm_queue_stat_offset(struct ecore_hwfn *p_hwfn,
  * @brief ecore_get_mstorm_eth_vf_prods_offset - VF producer offset by VF zone
  * size mode.
 *
+ * @param p_hwfn -           HW device data
 * @param vf_id               -  vf id.
 * @param vf_queue_id         -  per VF rx queue id.
 * @param vf_zone_size_mode   -  vf zone size mode. Use enum vf_zone_size_mode.
@@ -416,6 +458,7 @@ u32 ecore_get_mstorm_eth_vf_prods_offset(struct ecore_hwfn *p_hwfn, u8 vf_id, u8
  * @brief ecore_enable_context_validation - Enable and configure context
  *                                          validation.
  *
+ * @param p_hwfn -   HW device data
  * @param p_ptt - ptt window used for writing the registers.
  */
 void ecore_enable_context_validation(struct ecore_hwfn *p_hwfn,
@@ -424,12 +467,14 @@ void ecore_enable_context_validation(struct ecore_hwfn *p_hwfn,
  * @brief ecore_calc_session_ctx_validation - Calcualte validation byte for
  * session context.
  *
+ * @param p_hwfn -             HW device data
  * @param p_ctx_mem -  pointer to context memory.
  * @param ctx_size -   context size.
  * @param ctx_type -   context type.
  * @param cid -                context cid.
  */
-void ecore_calc_session_ctx_validation(void *p_ctx_mem,
+void ecore_calc_session_ctx_validation(struct ecore_hwfn *p_hwfn,
+                                      void *p_ctx_mem,
                                       u16 ctx_size,
                                       u8 ctx_type,
                                       u32 cid);
@@ -438,12 +483,14 @@ void ecore_calc_session_ctx_validation(void *p_ctx_mem,
  * @brief ecore_calc_task_ctx_validation - Calcualte validation byte for task
  * context.
  *
+ * @param p_hwfn -             HW device data
  * @param p_ctx_mem -  pointer to context memory.
  * @param ctx_size -   context size.
  * @param ctx_type -   context type.
  * @param tid -                    context tid.
  */
-void ecore_calc_task_ctx_validation(void *p_ctx_mem,
+void ecore_calc_task_ctx_validation(struct ecore_hwfn *p_hwfn,
+                                   void *p_ctx_mem,
                                    u16 ctx_size,
                                    u8 ctx_type,
                                    u32 tid);
@@ -457,18 +504,22 @@ void ecore_calc_task_ctx_validation(void *p_ctx_mem,
  * @param ctx_size -  size to initialzie.
  * @param ctx_type -  context type.
  */
-void ecore_memset_session_ctx(void *p_ctx_mem,
+void ecore_memset_session_ctx(struct ecore_hwfn *p_hwfn,
+                             void *p_ctx_mem,
                              u32 ctx_size,
                              u8 ctx_type);
+
 /**
  * @brief ecore_memset_task_ctx - Memset task context to 0 while preserving
  * validation bytes.
  *
+ * @param p_hwfn -             HW device data
  * @param p_ctx_mem - pointer to context memory.
  * @param ctx_size -  size to initialzie.
  * @param ctx_type -  context type.
  */
-void ecore_memset_task_ctx(void *p_ctx_mem,
+void ecore_memset_task_ctx(struct ecore_hwfn *p_hwfn,
+                          void *p_ctx_mem,
                           u32 ctx_size,
                           u8 ctx_type);