1862cd659SVeerasenareddy Burru /* SPDX-License-Identifier: GPL-2.0 */
2862cd659SVeerasenareddy Burru /* Marvell Octeon EP (EndPoint) Ethernet Driver
3862cd659SVeerasenareddy Burru  *
4862cd659SVeerasenareddy Burru  * Copyright (C) 2020 Marvell.
5862cd659SVeerasenareddy Burru  *
6862cd659SVeerasenareddy Burru  */
7862cd659SVeerasenareddy Burru #ifndef __OCTEP_CTRL_NET_H__
8862cd659SVeerasenareddy Burru #define __OCTEP_CTRL_NET_H__
9862cd659SVeerasenareddy Burru 
10*a20b4c5fSSathesh Edara #include "octep_cp_version.h"
11*a20b4c5fSSathesh Edara 
12f25e5967SVeerasenareddy Burru #define OCTEP_CTRL_NET_INVALID_VFID	(-1)
13f25e5967SVeerasenareddy Burru 
14862cd659SVeerasenareddy Burru /* Supported commands */
15862cd659SVeerasenareddy Burru enum octep_ctrl_net_cmd {
16862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_CMD_GET = 0,
17862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_CMD_SET,
18862cd659SVeerasenareddy Burru };
19862cd659SVeerasenareddy Burru 
20862cd659SVeerasenareddy Burru /* Supported states */
21862cd659SVeerasenareddy Burru enum octep_ctrl_net_state {
22862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_STATE_DOWN = 0,
23862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_STATE_UP,
24862cd659SVeerasenareddy Burru };
25862cd659SVeerasenareddy Burru 
26862cd659SVeerasenareddy Burru /* Supported replies */
27862cd659SVeerasenareddy Burru enum octep_ctrl_net_reply {
28862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_REPLY_OK = 0,
29862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_REPLY_GENERIC_FAIL,
30862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_REPLY_INVALID_PARAM,
31862cd659SVeerasenareddy Burru };
32862cd659SVeerasenareddy Burru 
33862cd659SVeerasenareddy Burru /* Supported host to fw commands */
34862cd659SVeerasenareddy Burru enum octep_ctrl_net_h2f_cmd {
35862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_H2F_CMD_INVALID = 0,
36862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_H2F_CMD_MTU,
37862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_H2F_CMD_MAC,
38862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_H2F_CMD_GET_IF_STATS,
39862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_H2F_CMD_GET_XSTATS,
40862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_H2F_CMD_GET_Q_STATS,
41862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_H2F_CMD_LINK_STATUS,
42862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_H2F_CMD_RX_STATE,
43862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_H2F_CMD_LINK_INFO,
44*a20b4c5fSSathesh Edara 	OCTEP_CTRL_NET_H2F_CMD_MAX
45862cd659SVeerasenareddy Burru };
46862cd659SVeerasenareddy Burru 
47862cd659SVeerasenareddy Burru /* Supported fw to host commands */
48862cd659SVeerasenareddy Burru enum octep_ctrl_net_f2h_cmd {
49862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_F2H_CMD_INVALID = 0,
50862cd659SVeerasenareddy Burru 	OCTEP_CTRL_NET_F2H_CMD_LINK_STATUS,
51*a20b4c5fSSathesh Edara 	OCTEP_CTRL_NET_F2H_CMD_MAX
52862cd659SVeerasenareddy Burru };
53862cd659SVeerasenareddy Burru 
54577f0d1bSVeerasenareddy Burru union octep_ctrl_net_req_hdr {
55577f0d1bSVeerasenareddy Burru 	u64 words[1];
56577f0d1bSVeerasenareddy Burru 	struct {
57862cd659SVeerasenareddy Burru 		/* sender id */
58862cd659SVeerasenareddy Burru 		u16 sender;
59862cd659SVeerasenareddy Burru 		/* receiver id */
60862cd659SVeerasenareddy Burru 		u16 receiver;
61862cd659SVeerasenareddy Burru 		/* octep_ctrl_net_h2t_cmd */
62862cd659SVeerasenareddy Burru 		u16 cmd;
63862cd659SVeerasenareddy Burru 		/* reserved */
64862cd659SVeerasenareddy Burru 		u16 rsvd0;
65577f0d1bSVeerasenareddy Burru 	} s;
66862cd659SVeerasenareddy Burru };
67862cd659SVeerasenareddy Burru 
68862cd659SVeerasenareddy Burru /* get/set mtu request */
69862cd659SVeerasenareddy Burru struct octep_ctrl_net_h2f_req_cmd_mtu {
70862cd659SVeerasenareddy Burru 	/* enum octep_ctrl_net_cmd */
71862cd659SVeerasenareddy Burru 	u16 cmd;
72862cd659SVeerasenareddy Burru 	/* 0-65535 */
73862cd659SVeerasenareddy Burru 	u16 val;
74862cd659SVeerasenareddy Burru };
75862cd659SVeerasenareddy Burru 
76862cd659SVeerasenareddy Burru /* get/set mac request */
77862cd659SVeerasenareddy Burru struct octep_ctrl_net_h2f_req_cmd_mac {
78862cd659SVeerasenareddy Burru 	/* enum octep_ctrl_net_cmd */
79862cd659SVeerasenareddy Burru 	u16 cmd;
80862cd659SVeerasenareddy Burru 	/* xx:xx:xx:xx:xx:xx */
81862cd659SVeerasenareddy Burru 	u8 addr[ETH_ALEN];
82862cd659SVeerasenareddy Burru };
83862cd659SVeerasenareddy Burru 
84862cd659SVeerasenareddy Burru /* get/set link state, rx state */
85862cd659SVeerasenareddy Burru struct octep_ctrl_net_h2f_req_cmd_state {
86862cd659SVeerasenareddy Burru 	/* enum octep_ctrl_net_cmd */
87862cd659SVeerasenareddy Burru 	u16 cmd;
88862cd659SVeerasenareddy Burru 	/* enum octep_ctrl_net_state */
89862cd659SVeerasenareddy Burru 	u16 state;
90862cd659SVeerasenareddy Burru };
91862cd659SVeerasenareddy Burru 
92862cd659SVeerasenareddy Burru /* link info */
93862cd659SVeerasenareddy Burru struct octep_ctrl_net_link_info {
94862cd659SVeerasenareddy Burru 	/* Bitmap of Supported link speeds/modes */
95862cd659SVeerasenareddy Burru 	u64 supported_modes;
96862cd659SVeerasenareddy Burru 	/* Bitmap of Advertised link speeds/modes */
97862cd659SVeerasenareddy Burru 	u64 advertised_modes;
98862cd659SVeerasenareddy Burru 	/* Autonegotation state; bit 0=disabled; bit 1=enabled */
99862cd659SVeerasenareddy Burru 	u8 autoneg;
100862cd659SVeerasenareddy Burru 	/* Pause frames setting. bit 0=disabled; bit 1=enabled */
101862cd659SVeerasenareddy Burru 	u8 pause;
102862cd659SVeerasenareddy Burru 	/* Negotiated link speed in Mbps */
103862cd659SVeerasenareddy Burru 	u32 speed;
104862cd659SVeerasenareddy Burru };
105862cd659SVeerasenareddy Burru 
106862cd659SVeerasenareddy Burru /* get/set link info */
107862cd659SVeerasenareddy Burru struct octep_ctrl_net_h2f_req_cmd_link_info {
108862cd659SVeerasenareddy Burru 	/* enum octep_ctrl_net_cmd */
109862cd659SVeerasenareddy Burru 	u16 cmd;
110862cd659SVeerasenareddy Burru 	/* struct octep_ctrl_net_link_info */
111862cd659SVeerasenareddy Burru 	struct octep_ctrl_net_link_info info;
112862cd659SVeerasenareddy Burru };
113862cd659SVeerasenareddy Burru 
114862cd659SVeerasenareddy Burru /* Host to fw request data */
115862cd659SVeerasenareddy Burru struct octep_ctrl_net_h2f_req {
116577f0d1bSVeerasenareddy Burru 	union octep_ctrl_net_req_hdr hdr;
117862cd659SVeerasenareddy Burru 	union {
118862cd659SVeerasenareddy Burru 		struct octep_ctrl_net_h2f_req_cmd_mtu mtu;
119862cd659SVeerasenareddy Burru 		struct octep_ctrl_net_h2f_req_cmd_mac mac;
120862cd659SVeerasenareddy Burru 		struct octep_ctrl_net_h2f_req_cmd_state link;
121862cd659SVeerasenareddy Burru 		struct octep_ctrl_net_h2f_req_cmd_state rx;
122862cd659SVeerasenareddy Burru 		struct octep_ctrl_net_h2f_req_cmd_link_info link_info;
123862cd659SVeerasenareddy Burru 	};
124862cd659SVeerasenareddy Burru } __packed;
125862cd659SVeerasenareddy Burru 
126577f0d1bSVeerasenareddy Burru union octep_ctrl_net_resp_hdr {
127577f0d1bSVeerasenareddy Burru 	u64 words[1];
128577f0d1bSVeerasenareddy Burru 	struct {
129862cd659SVeerasenareddy Burru 		/* sender id */
130862cd659SVeerasenareddy Burru 		u16 sender;
131862cd659SVeerasenareddy Burru 		/* receiver id */
132862cd659SVeerasenareddy Burru 		u16 receiver;
133862cd659SVeerasenareddy Burru 		/* octep_ctrl_net_h2t_cmd */
134862cd659SVeerasenareddy Burru 		u16 cmd;
135862cd659SVeerasenareddy Burru 		/* octep_ctrl_net_reply */
136862cd659SVeerasenareddy Burru 		u16 reply;
137577f0d1bSVeerasenareddy Burru 	} s;
138862cd659SVeerasenareddy Burru };
139862cd659SVeerasenareddy Burru 
140862cd659SVeerasenareddy Burru /* get mtu response */
141862cd659SVeerasenareddy Burru struct octep_ctrl_net_h2f_resp_cmd_mtu {
142862cd659SVeerasenareddy Burru 	/* 0-65535 */
143862cd659SVeerasenareddy Burru 	u16 val;
144862cd659SVeerasenareddy Burru };
145862cd659SVeerasenareddy Burru 
146862cd659SVeerasenareddy Burru /* get mac response */
147862cd659SVeerasenareddy Burru struct octep_ctrl_net_h2f_resp_cmd_mac {
148862cd659SVeerasenareddy Burru 	/* xx:xx:xx:xx:xx:xx */
149862cd659SVeerasenareddy Burru 	u8 addr[ETH_ALEN];
150862cd659SVeerasenareddy Burru };
151862cd659SVeerasenareddy Burru 
1520718693fSVeerasenareddy Burru /* get if_stats, xstats, q_stats request */
1530718693fSVeerasenareddy Burru struct octep_ctrl_net_h2f_resp_cmd_get_stats {
1540718693fSVeerasenareddy Burru 	struct octep_iface_rx_stats rx_stats;
1550718693fSVeerasenareddy Burru 	struct octep_iface_tx_stats tx_stats;
1560718693fSVeerasenareddy Burru };
1570718693fSVeerasenareddy Burru 
158862cd659SVeerasenareddy Burru /* get link state, rx state response */
159862cd659SVeerasenareddy Burru struct octep_ctrl_net_h2f_resp_cmd_state {
160862cd659SVeerasenareddy Burru 	/* enum octep_ctrl_net_state */
161862cd659SVeerasenareddy Burru 	u16 state;
162862cd659SVeerasenareddy Burru };
163862cd659SVeerasenareddy Burru 
164862cd659SVeerasenareddy Burru /* Host to fw response data */
165862cd659SVeerasenareddy Burru struct octep_ctrl_net_h2f_resp {
166577f0d1bSVeerasenareddy Burru 	union octep_ctrl_net_resp_hdr hdr;
167862cd659SVeerasenareddy Burru 	union {
168862cd659SVeerasenareddy Burru 		struct octep_ctrl_net_h2f_resp_cmd_mtu mtu;
169862cd659SVeerasenareddy Burru 		struct octep_ctrl_net_h2f_resp_cmd_mac mac;
1700718693fSVeerasenareddy Burru 		struct octep_ctrl_net_h2f_resp_cmd_get_stats if_stats;
171862cd659SVeerasenareddy Burru 		struct octep_ctrl_net_h2f_resp_cmd_state link;
172862cd659SVeerasenareddy Burru 		struct octep_ctrl_net_h2f_resp_cmd_state rx;
173862cd659SVeerasenareddy Burru 		struct octep_ctrl_net_link_info link_info;
174862cd659SVeerasenareddy Burru 	};
175862cd659SVeerasenareddy Burru } __packed;
176862cd659SVeerasenareddy Burru 
177862cd659SVeerasenareddy Burru /* link state notofication */
178862cd659SVeerasenareddy Burru struct octep_ctrl_net_f2h_req_cmd_state {
179862cd659SVeerasenareddy Burru 	/* enum octep_ctrl_net_state */
180862cd659SVeerasenareddy Burru 	u16 state;
181862cd659SVeerasenareddy Burru };
182862cd659SVeerasenareddy Burru 
183862cd659SVeerasenareddy Burru /* Fw to host request data */
184862cd659SVeerasenareddy Burru struct octep_ctrl_net_f2h_req {
185577f0d1bSVeerasenareddy Burru 	union octep_ctrl_net_req_hdr hdr;
186862cd659SVeerasenareddy Burru 	union {
187862cd659SVeerasenareddy Burru 		struct octep_ctrl_net_f2h_req_cmd_state link;
188862cd659SVeerasenareddy Burru 	};
189862cd659SVeerasenareddy Burru };
190862cd659SVeerasenareddy Burru 
191862cd659SVeerasenareddy Burru /* Fw to host response data */
192862cd659SVeerasenareddy Burru struct octep_ctrl_net_f2h_resp {
193577f0d1bSVeerasenareddy Burru 	union octep_ctrl_net_resp_hdr hdr;
194862cd659SVeerasenareddy Burru };
195862cd659SVeerasenareddy Burru 
196577f0d1bSVeerasenareddy Burru /* Max data size to be transferred over mbox */
197577f0d1bSVeerasenareddy Burru union octep_ctrl_net_max_data {
198862cd659SVeerasenareddy Burru 	struct octep_ctrl_net_h2f_req h2f_req;
199862cd659SVeerasenareddy Burru 	struct octep_ctrl_net_h2f_resp h2f_resp;
200862cd659SVeerasenareddy Burru 	struct octep_ctrl_net_f2h_req f2h_req;
201862cd659SVeerasenareddy Burru 	struct octep_ctrl_net_f2h_resp f2h_resp;
202862cd659SVeerasenareddy Burru };
203862cd659SVeerasenareddy Burru 
204577f0d1bSVeerasenareddy Burru struct octep_ctrl_net_wait_data {
205577f0d1bSVeerasenareddy Burru 	struct list_head list;
206577f0d1bSVeerasenareddy Burru 	int done;
207577f0d1bSVeerasenareddy Burru 	struct octep_ctrl_mbox_msg msg;
208577f0d1bSVeerasenareddy Burru 	union {
209577f0d1bSVeerasenareddy Burru 		struct octep_ctrl_net_h2f_req req;
210577f0d1bSVeerasenareddy Burru 		struct octep_ctrl_net_h2f_resp resp;
211577f0d1bSVeerasenareddy Burru 	} data;
212577f0d1bSVeerasenareddy Burru };
213862cd659SVeerasenareddy Burru 
214577f0d1bSVeerasenareddy Burru /** Initialize data for ctrl net.
215577f0d1bSVeerasenareddy Burru  *
216577f0d1bSVeerasenareddy Burru  * @param oct: non-null pointer to struct octep_device.
217577f0d1bSVeerasenareddy Burru  *
218577f0d1bSVeerasenareddy Burru  * return value: 0 on success, -errno on error.
219577f0d1bSVeerasenareddy Burru  */
220577f0d1bSVeerasenareddy Burru int octep_ctrl_net_init(struct octep_device *oct);
221862cd659SVeerasenareddy Burru 
222862cd659SVeerasenareddy Burru /** Get link status from firmware.
223862cd659SVeerasenareddy Burru  *
224862cd659SVeerasenareddy Burru  * @param oct: non-null pointer to struct octep_device.
225f25e5967SVeerasenareddy Burru  * @param vfid: Index of virtual function.
226862cd659SVeerasenareddy Burru  *
227862cd659SVeerasenareddy Burru  * return value: link status 0=down, 1=up.
228862cd659SVeerasenareddy Burru  */
229f25e5967SVeerasenareddy Burru int octep_ctrl_net_get_link_status(struct octep_device *oct, int vfid);
230862cd659SVeerasenareddy Burru 
231862cd659SVeerasenareddy Burru /** Set link status in firmware.
232862cd659SVeerasenareddy Burru  *
233862cd659SVeerasenareddy Burru  * @param oct: non-null pointer to struct octep_device.
234f25e5967SVeerasenareddy Burru  * @param vfid: Index of virtual function.
235862cd659SVeerasenareddy Burru  * @param up: boolean status.
236577f0d1bSVeerasenareddy Burru  * @param wait_for_response: poll for response.
237577f0d1bSVeerasenareddy Burru  *
238577f0d1bSVeerasenareddy Burru  * return value: 0 on success, -errno on failure
239862cd659SVeerasenareddy Burru  */
240f25e5967SVeerasenareddy Burru int octep_ctrl_net_set_link_status(struct octep_device *oct, int vfid, bool up,
241577f0d1bSVeerasenareddy Burru 				   bool wait_for_response);
242862cd659SVeerasenareddy Burru 
243862cd659SVeerasenareddy Burru /** Set rx state in firmware.
244862cd659SVeerasenareddy Burru  *
245862cd659SVeerasenareddy Burru  * @param oct: non-null pointer to struct octep_device.
246f25e5967SVeerasenareddy Burru  * @param vfid: Index of virtual function.
247862cd659SVeerasenareddy Burru  * @param up: boolean status.
248577f0d1bSVeerasenareddy Burru  * @param wait_for_response: poll for response.
249577f0d1bSVeerasenareddy Burru  *
250577f0d1bSVeerasenareddy Burru  * return value: 0 on success, -errno on failure.
251862cd659SVeerasenareddy Burru  */
252f25e5967SVeerasenareddy Burru int octep_ctrl_net_set_rx_state(struct octep_device *oct, int vfid, bool up,
253577f0d1bSVeerasenareddy Burru 				bool wait_for_response);
254862cd659SVeerasenareddy Burru 
255862cd659SVeerasenareddy Burru /** Get mac address from firmware.
256862cd659SVeerasenareddy Burru  *
257862cd659SVeerasenareddy Burru  * @param oct: non-null pointer to struct octep_device.
258f25e5967SVeerasenareddy Burru  * @param vfid: Index of virtual function.
259862cd659SVeerasenareddy Burru  * @param addr: non-null pointer to mac address.
260862cd659SVeerasenareddy Burru  *
261862cd659SVeerasenareddy Burru  * return value: 0 on success, -errno on failure.
262862cd659SVeerasenareddy Burru  */
263f25e5967SVeerasenareddy Burru int octep_ctrl_net_get_mac_addr(struct octep_device *oct, int vfid, u8 *addr);
264862cd659SVeerasenareddy Burru 
265862cd659SVeerasenareddy Burru /** Set mac address in firmware.
266862cd659SVeerasenareddy Burru  *
267862cd659SVeerasenareddy Burru  * @param oct: non-null pointer to struct octep_device.
268f25e5967SVeerasenareddy Burru  * @param vfid: Index of virtual function.
269862cd659SVeerasenareddy Burru  * @param addr: non-null pointer to mac address.
270577f0d1bSVeerasenareddy Burru  * @param wait_for_response: poll for response.
271577f0d1bSVeerasenareddy Burru  *
272577f0d1bSVeerasenareddy Burru  * return value: 0 on success, -errno on failure.
273862cd659SVeerasenareddy Burru  */
274f25e5967SVeerasenareddy Burru int octep_ctrl_net_set_mac_addr(struct octep_device *oct, int vfid, u8 *addr,
275577f0d1bSVeerasenareddy Burru 				bool wait_for_response);
276862cd659SVeerasenareddy Burru 
277862cd659SVeerasenareddy Burru /** Set mtu in firmware.
278862cd659SVeerasenareddy Burru  *
279862cd659SVeerasenareddy Burru  * @param oct: non-null pointer to struct octep_device.
280f25e5967SVeerasenareddy Burru  * @param vfid: Index of virtual function.
281862cd659SVeerasenareddy Burru  * @param mtu: mtu.
282577f0d1bSVeerasenareddy Burru  * @param wait_for_response: poll for response.
283577f0d1bSVeerasenareddy Burru  *
284577f0d1bSVeerasenareddy Burru  * return value: 0 on success, -errno on failure.
285862cd659SVeerasenareddy Burru  */
286f25e5967SVeerasenareddy Burru int octep_ctrl_net_set_mtu(struct octep_device *oct, int vfid, int mtu,
287577f0d1bSVeerasenareddy Burru 			   bool wait_for_response);
288862cd659SVeerasenareddy Burru 
289862cd659SVeerasenareddy Burru /** Get interface statistics from firmware.
290862cd659SVeerasenareddy Burru  *
291862cd659SVeerasenareddy Burru  * @param oct: non-null pointer to struct octep_device.
292f25e5967SVeerasenareddy Burru  * @param vfid: Index of virtual function.
2930718693fSVeerasenareddy Burru  * @param rx_stats: non-null pointer struct octep_iface_rx_stats.
2940718693fSVeerasenareddy Burru  * @param tx_stats: non-null pointer struct octep_iface_tx_stats.
295862cd659SVeerasenareddy Burru  *
296862cd659SVeerasenareddy Burru  * return value: 0 on success, -errno on failure.
297862cd659SVeerasenareddy Burru  */
2980718693fSVeerasenareddy Burru int octep_ctrl_net_get_if_stats(struct octep_device *oct, int vfid,
2990718693fSVeerasenareddy Burru 				struct octep_iface_rx_stats *rx_stats,
3000718693fSVeerasenareddy Burru 				struct octep_iface_tx_stats *tx_stats);
301862cd659SVeerasenareddy Burru 
302862cd659SVeerasenareddy Burru /** Get link info from firmware.
303862cd659SVeerasenareddy Burru  *
304862cd659SVeerasenareddy Burru  * @param oct: non-null pointer to struct octep_device.
305f25e5967SVeerasenareddy Burru  * @param vfid: Index of virtual function.
3060718693fSVeerasenareddy Burru  * @param link_info: non-null pointer to struct octep_iface_link_info.
307862cd659SVeerasenareddy Burru  *
308862cd659SVeerasenareddy Burru  * return value: 0 on success, -errno on failure.
309862cd659SVeerasenareddy Burru  */
3100718693fSVeerasenareddy Burru int octep_ctrl_net_get_link_info(struct octep_device *oct, int vfid,
3110718693fSVeerasenareddy Burru 				 struct octep_iface_link_info *link_info);
312862cd659SVeerasenareddy Burru 
313862cd659SVeerasenareddy Burru /** Set link info in firmware.
314862cd659SVeerasenareddy Burru  *
315862cd659SVeerasenareddy Burru  * @param oct: non-null pointer to struct octep_device.
316f25e5967SVeerasenareddy Burru  * @param vfid: Index of virtual function.
317577f0d1bSVeerasenareddy Burru  * @param link_info: non-null pointer to struct octep_iface_link_info.
318577f0d1bSVeerasenareddy Burru  * @param wait_for_response: poll for response.
319577f0d1bSVeerasenareddy Burru  *
320577f0d1bSVeerasenareddy Burru  * return value: 0 on success, -errno on failure.
321862cd659SVeerasenareddy Burru  */
322577f0d1bSVeerasenareddy Burru int octep_ctrl_net_set_link_info(struct octep_device *oct,
323f25e5967SVeerasenareddy Burru 				 int vfid,
324577f0d1bSVeerasenareddy Burru 				 struct octep_iface_link_info *link_info,
325577f0d1bSVeerasenareddy Burru 				 bool wait_for_response);
326577f0d1bSVeerasenareddy Burru 
327577f0d1bSVeerasenareddy Burru /** Poll for firmware messages and process them.
328577f0d1bSVeerasenareddy Burru  *
329577f0d1bSVeerasenareddy Burru  * @param oct: non-null pointer to struct octep_device.
330577f0d1bSVeerasenareddy Burru  */
331577f0d1bSVeerasenareddy Burru void octep_ctrl_net_recv_fw_messages(struct octep_device *oct);
332577f0d1bSVeerasenareddy Burru 
333577f0d1bSVeerasenareddy Burru /** Uninitialize data for ctrl net.
334577f0d1bSVeerasenareddy Burru  *
335577f0d1bSVeerasenareddy Burru  * @param oct: non-null pointer to struct octep_device.
336577f0d1bSVeerasenareddy Burru  *
337577f0d1bSVeerasenareddy Burru  * return value: 0 on success, -errno on error.
338577f0d1bSVeerasenareddy Burru  */
339577f0d1bSVeerasenareddy Burru int octep_ctrl_net_uninit(struct octep_device *oct);
340862cd659SVeerasenareddy Burru 
341862cd659SVeerasenareddy Burru #endif /* __OCTEP_CTRL_NET_H__ */
342