-/*
- * 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 _QEDE_IF_H
struct qed_dev_info {
uint8_t num_hwfns;
- uint8_t hw_mac[ETHER_ADDR_LEN];
+ uint8_t hw_mac[RTE_ETHER_ADDR_LEN];
bool is_mf_default;
/* FW version */
#define QED_MFW_VERSION_3_OFFSET 24
uint32_t flash_size;
- uint8_t mf_mode;
+ bool b_arfs_capable;
+ bool b_inter_pf_switch;
bool tx_switching;
u16 mtu;
bool smart_an;
+ /* MBI version */
+ uint32_t mbi_version;
+#define QED_MBI_VERSION_0_MASK 0x000000FF
+#define QED_MBI_VERSION_0_OFFSET 0
+#define QED_MBI_VERSION_1_MASK 0x0000FF00
+#define QED_MBI_VERSION_1_OFFSET 8
+#define QED_MBI_VERSION_2_MASK 0x00FF0000
+#define QED_MBI_VERSION_2_OFFSET 16
+
/* Out param for qede */
bool vxlan_enable;
bool gre_enable;
uint8_t num_queues;
uint8_t num_tc;
- struct ether_addr port_mac;
+ struct rte_ether_addr port_mac;
uint16_t num_vlan_filters;
uint32_t num_mac_filters;
const struct qed_common_ops *common;
int (*fill_dev_info)(struct ecore_dev *edev,
struct qed_dev_eth_info *info);
+ void (*sriov_configure)(struct ecore_dev *edev, int num_vfs);
};
struct qed_link_params {
#define QED_LINK_OVERRIDE_SPEED_ADV_SPEEDS (1 << 1)
#define QED_LINK_OVERRIDE_SPEED_FORCED_SPEED (1 << 2)
#define QED_LINK_OVERRIDE_PAUSE_CONFIG (1 << 3)
+#define QED_LINK_OVERRIDE_EEE_CONFIG (1 << 5)
uint32_t override_flags;
bool autoneg;
uint32_t adv_speeds;
#define QED_LINK_PAUSE_RX_ENABLE (1 << 1)
#define QED_LINK_PAUSE_TX_ENABLE (1 << 2)
uint32_t pause_config;
+ struct ecore_link_eee_params eee;
};
struct qed_link_output {
uint32_t speed; /* In Mb/s */
uint32_t adv_speed; /* Speed mask */
uint8_t duplex; /* In DUPLEX defs */
- uint8_t port; /* In PORT defs */
+ uint16_t port; /* In PORT defs */
bool autoneg;
uint32_t pause_config;
+
+ /* EEE - capability & param */
+ bool eee_supported;
+ bool eee_active;
+ u8 sup_caps;
+ struct ecore_link_eee_params eee;
};
struct qed_slowpath_params {
uint32_t dp_module, uint8_t dp_level);
int (*send_drv_state)(struct ecore_dev *edev, bool active);
+
+ /* ############### DEBUG *************************/
+
+ int (*dbg_grc)(struct ecore_dev *edev,
+ void *buffer,
+ u32 *num_dumped_bytes);
+ int (*dbg_grc_size)(struct ecore_dev *edev);
+
+ int (*dbg_idle_chk)(struct ecore_dev *edev,
+ void *buffer,
+ u32 *num_dumped_bytes);
+ int (*dbg_idle_chk_size)(struct ecore_dev *edev);
+
+ int (*dbg_reg_fifo)(struct ecore_dev *edev,
+ void *buffer,
+ u32 *num_dumped_bytes);
+ int (*dbg_reg_fifo_size)(struct ecore_dev *edev);
+
+ int (*dbg_mcp_trace)(struct ecore_dev *edev,
+ void *buffer,
+ u32 *num_dumped_bytes);
+ int (*dbg_mcp_trace_size)(struct ecore_dev *edev);
+
+ int (*dbg_protection_override)(struct ecore_dev *edev, void *buffer,
+ u32 *num_dumped_bytes);
+ int (*dbg_protection_override_size)(struct ecore_dev *edev);
+
+ int (*dbg_igu_fifo_size)(struct ecore_dev *edev);
+ int (*dbg_igu_fifo)(struct ecore_dev *edev, void *buffer,
+ u32 *num_dumped_bytes);
+
+ int (*dbg_fw_asserts)(struct ecore_dev *edev, void *buffer,
+ u32 *num_dumped_bytes);
+
+ int (*dbg_fw_asserts_size)(struct ecore_dev *edev);
+
+ int (*dbg_ilt)(struct ecore_dev *edev, void *buffer,
+ u32 *num_dumped_bytes);
+
+ int (*dbg_ilt_size)(struct ecore_dev *edev);
+
+ u8 (*dbg_get_debug_engine)(struct ecore_dev *edev);
+ void (*dbg_set_debug_engine)(struct ecore_dev *edev,
+ int engine_number);
+
};
/* Externs */