2 * Copyright (c) 2016 QLogic Corporation.
6 * See LICENSE.qede_pmd for copyright and licensing details.
12 #include "qede_ethdev.h"
22 uint8_t hw_mac[ETHER_ADDR_LEN];
33 #define QED_MFW_VERSION_0_MASK 0x000000FF
34 #define QED_MFW_VERSION_0_OFFSET 0
35 #define QED_MFW_VERSION_1_MASK 0x0000FF00
36 #define QED_MFW_VERSION_1_OFFSET 8
37 #define QED_MFW_VERSION_2_MASK 0x00FF0000
38 #define QED_MFW_VERSION_2_OFFSET 16
39 #define QED_MFW_VERSION_3_MASK 0xFF000000
40 #define QED_MFW_VERSION_3_OFFSET 24
47 /* Out param for qede */
63 struct qed_link_params {
66 #define QED_LINK_OVERRIDE_SPEED_AUTONEG (1 << 0)
67 #define QED_LINK_OVERRIDE_SPEED_ADV_SPEEDS (1 << 1)
68 #define QED_LINK_OVERRIDE_SPEED_FORCED_SPEED (1 << 2)
69 #define QED_LINK_OVERRIDE_PAUSE_CONFIG (1 << 3)
70 uint32_t override_flags;
73 uint32_t forced_speed;
74 #define QED_LINK_PAUSE_AUTONEG_ENABLE (1 << 0)
75 #define QED_LINK_PAUSE_RX_ENABLE (1 << 1)
76 #define QED_LINK_PAUSE_TX_ENABLE (1 << 2)
77 uint32_t pause_config;
80 struct qed_link_output {
82 uint32_t supported_caps; /* In SUPPORTED defs */
83 uint32_t advertised_caps; /* In ADVERTISED defs */
84 uint32_t lp_caps; /* In ADVERTISED defs */
85 uint32_t speed; /* In Mb/s */
86 uint32_t adv_speed; /* Speed mask */
87 uint8_t duplex; /* In DUPLEX defs */
88 uint8_t port; /* In PORT defs */
90 uint32_t pause_config;
93 struct qed_slowpath_params {
99 uint8_t name[NAME_SIZE];
102 #define ILT_PAGE_SIZE_TCFC 0x8000 /* 32KB */
104 struct qed_eth_tlvs {
124 struct qed_tunn_update_params {
125 unsigned long tunn_mode_update_mask;
126 unsigned long tunn_mode;
129 u8 update_rx_pf_clss;
130 u8 update_tx_pf_clss;
131 u8 update_vxlan_udp_port;
132 u8 update_geneve_udp_port;
134 u8 tunn_clss_l2geneve;
135 u8 tunn_clss_ipgeneve;
140 struct qed_common_cb_ops {
141 void (*link_update)(void *dev, struct qed_link_output *link);
142 void (*get_tlv_data)(void *dev, struct qed_eth_tlvs *data);
145 struct qed_selftest_ops {
147 * @brief registers - Perform register tests
151 * @return 0 on success, error otherwise.
153 int (*registers)(struct ecore_dev *edev);
156 struct qed_common_ops {
157 int (*probe)(struct ecore_dev *edev,
158 struct rte_pci_device *pci_dev,
159 enum qed_protocol protocol,
160 uint32_t dp_module, uint8_t dp_level, bool is_vf);
161 void (*set_name)(struct ecore_dev *edev, char name[]);
163 (*chain_alloc)(struct ecore_dev *edev,
164 enum ecore_chain_use_mode
166 enum ecore_chain_mode mode,
167 enum ecore_chain_cnt_type cnt_type,
169 osal_size_t elem_size,
170 struct ecore_chain *p_chain,
171 struct ecore_chain_ext_pbl *ext_pbl);
173 void (*chain_free)(struct ecore_dev *edev,
174 struct ecore_chain *p_chain);
176 void (*get_link)(struct ecore_dev *edev,
177 struct qed_link_output *if_link);
178 int (*set_link)(struct ecore_dev *edev,
179 struct qed_link_params *params);
181 int (*drain)(struct ecore_dev *edev);
183 void (*remove)(struct ecore_dev *edev);
185 int (*slowpath_stop)(struct ecore_dev *edev);
187 void (*update_pf_params)(struct ecore_dev *edev,
188 struct ecore_pf_params *params);
190 int (*slowpath_start)(struct ecore_dev *edev,
191 struct qed_slowpath_params *params);
193 int (*set_fp_int)(struct ecore_dev *edev, uint16_t cnt);
195 uint32_t (*sb_init)(struct ecore_dev *edev,
196 struct ecore_sb_info *sb_info,
198 dma_addr_t sb_phy_addr,
199 uint16_t sb_id, enum qed_sb_type type);
201 bool (*can_link_change)(struct ecore_dev *edev);
203 void (*update_msglvl)(struct ecore_dev *edev,
204 uint32_t dp_module, uint8_t dp_level);
206 int (*send_drv_state)(struct ecore_dev *edev, bool active);
209 #endif /* _QEDE_IF_H */