1dacd88d6SYuval Mintz /* QLogic qed NIC Driver
2e8f1cb50SMintz, Yuval  * Copyright (c) 2015-2017  QLogic Corporation
3dacd88d6SYuval Mintz  *
4e8f1cb50SMintz, Yuval  * This software is available to you under a choice of one of two
5e8f1cb50SMintz, Yuval  * licenses.  You may choose to be licensed under the terms of the GNU
6e8f1cb50SMintz, Yuval  * General Public License (GPL) Version 2, available from the file
7e8f1cb50SMintz, Yuval  * COPYING in the main directory of this source tree, or the
8e8f1cb50SMintz, Yuval  * OpenIB.org BSD license below:
9e8f1cb50SMintz, Yuval  *
10e8f1cb50SMintz, Yuval  *     Redistribution and use in source and binary forms, with or
11e8f1cb50SMintz, Yuval  *     without modification, are permitted provided that the following
12e8f1cb50SMintz, Yuval  *     conditions are met:
13e8f1cb50SMintz, Yuval  *
14e8f1cb50SMintz, Yuval  *      - Redistributions of source code must retain the above
15e8f1cb50SMintz, Yuval  *        copyright notice, this list of conditions and the following
16e8f1cb50SMintz, Yuval  *        disclaimer.
17e8f1cb50SMintz, Yuval  *
18e8f1cb50SMintz, Yuval  *      - Redistributions in binary form must reproduce the above
19e8f1cb50SMintz, Yuval  *        copyright notice, this list of conditions and the following
20e8f1cb50SMintz, Yuval  *        disclaimer in the documentation and /or other materials
21e8f1cb50SMintz, Yuval  *        provided with the distribution.
22e8f1cb50SMintz, Yuval  *
23e8f1cb50SMintz, Yuval  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24e8f1cb50SMintz, Yuval  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25e8f1cb50SMintz, Yuval  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26e8f1cb50SMintz, Yuval  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27e8f1cb50SMintz, Yuval  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28e8f1cb50SMintz, Yuval  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29e8f1cb50SMintz, Yuval  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30e8f1cb50SMintz, Yuval  * SOFTWARE.
31dacd88d6SYuval Mintz  */
32dacd88d6SYuval Mintz #ifndef _QED_L2_H
33dacd88d6SYuval Mintz #define _QED_L2_H
34dacd88d6SYuval Mintz #include <linux/types.h>
35dacd88d6SYuval Mintz #include <linux/io.h>
36dacd88d6SYuval Mintz #include <linux/kernel.h>
37dacd88d6SYuval Mintz #include <linux/slab.h>
38dacd88d6SYuval Mintz #include <linux/qed/qed_eth_if.h>
39dacd88d6SYuval Mintz #include "qed.h"
40dacd88d6SYuval Mintz #include "qed_hw.h"
41dacd88d6SYuval Mintz #include "qed_sp.h"
42dacd88d6SYuval Mintz 
4317b235c1SYuval Mintz struct qed_sge_tpa_params {
4417b235c1SYuval Mintz 	u8 max_buffers_per_cqe;
4517b235c1SYuval Mintz 
4617b235c1SYuval Mintz 	u8 update_tpa_en_flg;
4717b235c1SYuval Mintz 	u8 tpa_ipv4_en_flg;
4817b235c1SYuval Mintz 	u8 tpa_ipv6_en_flg;
4917b235c1SYuval Mintz 	u8 tpa_ipv4_tunn_en_flg;
5017b235c1SYuval Mintz 	u8 tpa_ipv6_tunn_en_flg;
5117b235c1SYuval Mintz 
5217b235c1SYuval Mintz 	u8 update_tpa_param_flg;
5317b235c1SYuval Mintz 	u8 tpa_pkt_split_flg;
5417b235c1SYuval Mintz 	u8 tpa_hdr_data_split_flg;
5517b235c1SYuval Mintz 	u8 tpa_gro_consistent_flg;
5617b235c1SYuval Mintz 	u8 tpa_max_aggs_num;
5717b235c1SYuval Mintz 	u16 tpa_max_size;
5817b235c1SYuval Mintz 	u16 tpa_min_size_to_start;
5917b235c1SYuval Mintz 	u16 tpa_min_size_to_cont;
6017b235c1SYuval Mintz };
6117b235c1SYuval Mintz 
62dacd88d6SYuval Mintz enum qed_filter_opcode {
63dacd88d6SYuval Mintz 	QED_FILTER_ADD,
64dacd88d6SYuval Mintz 	QED_FILTER_REMOVE,
65dacd88d6SYuval Mintz 	QED_FILTER_MOVE,
66dacd88d6SYuval Mintz 	QED_FILTER_REPLACE,	/* Delete all MACs and add new one instead */
67dacd88d6SYuval Mintz 	QED_FILTER_FLUSH,	/* Removes all filters */
68dacd88d6SYuval Mintz };
69dacd88d6SYuval Mintz 
70dacd88d6SYuval Mintz enum qed_filter_ucast_type {
71dacd88d6SYuval Mintz 	QED_FILTER_MAC,
72dacd88d6SYuval Mintz 	QED_FILTER_VLAN,
73dacd88d6SYuval Mintz 	QED_FILTER_MAC_VLAN,
74dacd88d6SYuval Mintz 	QED_FILTER_INNER_MAC,
75dacd88d6SYuval Mintz 	QED_FILTER_INNER_VLAN,
76dacd88d6SYuval Mintz 	QED_FILTER_INNER_PAIR,
77dacd88d6SYuval Mintz 	QED_FILTER_INNER_MAC_VNI_PAIR,
78dacd88d6SYuval Mintz 	QED_FILTER_MAC_VNI_PAIR,
79dacd88d6SYuval Mintz 	QED_FILTER_VNI,
80dacd88d6SYuval Mintz };
81dacd88d6SYuval Mintz 
82dacd88d6SYuval Mintz struct qed_filter_ucast {
83dacd88d6SYuval Mintz 	enum qed_filter_opcode opcode;
84dacd88d6SYuval Mintz 	enum qed_filter_ucast_type type;
85dacd88d6SYuval Mintz 	u8 is_rx_filter;
86dacd88d6SYuval Mintz 	u8 is_tx_filter;
87dacd88d6SYuval Mintz 	u8 vport_to_add_to;
88dacd88d6SYuval Mintz 	u8 vport_to_remove_from;
89dacd88d6SYuval Mintz 	unsigned char mac[ETH_ALEN];
90dacd88d6SYuval Mintz 	u8 assert_on_error;
91dacd88d6SYuval Mintz 	u16 vlan;
92dacd88d6SYuval Mintz 	u32 vni;
93dacd88d6SYuval Mintz };
94dacd88d6SYuval Mintz 
95dacd88d6SYuval Mintz struct qed_filter_mcast {
96dacd88d6SYuval Mintz 	/* MOVE is not supported for multicast */
97dacd88d6SYuval Mintz 	enum qed_filter_opcode opcode;
98dacd88d6SYuval Mintz 	u8 vport_to_add_to;
99dacd88d6SYuval Mintz 	u8 vport_to_remove_from;
100dacd88d6SYuval Mintz 	u8 num_mc_addrs;
101dacd88d6SYuval Mintz #define QED_MAX_MC_ADDRS        64
102dacd88d6SYuval Mintz 	unsigned char mac[QED_MAX_MC_ADDRS][ETH_ALEN];
103dacd88d6SYuval Mintz };
104dacd88d6SYuval Mintz 
1053da7a37aSMintz, Yuval /**
1063da7a37aSMintz, Yuval  * @brief qed_eth_rx_queue_stop - This ramrod closes an Rx queue
1073da7a37aSMintz, Yuval  *
1083da7a37aSMintz, Yuval  * @param p_hwfn
1093da7a37aSMintz, Yuval  * @param p_rxq			Handler of queue to close
1103da7a37aSMintz, Yuval  * @param eq_completion_only	If True completion will be on
1113da7a37aSMintz, Yuval  *				EQe, if False completion will be
1123da7a37aSMintz, Yuval  *				on EQe if p_hwfn opaque
1133da7a37aSMintz, Yuval  *				different from the RXQ opaque
1143da7a37aSMintz, Yuval  *				otherwise on CQe.
1153da7a37aSMintz, Yuval  * @param cqe_completion	If True completion will be
1163da7a37aSMintz, Yuval  *				receive on CQe.
1173da7a37aSMintz, Yuval  * @return int
1183da7a37aSMintz, Yuval  */
1193da7a37aSMintz, Yuval int
1203da7a37aSMintz, Yuval qed_eth_rx_queue_stop(struct qed_hwfn *p_hwfn,
1213da7a37aSMintz, Yuval 		      void *p_rxq,
122dacd88d6SYuval Mintz 		      bool eq_completion_only, bool cqe_completion);
123dacd88d6SYuval Mintz 
1243da7a37aSMintz, Yuval /**
1253da7a37aSMintz, Yuval  * @brief qed_eth_tx_queue_stop - closes a Tx queue
1263da7a37aSMintz, Yuval  *
1273da7a37aSMintz, Yuval  * @param p_hwfn
1283da7a37aSMintz, Yuval  * @param p_txq - handle to Tx queue needed to be closed
1293da7a37aSMintz, Yuval  *
1303da7a37aSMintz, Yuval  * @return int
1313da7a37aSMintz, Yuval  */
1323da7a37aSMintz, Yuval int qed_eth_tx_queue_stop(struct qed_hwfn *p_hwfn, void *p_txq);
133dacd88d6SYuval Mintz 
134dacd88d6SYuval Mintz enum qed_tpa_mode {
135dacd88d6SYuval Mintz 	QED_TPA_MODE_NONE,
136dacd88d6SYuval Mintz 	QED_TPA_MODE_UNUSED,
137dacd88d6SYuval Mintz 	QED_TPA_MODE_GRO,
138dacd88d6SYuval Mintz 	QED_TPA_MODE_MAX
139dacd88d6SYuval Mintz };
140dacd88d6SYuval Mintz 
141dacd88d6SYuval Mintz struct qed_sp_vport_start_params {
142dacd88d6SYuval Mintz 	enum qed_tpa_mode tpa_mode;
143dacd88d6SYuval Mintz 	bool remove_inner_vlan;
144831bfb0eSYuval Mintz 	bool tx_switching;
14508feecd7SYuval Mintz 	bool only_untagged;
146dacd88d6SYuval Mintz 	bool drop_ttl0;
147dacd88d6SYuval Mintz 	u8 max_buffers_per_cqe;
148dacd88d6SYuval Mintz 	u32 concrete_fid;
149dacd88d6SYuval Mintz 	u16 opaque_fid;
150dacd88d6SYuval Mintz 	u8 vport_id;
151dacd88d6SYuval Mintz 	u16 mtu;
15211a85d75SYuval Mintz 	bool check_mac;
15311a85d75SYuval Mintz 	bool check_ethtype;
154dacd88d6SYuval Mintz };
155dacd88d6SYuval Mintz 
156dacd88d6SYuval Mintz int qed_sp_eth_vport_start(struct qed_hwfn *p_hwfn,
157dacd88d6SYuval Mintz 			   struct qed_sp_vport_start_params *p_params);
158dacd88d6SYuval Mintz 
159dacd88d6SYuval Mintz struct qed_rss_params {
160dacd88d6SYuval Mintz 	u8	update_rss_config;
161dacd88d6SYuval Mintz 	u8	rss_enable;
162dacd88d6SYuval Mintz 	u8	rss_eng_id;
163dacd88d6SYuval Mintz 	u8	update_rss_capabilities;
164dacd88d6SYuval Mintz 	u8	update_rss_ind_table;
165dacd88d6SYuval Mintz 	u8	update_rss_key;
166dacd88d6SYuval Mintz 	u8	rss_caps;
167dacd88d6SYuval Mintz 	u8	rss_table_size_log;
168dacd88d6SYuval Mintz 	u16	rss_ind_table[QED_RSS_IND_TABLE_SIZE];
169dacd88d6SYuval Mintz 	u32	rss_key[QED_RSS_KEY_SIZE];
170dacd88d6SYuval Mintz };
171dacd88d6SYuval Mintz 
172dacd88d6SYuval Mintz struct qed_filter_accept_flags {
173dacd88d6SYuval Mintz 	u8	update_rx_mode_config;
174dacd88d6SYuval Mintz 	u8	update_tx_mode_config;
175dacd88d6SYuval Mintz 	u8	rx_accept_filter;
176dacd88d6SYuval Mintz 	u8	tx_accept_filter;
177dacd88d6SYuval Mintz #define QED_ACCEPT_NONE         0x01
178dacd88d6SYuval Mintz #define QED_ACCEPT_UCAST_MATCHED        0x02
179dacd88d6SYuval Mintz #define QED_ACCEPT_UCAST_UNMATCHED      0x04
180dacd88d6SYuval Mintz #define QED_ACCEPT_MCAST_MATCHED        0x08
181dacd88d6SYuval Mintz #define QED_ACCEPT_MCAST_UNMATCHED      0x10
182dacd88d6SYuval Mintz #define QED_ACCEPT_BCAST                0x20
183dacd88d6SYuval Mintz };
184dacd88d6SYuval Mintz 
185dacd88d6SYuval Mintz struct qed_sp_vport_update_params {
186dacd88d6SYuval Mintz 	u16				opaque_fid;
187dacd88d6SYuval Mintz 	u8				vport_id;
188dacd88d6SYuval Mintz 	u8				update_vport_active_rx_flg;
189dacd88d6SYuval Mintz 	u8				vport_active_rx_flg;
190dacd88d6SYuval Mintz 	u8				update_vport_active_tx_flg;
191dacd88d6SYuval Mintz 	u8				vport_active_tx_flg;
19217b235c1SYuval Mintz 	u8				update_inner_vlan_removal_flg;
19317b235c1SYuval Mintz 	u8				inner_vlan_removal_flg;
19408feecd7SYuval Mintz 	u8				silent_vlan_removal_flg;
19508feecd7SYuval Mintz 	u8				update_default_vlan_enable_flg;
19608feecd7SYuval Mintz 	u8				default_vlan_enable_flg;
19708feecd7SYuval Mintz 	u8				update_default_vlan_flg;
19808feecd7SYuval Mintz 	u16				default_vlan;
19917b235c1SYuval Mintz 	u8				update_tx_switching_flg;
20017b235c1SYuval Mintz 	u8				tx_switching_flg;
201dacd88d6SYuval Mintz 	u8				update_approx_mcast_flg;
2026ddc7608SYuval Mintz 	u8				update_anti_spoofing_en_flg;
2036ddc7608SYuval Mintz 	u8				anti_spoofing_en;
204dacd88d6SYuval Mintz 	u8				update_accept_any_vlan_flg;
205dacd88d6SYuval Mintz 	u8				accept_any_vlan;
206dacd88d6SYuval Mintz 	unsigned long			bins[8];
207dacd88d6SYuval Mintz 	struct qed_rss_params		*rss_params;
208dacd88d6SYuval Mintz 	struct qed_filter_accept_flags	accept_flags;
20917b235c1SYuval Mintz 	struct qed_sge_tpa_params	*sge_tpa_params;
210dacd88d6SYuval Mintz };
211dacd88d6SYuval Mintz 
212dacd88d6SYuval Mintz int qed_sp_vport_update(struct qed_hwfn *p_hwfn,
213dacd88d6SYuval Mintz 			struct qed_sp_vport_update_params *p_params,
214dacd88d6SYuval Mintz 			enum spq_mode comp_mode,
215dacd88d6SYuval Mintz 			struct qed_spq_comp_cb *p_comp_data);
216dacd88d6SYuval Mintz 
217dacd88d6SYuval Mintz /**
218dacd88d6SYuval Mintz  * @brief qed_sp_vport_stop -
219dacd88d6SYuval Mintz  *
220dacd88d6SYuval Mintz  * This ramrod closes a VPort after all its RX and TX queues are terminated.
221dacd88d6SYuval Mintz  * An Assert is generated if any queues are left open.
222dacd88d6SYuval Mintz  *
223dacd88d6SYuval Mintz  * @param p_hwfn
224dacd88d6SYuval Mintz  * @param opaque_fid
225dacd88d6SYuval Mintz  * @param vport_id VPort ID
226dacd88d6SYuval Mintz  *
227dacd88d6SYuval Mintz  * @return int
228dacd88d6SYuval Mintz  */
229dacd88d6SYuval Mintz int qed_sp_vport_stop(struct qed_hwfn *p_hwfn, u16 opaque_fid, u8 vport_id);
230dacd88d6SYuval Mintz 
231dacd88d6SYuval Mintz int qed_sp_eth_filter_ucast(struct qed_hwfn *p_hwfn,
232dacd88d6SYuval Mintz 			    u16 opaque_fid,
233dacd88d6SYuval Mintz 			    struct qed_filter_ucast *p_filter_cmd,
234dacd88d6SYuval Mintz 			    enum spq_mode comp_mode,
235dacd88d6SYuval Mintz 			    struct qed_spq_comp_cb *p_comp_data);
236dacd88d6SYuval Mintz 
23717b235c1SYuval Mintz /**
23817b235c1SYuval Mintz  * @brief qed_sp_rx_eth_queues_update -
23917b235c1SYuval Mintz  *
24017b235c1SYuval Mintz  * This ramrod updates an RX queue. It is used for setting the active state
24117b235c1SYuval Mintz  * of the queue and updating the TPA and SGE parameters.
24217b235c1SYuval Mintz  *
24317b235c1SYuval Mintz  * @note At the moment - only used by non-linux VFs.
24417b235c1SYuval Mintz  *
24517b235c1SYuval Mintz  * @param p_hwfn
2463da7a37aSMintz, Yuval  * @param pp_rxq_handlers	An array of queue handlers to be updated.
2473da7a37aSMintz, Yuval  * @param num_rxqs              number of queues to update.
24817b235c1SYuval Mintz  * @param complete_cqe_flg	Post completion to the CQE Ring if set
24917b235c1SYuval Mintz  * @param complete_event_flg	Post completion to the Event Ring if set
2503da7a37aSMintz, Yuval  * @param comp_mode
2513da7a37aSMintz, Yuval  * @param p_comp_data
25217b235c1SYuval Mintz  *
25317b235c1SYuval Mintz  * @return int
25417b235c1SYuval Mintz  */
25517b235c1SYuval Mintz 
25617b235c1SYuval Mintz int
25717b235c1SYuval Mintz qed_sp_eth_rx_queues_update(struct qed_hwfn *p_hwfn,
2583da7a37aSMintz, Yuval 			    void **pp_rxq_handlers,
25917b235c1SYuval Mintz 			    u8 num_rxqs,
26017b235c1SYuval Mintz 			    u8 complete_cqe_flg,
26117b235c1SYuval Mintz 			    u8 complete_event_flg,
26217b235c1SYuval Mintz 			    enum spq_mode comp_mode,
26317b235c1SYuval Mintz 			    struct qed_spq_comp_cb *p_comp_data);
26417b235c1SYuval Mintz 
2656c754246SSudarsana Reddy Kalluru void qed_get_vport_stats(struct qed_dev *cdev, struct qed_eth_stats *stats);
2666c754246SSudarsana Reddy Kalluru 
2673da7a37aSMintz, Yuval void qed_reset_vport_stats(struct qed_dev *cdev);
2683da7a37aSMintz, Yuval 
2693da7a37aSMintz, Yuval struct qed_queue_cid {
2703da7a37aSMintz, Yuval 	/* 'Relative' is a relative term ;-). Usually the indices [not counting
2713da7a37aSMintz, Yuval 	 * SBs] would be PF-relative, but there are some cases where that isn't
2723da7a37aSMintz, Yuval 	 * the case - specifically for a PF configuring its VF indices it's
2733da7a37aSMintz, Yuval 	 * possible some fields [E.g., stats-id] in 'rel' would already be abs.
2743da7a37aSMintz, Yuval 	 */
2753da7a37aSMintz, Yuval 	struct qed_queue_start_common_params rel;
2763da7a37aSMintz, Yuval 	struct qed_queue_start_common_params abs;
2773da7a37aSMintz, Yuval 	u32 cid;
2783da7a37aSMintz, Yuval 	u16 opaque_fid;
2793da7a37aSMintz, Yuval 
2803da7a37aSMintz, Yuval 	/* VFs queues are mapped differently, so we need to know the
2813da7a37aSMintz, Yuval 	 * relative queue associated with them [0-based].
2823da7a37aSMintz, Yuval 	 * Notice this is relevant on the *PF* queue-cid of its VF's queues,
2833da7a37aSMintz, Yuval 	 * and not on the VF itself.
2843da7a37aSMintz, Yuval 	 */
2853da7a37aSMintz, Yuval 	bool is_vf;
2863da7a37aSMintz, Yuval 	u8 vf_qid;
2873da7a37aSMintz, Yuval 
2883da7a37aSMintz, Yuval 	/* Legacy VFs might have Rx producer located elsewhere */
2893da7a37aSMintz, Yuval 	bool b_legacy_vf;
2903da7a37aSMintz, Yuval };
2913da7a37aSMintz, Yuval 
2923da7a37aSMintz, Yuval void qed_eth_queue_cid_release(struct qed_hwfn *p_hwfn,
2933da7a37aSMintz, Yuval 			       struct qed_queue_cid *p_cid);
2943da7a37aSMintz, Yuval 
2953da7a37aSMintz, Yuval struct qed_queue_cid *_qed_eth_queue_to_cid(struct qed_hwfn *p_hwfn,
2963da7a37aSMintz, Yuval 					    u16 opaque_fid,
2973da7a37aSMintz, Yuval 					    u32 cid,
2983da7a37aSMintz, Yuval 					    u8 vf_qid,
2993da7a37aSMintz, Yuval 					    struct qed_queue_start_common_params
3003da7a37aSMintz, Yuval 					    *p_params);
3013da7a37aSMintz, Yuval 
3023da7a37aSMintz, Yuval int
3033da7a37aSMintz, Yuval qed_sp_eth_vport_start(struct qed_hwfn *p_hwfn,
304dacd88d6SYuval Mintz 		       struct qed_sp_vport_start_params *p_params);
305dacd88d6SYuval Mintz 
3063da7a37aSMintz, Yuval /**
3073da7a37aSMintz, Yuval  * @brief - Starts an Rx queue, when queue_cid is already prepared
3083da7a37aSMintz, Yuval  *
3093da7a37aSMintz, Yuval  * @param p_hwfn
3103da7a37aSMintz, Yuval  * @param p_cid
3113da7a37aSMintz, Yuval  * @param bd_max_bytes
3123da7a37aSMintz, Yuval  * @param bd_chain_phys_addr
3133da7a37aSMintz, Yuval  * @param cqe_pbl_addr
3143da7a37aSMintz, Yuval  * @param cqe_pbl_size
3153da7a37aSMintz, Yuval  *
3163da7a37aSMintz, Yuval  * @return int
3173da7a37aSMintz, Yuval  */
3183da7a37aSMintz, Yuval int
3193da7a37aSMintz, Yuval qed_eth_rxq_start_ramrod(struct qed_hwfn *p_hwfn,
3203da7a37aSMintz, Yuval 			 struct qed_queue_cid *p_cid,
321dacd88d6SYuval Mintz 			 u16 bd_max_bytes,
322dacd88d6SYuval Mintz 			 dma_addr_t bd_chain_phys_addr,
3233da7a37aSMintz, Yuval 			 dma_addr_t cqe_pbl_addr, u16 cqe_pbl_size);
324dacd88d6SYuval Mintz 
3253da7a37aSMintz, Yuval /**
3263da7a37aSMintz, Yuval  * @brief - Starts a Tx queue, where queue_cid is already prepared
3273da7a37aSMintz, Yuval  *
3283da7a37aSMintz, Yuval  * @param p_hwfn
3293da7a37aSMintz, Yuval  * @param p_cid
3303da7a37aSMintz, Yuval  * @param pbl_addr
3313da7a37aSMintz, Yuval  * @param pbl_size
3323da7a37aSMintz, Yuval  * @param p_pq_params - parameters for choosing the PQ for this Tx queue
3333da7a37aSMintz, Yuval  *
3343da7a37aSMintz, Yuval  * @return int
3353da7a37aSMintz, Yuval  */
3363da7a37aSMintz, Yuval int
3373da7a37aSMintz, Yuval qed_eth_txq_start_ramrod(struct qed_hwfn *p_hwfn,
3383da7a37aSMintz, Yuval 			 struct qed_queue_cid *p_cid,
3393da7a37aSMintz, Yuval 			 dma_addr_t pbl_addr, u16 pbl_size, u16 pq_id);
340dacd88d6SYuval Mintz 
341dacd88d6SYuval Mintz u8 qed_mcast_bin_from_mac(u8 *mac);
342dacd88d6SYuval Mintz 
343dacd88d6SYuval Mintz #endif /* _QED_L2_H */
344