]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/seastar/dpdk/drivers/net/qede/base/ecore_l2_api.h
import 15.2.0 Octopus source
[ceph.git] / ceph / src / seastar / dpdk / drivers / net / qede / base / ecore_l2_api.h
index d09f3c4a3590506fe8f9fdcfaf63a82b7d1b9c79..004fb61baf11090a054045efceb52ece70d6d2fa 100644 (file)
@@ -1,9 +1,7 @@
-/*
- * Copyright (c) 2016 QLogic Corporation.
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright (c) 2016 - 2018 Cavium Inc.
  * All rights reserved.
- * www.qlogic.com
- *
- * See LICENSE.qede_pmd for copyright and licensing details.
+ * www.cavium.com
  */
 
 #ifndef __ECORE_L2_API_H__
@@ -11,6 +9,7 @@
 
 #include "ecore_status.h"
 #include "ecore_sp_api.h"
+#include "ecore_int_api.h"
 
 #ifndef __EXTRACT__LINUX__
 enum ecore_rss_caps {
@@ -35,8 +34,7 @@ struct ecore_queue_start_common_params {
        /* Relative, but relevant only for PFs */
        u8 stats_id;
 
-       /* These are always absolute */
-       u16 sb;
+       struct ecore_sb_info *p_sb;
        u8 sb_idx;
 };
 
@@ -139,6 +137,16 @@ struct ecore_filter_accept_flags {
 #define ECORE_ACCEPT_MCAST_MATCHED     0x08
 #define ECORE_ACCEPT_MCAST_UNMATCHED   0x10
 #define ECORE_ACCEPT_BCAST             0x20
+#define ECORE_ACCEPT_ANY_VNI           0x40
+};
+
+enum ecore_filter_config_mode {
+       ECORE_FILTER_CONFIG_MODE_DISABLE,
+       ECORE_FILTER_CONFIG_MODE_5_TUPLE,
+       ECORE_FILTER_CONFIG_MODE_L4_PORT,
+       ECORE_FILTER_CONFIG_MODE_IP_DEST,
+       ECORE_FILTER_CONFIG_MODE_TUNN_TYPE,
+       ECORE_FILTER_CONFIG_MODE_IP_SRC,
 };
 
 struct ecore_arfs_config_params {
@@ -146,7 +154,7 @@ struct ecore_arfs_config_params {
        bool udp;
        bool ipv4;
        bool ipv6;
-       bool arfs_enable;       /* Enable or disable arfs mode */
+       enum ecore_filter_config_mode mode;
 };
 
 /* Add / remove / move / remove-all unicast MAC-VLAN filters.
@@ -332,14 +340,17 @@ struct ecore_sp_vport_update_params {
        u8                      anti_spoofing_en;
        u8                      update_accept_any_vlan_flg;
        u8                      accept_any_vlan;
-       unsigned long           bins[8];
+       u32                     bins[8];
        struct ecore_rss_params *rss_params;
        struct ecore_filter_accept_flags accept_flags;
        struct ecore_sge_tpa_params *sge_tpa_params;
        /* MTU change - notice this requires the vport to be disabled.
         * If non-zero, value would be used.
         */
-       u16 mtu;
+       u16                     mtu;
+       u8                      update_ctl_frame_check;
+       u8                      mac_chk_en;
+       u8                      ethtype_chk_en;
 };
 
 /**
@@ -436,4 +447,54 @@ void ecore_reset_vport_stats(struct ecore_dev *p_dev);
 void ecore_arfs_mode_configure(struct ecore_hwfn *p_hwfn,
                               struct ecore_ptt *p_ptt,
                               struct ecore_arfs_config_params *p_cfg_params);
+
+/**
+ * @brief - ecore_configure_rfs_ntuple_filter
+ *
+ * This ramrod should be used to add or remove arfs hw filter
+ *
+ * @params p_hwfn
+ * @params p_cb                Used for ECORE_SPQ_MODE_CB,where client would initialize
+ *                     it with cookie and callback function address, if not
+ *                     using this mode then client must pass NULL.
+ * @params p_addr      p_addr is an actual packet header that needs to be
+ *                     filter. It has to mapped with IO to read prior to
+ *                     calling this, [contains 4 tuples- src ip, dest ip,
+ *                     src port, dest port].
+ * @params length      length of p_addr header up to past the transport header.
+ * @params qid         receive packet will be directed to this queue.
+ * @params vport_id
+ * @params b_is_add    flag to add or remove filter.
+ *
+ */
+enum _ecore_status_t
+ecore_configure_rfs_ntuple_filter(struct ecore_hwfn *p_hwfn,
+                                 struct ecore_spq_comp_cb *p_cb,
+                                 dma_addr_t p_addr, u16 length,
+                                 u16 qid, u8 vport_id,
+                                 bool b_is_add);
+
+/**
+ * @brief - ecore_update_eth_rss_ind_table_entry
+ *
+ * This function being used to update RSS indirection table entry to FW RAM
+ * instead of using the SP vport update ramrod with rss params.
+ *
+ * Notice:
+ * This function supports only one outstanding command per engine. Ecore
+ * clients which use this function should call ecore_mcp_ind_table_lock() prior
+ * to it and ecore_mcp_ind_table_unlock() after it.
+ *
+ * @params p_hwfn
+ * @params vport_id
+ * @params ind_table_index
+ * @params ind_table_value
+ *
+ * @return enum _ecore_status_t
+ */
+enum _ecore_status_t
+ecore_update_eth_rss_ind_table_entry(struct ecore_hwfn *p_hwfn,
+                                    u8 vport_id,
+                                    u8 ind_table_index,
+                                    u16 ind_table_value);
 #endif