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
44 bool b_inter_pf_switch;
50 /* Out param for qede */
55 enum ecore_dev_type dev_type;
58 struct qed_dev_eth_info {
59 struct qed_dev_info common;
64 struct ether_addr port_mac;
65 uint16_t num_vlan_filters;
66 uint32_t num_mac_filters;
68 /* Legacy VF - this affects the datapath */
72 #define INIT_STRUCT_FIELD(field, value) .field = value
75 const struct qed_common_ops *common;
76 int (*fill_dev_info)(struct ecore_dev *edev,
77 struct qed_dev_eth_info *info);
80 struct qed_link_params {
83 #define QED_LINK_OVERRIDE_SPEED_AUTONEG (1 << 0)
84 #define QED_LINK_OVERRIDE_SPEED_ADV_SPEEDS (1 << 1)
85 #define QED_LINK_OVERRIDE_SPEED_FORCED_SPEED (1 << 2)
86 #define QED_LINK_OVERRIDE_PAUSE_CONFIG (1 << 3)
87 #define QED_LINK_OVERRIDE_EEE_CONFIG (1 << 5)
88 uint32_t override_flags;
91 uint32_t forced_speed;
92 #define QED_LINK_PAUSE_AUTONEG_ENABLE (1 << 0)
93 #define QED_LINK_PAUSE_RX_ENABLE (1 << 1)
94 #define QED_LINK_PAUSE_TX_ENABLE (1 << 2)
95 uint32_t pause_config;
96 struct ecore_link_eee_params eee;
99 struct qed_link_output {
101 uint32_t supported_caps; /* In SUPPORTED defs */
102 uint32_t advertised_caps; /* In ADVERTISED defs */
103 uint32_t lp_caps; /* In ADVERTISED defs */
104 uint32_t speed; /* In Mb/s */
105 uint32_t adv_speed; /* Speed mask */
106 uint8_t duplex; /* In DUPLEX defs */
107 uint16_t port; /* In PORT defs */
109 uint32_t pause_config;
111 /* EEE - capability & param */
115 struct ecore_link_eee_params eee;
118 struct qed_slowpath_params {
124 uint8_t name[NAME_SIZE];
127 struct qed_common_cb_ops {
128 void (*link_update)(void *dev, struct qed_link_output *link);
131 struct qed_common_ops {
132 int (*probe)(struct ecore_dev *edev,
133 struct rte_pci_device *pci_dev,
134 uint32_t dp_module, uint8_t dp_level, bool is_vf);
135 void (*set_name)(struct ecore_dev *edev, char name[]);
137 (*chain_alloc)(struct ecore_dev *edev,
138 enum ecore_chain_use_mode
140 enum ecore_chain_mode mode,
141 enum ecore_chain_cnt_type cnt_type,
143 osal_size_t elem_size,
144 struct ecore_chain *p_chain,
145 struct ecore_chain_ext_pbl *ext_pbl);
147 void (*chain_free)(struct ecore_dev *edev,
148 struct ecore_chain *p_chain);
150 void (*get_link)(struct ecore_dev *edev,
151 struct qed_link_output *if_link);
152 int (*set_link)(struct ecore_dev *edev,
153 struct qed_link_params *params);
155 int (*drain)(struct ecore_dev *edev);
157 void (*remove)(struct ecore_dev *edev);
159 int (*slowpath_stop)(struct ecore_dev *edev);
161 void (*update_pf_params)(struct ecore_dev *edev,
162 struct ecore_pf_params *params);
164 int (*slowpath_start)(struct ecore_dev *edev,
165 struct qed_slowpath_params *params);
167 int (*set_fp_int)(struct ecore_dev *edev, uint16_t cnt);
169 uint32_t (*sb_init)(struct ecore_dev *edev,
170 struct ecore_sb_info *sb_info,
172 dma_addr_t sb_phy_addr,
175 int (*get_sb_info)(struct ecore_dev *edev,
176 struct ecore_sb_info *sb, u16 qid,
177 struct ecore_sb_info_dbg *sb_dbg);
179 bool (*can_link_change)(struct ecore_dev *edev);
181 void (*update_msglvl)(struct ecore_dev *edev,
182 uint32_t dp_module, uint8_t dp_level);
184 int (*send_drv_state)(struct ecore_dev *edev, bool active);
189 const struct qed_eth_ops *qed_get_eth_ops(void);
191 #endif /* _QEDE_IF_H */