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];
50 struct qed_link_params {
53 #define QED_LINK_OVERRIDE_SPEED_AUTONEG (1 << 0)
54 #define QED_LINK_OVERRIDE_SPEED_ADV_SPEEDS (1 << 1)
55 #define QED_LINK_OVERRIDE_SPEED_FORCED_SPEED (1 << 2)
56 #define QED_LINK_OVERRIDE_PAUSE_CONFIG (1 << 3)
57 uint32_t override_flags;
60 uint32_t forced_speed;
61 #define QED_LINK_PAUSE_AUTONEG_ENABLE (1 << 0)
62 #define QED_LINK_PAUSE_RX_ENABLE (1 << 1)
63 #define QED_LINK_PAUSE_TX_ENABLE (1 << 2)
64 uint32_t pause_config;
67 struct qed_link_output {
69 uint32_t supported_caps; /* In SUPPORTED defs */
70 uint32_t advertised_caps; /* In ADVERTISED defs */
71 uint32_t lp_caps; /* In ADVERTISED defs */
72 uint32_t speed; /* In Mb/s */
73 uint8_t duplex; /* In DUPLEX defs */
74 uint8_t port; /* In PORT defs */
76 uint32_t pause_config;
79 #define QED_DRV_VER_STR_SIZE 80
80 struct qed_slowpath_params {
86 uint8_t name[QED_DRV_VER_STR_SIZE];
89 #define ILT_PAGE_SIZE_TCFC 0x8000 /* 32KB */
91 struct qed_common_cb_ops {
92 void (*link_update)(void *dev, struct qed_link_output *link);
95 struct qed_selftest_ops {
97 * @brief registers - Perform register tests
101 * @return 0 on success, error otherwise.
103 int (*registers)(struct ecore_dev *edev);
106 struct qed_common_ops {
107 int (*probe)(struct ecore_dev *edev,
108 struct rte_pci_device *pci_dev,
109 enum qed_protocol protocol,
110 uint32_t dp_module, uint8_t dp_level, bool is_vf);
111 void (*set_id)(struct ecore_dev *edev,
112 char name[], const char ver_str[]);
113 enum _ecore_status_t (*chain_alloc)(struct ecore_dev *edev,
114 enum ecore_chain_use_mode
116 enum ecore_chain_mode mode,
117 enum ecore_chain_cnt_type cnt_type,
119 osal_size_t elem_size,
120 struct ecore_chain *p_chain);
122 void (*chain_free)(struct ecore_dev *edev,
123 struct ecore_chain *p_chain);
125 void (*get_link)(struct ecore_dev *edev,
126 struct qed_link_output *if_link);
127 int (*set_link)(struct ecore_dev *edev,
128 struct qed_link_params *params);
130 int (*drain)(struct ecore_dev *edev);
132 void (*remove)(struct ecore_dev *edev);
134 int (*slowpath_stop)(struct ecore_dev *edev);
136 void (*update_pf_params)(struct ecore_dev *edev,
137 struct ecore_pf_params *params);
139 int (*slowpath_start)(struct ecore_dev *edev,
140 struct qed_slowpath_params *params);
142 int (*set_fp_int)(struct ecore_dev *edev, uint16_t cnt);
144 uint32_t (*sb_init)(struct ecore_dev *edev,
145 struct ecore_sb_info *sb_info,
147 dma_addr_t sb_phy_addr,
148 uint16_t sb_id, enum qed_sb_type type);
150 bool (*can_link_change)(struct ecore_dev *edev);
151 void (*update_msglvl)(struct ecore_dev *edev,
152 uint32_t dp_module, uint8_t dp_level);
156 * @brief qed_get_protocol_version
160 * @return version supported by qed for given protocol driver
162 uint32_t qed_get_protocol_version(enum qed_protocol protocol);
164 #endif /* _QEDE_IF_H */