Linux Audio

Check our new training course

Loading...
v6.8
  1// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
  2/* QLogic qede NIC Driver
  3 * Copyright (c) 2015 QLogic Corporation
  4 * Copyright (c) 2019-2020 Marvell International Ltd.
  5 */
  6
  7#include <linux/types.h>
  8#include <linux/netdevice.h>
  9#include <linux/rtnetlink.h>
 10#include <net/dcbnl.h>
 11#include "qede.h"
 12
 13static u8 qede_dcbnl_getstate(struct net_device *netdev)
 14{
 15	struct qede_dev *edev = netdev_priv(netdev);
 16
 17	return edev->ops->dcb->getstate(edev->cdev);
 18}
 19
 20static u8 qede_dcbnl_setstate(struct net_device *netdev, u8 state)
 21{
 22	struct qede_dev *edev = netdev_priv(netdev);
 23
 24	return edev->ops->dcb->setstate(edev->cdev, state);
 25}
 26
 27static void qede_dcbnl_getpermhwaddr(struct net_device *netdev,
 28				     u8 *perm_addr)
 29{
 30	memcpy(perm_addr, netdev->dev_addr, netdev->addr_len);
 31}
 32
 33static void qede_dcbnl_getpgtccfgtx(struct net_device *netdev, int prio,
 34				    u8 *prio_type, u8 *pgid, u8 *bw_pct,
 35				    u8 *up_map)
 36{
 37	struct qede_dev *edev = netdev_priv(netdev);
 38
 39	edev->ops->dcb->getpgtccfgtx(edev->cdev, prio, prio_type,
 40				     pgid, bw_pct, up_map);
 41}
 42
 43static void qede_dcbnl_getpgbwgcfgtx(struct net_device *netdev,
 44				     int pgid, u8 *bw_pct)
 45{
 46	struct qede_dev *edev = netdev_priv(netdev);
 47
 48	edev->ops->dcb->getpgbwgcfgtx(edev->cdev, pgid, bw_pct);
 49}
 50
 51static void qede_dcbnl_getpgtccfgrx(struct net_device *netdev, int prio,
 52				    u8 *prio_type, u8 *pgid, u8 *bw_pct,
 53				    u8 *up_map)
 54{
 55	struct qede_dev *edev = netdev_priv(netdev);
 56
 57	edev->ops->dcb->getpgtccfgrx(edev->cdev, prio, prio_type, pgid, bw_pct,
 58				     up_map);
 59}
 60
 61static void qede_dcbnl_getpgbwgcfgrx(struct net_device *netdev,
 62				     int pgid, u8 *bw_pct)
 63{
 64	struct qede_dev *edev = netdev_priv(netdev);
 65
 66	edev->ops->dcb->getpgbwgcfgrx(edev->cdev, pgid, bw_pct);
 67}
 68
 69static void qede_dcbnl_getpfccfg(struct net_device *netdev, int prio,
 70				 u8 *setting)
 71{
 72	struct qede_dev *edev = netdev_priv(netdev);
 73
 74	edev->ops->dcb->getpfccfg(edev->cdev, prio, setting);
 75}
 76
 77static void qede_dcbnl_setpfccfg(struct net_device *netdev, int prio,
 78				 u8 setting)
 79{
 80	struct qede_dev *edev = netdev_priv(netdev);
 81
 82	edev->ops->dcb->setpfccfg(edev->cdev, prio, setting);
 83}
 84
 85static u8 qede_dcbnl_getcap(struct net_device *netdev, int capid, u8 *cap)
 86{
 87	struct qede_dev *edev = netdev_priv(netdev);
 88
 89	return edev->ops->dcb->getcap(edev->cdev, capid, cap);
 90}
 91
 92static int qede_dcbnl_getnumtcs(struct net_device *netdev, int tcid, u8 *num)
 93{
 94	struct qede_dev *edev = netdev_priv(netdev);
 95
 96	return edev->ops->dcb->getnumtcs(edev->cdev, tcid, num);
 97}
 98
 99static u8 qede_dcbnl_getpfcstate(struct net_device *netdev)
100{
101	struct qede_dev *edev = netdev_priv(netdev);
102
103	return edev->ops->dcb->getpfcstate(edev->cdev);
104}
105
106static int qede_dcbnl_getapp(struct net_device *netdev, u8 idtype, u16 id)
107{
108	struct qede_dev *edev = netdev_priv(netdev);
109
110	return edev->ops->dcb->getapp(edev->cdev, idtype, id);
111}
112
113static u8 qede_dcbnl_getdcbx(struct net_device *netdev)
114{
115	struct qede_dev *edev = netdev_priv(netdev);
116
117	return edev->ops->dcb->getdcbx(edev->cdev);
118}
119
120static void qede_dcbnl_setpgtccfgtx(struct net_device *netdev, int prio,
121				    u8 pri_type, u8 pgid, u8 bw_pct, u8 up_map)
122{
123	struct qede_dev *edev = netdev_priv(netdev);
124
125	return edev->ops->dcb->setpgtccfgtx(edev->cdev, prio, pri_type, pgid,
126					    bw_pct, up_map);
127}
128
129static void qede_dcbnl_setpgtccfgrx(struct net_device *netdev, int prio,
130				    u8 pri_type, u8 pgid, u8 bw_pct, u8 up_map)
131{
132	struct qede_dev *edev = netdev_priv(netdev);
133
134	return edev->ops->dcb->setpgtccfgrx(edev->cdev, prio, pri_type, pgid,
135					    bw_pct, up_map);
136}
137
138static void qede_dcbnl_setpgbwgcfgtx(struct net_device *netdev, int pgid,
139				     u8 bw_pct)
140{
141	struct qede_dev *edev = netdev_priv(netdev);
142
143	return edev->ops->dcb->setpgbwgcfgtx(edev->cdev, pgid, bw_pct);
144}
145
146static void qede_dcbnl_setpgbwgcfgrx(struct net_device *netdev, int pgid,
147				     u8 bw_pct)
148{
149	struct qede_dev *edev = netdev_priv(netdev);
150
151	return edev->ops->dcb->setpgbwgcfgrx(edev->cdev, pgid, bw_pct);
152}
153
154static u8 qede_dcbnl_setall(struct net_device *netdev)
155{
156	struct qede_dev *edev = netdev_priv(netdev);
157
158	return edev->ops->dcb->setall(edev->cdev);
159}
160
161static int qede_dcbnl_setnumtcs(struct net_device *netdev, int tcid, u8 num)
162{
163	struct qede_dev *edev = netdev_priv(netdev);
164
165	return edev->ops->dcb->setnumtcs(edev->cdev, tcid, num);
166}
167
168static void qede_dcbnl_setpfcstate(struct net_device *netdev, u8 state)
169{
170	struct qede_dev *edev = netdev_priv(netdev);
171
172	return edev->ops->dcb->setpfcstate(edev->cdev, state);
173}
174
175static int qede_dcbnl_setapp(struct net_device *netdev, u8 idtype, u16 idval,
176			     u8 up)
177{
178	struct qede_dev *edev = netdev_priv(netdev);
179
180	return edev->ops->dcb->setapp(edev->cdev, idtype, idval, up);
181}
182
183static u8 qede_dcbnl_setdcbx(struct net_device *netdev, u8 state)
184{
185	struct qede_dev *edev = netdev_priv(netdev);
186
187	return edev->ops->dcb->setdcbx(edev->cdev, state);
188}
189
190static u8 qede_dcbnl_getfeatcfg(struct net_device *netdev, int featid,
191				u8 *flags)
192{
193	struct qede_dev *edev = netdev_priv(netdev);
194
195	return edev->ops->dcb->getfeatcfg(edev->cdev, featid, flags);
196}
197
198static u8 qede_dcbnl_setfeatcfg(struct net_device *netdev, int featid, u8 flags)
199{
200	struct qede_dev *edev = netdev_priv(netdev);
201
202	return edev->ops->dcb->setfeatcfg(edev->cdev, featid, flags);
203}
204
205static int qede_dcbnl_peer_getappinfo(struct net_device *netdev,
206				      struct dcb_peer_app_info *info,
207				      u16 *count)
208{
209	struct qede_dev *edev = netdev_priv(netdev);
210
211	return edev->ops->dcb->peer_getappinfo(edev->cdev, info, count);
212}
213
214static int qede_dcbnl_peer_getapptable(struct net_device *netdev,
215				       struct dcb_app *app)
216{
217	struct qede_dev *edev = netdev_priv(netdev);
218
219	return edev->ops->dcb->peer_getapptable(edev->cdev, app);
220}
221
222static int qede_dcbnl_cee_peer_getpfc(struct net_device *netdev,
223				      struct cee_pfc *pfc)
224{
225	struct qede_dev *edev = netdev_priv(netdev);
226
227	return edev->ops->dcb->cee_peer_getpfc(edev->cdev, pfc);
228}
229
230static int qede_dcbnl_cee_peer_getpg(struct net_device *netdev,
231				     struct cee_pg *pg)
232{
233	struct qede_dev *edev = netdev_priv(netdev);
234
235	return edev->ops->dcb->cee_peer_getpg(edev->cdev, pg);
236}
237
238static int qede_dcbnl_ieee_getpfc(struct net_device *netdev,
239				  struct ieee_pfc *pfc)
240{
241	struct qede_dev *edev = netdev_priv(netdev);
242
243	return edev->ops->dcb->ieee_getpfc(edev->cdev, pfc);
244}
245
246static int qede_dcbnl_ieee_setpfc(struct net_device *netdev,
247				  struct ieee_pfc *pfc)
248{
249	struct qede_dev *edev = netdev_priv(netdev);
250
251	return edev->ops->dcb->ieee_setpfc(edev->cdev, pfc);
252}
253
254static int qede_dcbnl_ieee_getets(struct net_device *netdev,
255				  struct ieee_ets *ets)
256{
257	struct qede_dev *edev = netdev_priv(netdev);
258
259	return edev->ops->dcb->ieee_getets(edev->cdev, ets);
260}
261
262static int qede_dcbnl_ieee_setets(struct net_device *netdev,
263				  struct ieee_ets *ets)
264{
265	struct qede_dev *edev = netdev_priv(netdev);
266
267	return edev->ops->dcb->ieee_setets(edev->cdev, ets);
268}
269
270static int qede_dcbnl_ieee_getapp(struct net_device *netdev,
271				  struct dcb_app *app)
272{
273	struct qede_dev *edev = netdev_priv(netdev);
274
275	return edev->ops->dcb->ieee_getapp(edev->cdev, app);
276}
277
278static int qede_dcbnl_ieee_setapp(struct net_device *netdev,
279				  struct dcb_app *app)
280{
281	struct qede_dev *edev = netdev_priv(netdev);
282	int err;
283
284	err = dcb_ieee_setapp(netdev, app);
285	if (err)
286		return err;
287
288	return edev->ops->dcb->ieee_setapp(edev->cdev, app);
289}
290
291static int qede_dcbnl_ieee_peer_getpfc(struct net_device *netdev,
292				       struct ieee_pfc *pfc)
293{
294	struct qede_dev *edev = netdev_priv(netdev);
295
296	return edev->ops->dcb->ieee_peer_getpfc(edev->cdev, pfc);
297}
298
299static int qede_dcbnl_ieee_peer_getets(struct net_device *netdev,
300				       struct ieee_ets *ets)
301{
302	struct qede_dev *edev = netdev_priv(netdev);
303
304	return edev->ops->dcb->ieee_peer_getets(edev->cdev, ets);
305}
306
307static const struct dcbnl_rtnl_ops qede_dcbnl_ops = {
308	.ieee_getpfc = qede_dcbnl_ieee_getpfc,
309	.ieee_setpfc = qede_dcbnl_ieee_setpfc,
310	.ieee_getets = qede_dcbnl_ieee_getets,
311	.ieee_setets = qede_dcbnl_ieee_setets,
312	.ieee_getapp = qede_dcbnl_ieee_getapp,
313	.ieee_setapp = qede_dcbnl_ieee_setapp,
314	.ieee_peer_getpfc = qede_dcbnl_ieee_peer_getpfc,
315	.ieee_peer_getets = qede_dcbnl_ieee_peer_getets,
316	.getstate = qede_dcbnl_getstate,
317	.setstate = qede_dcbnl_setstate,
318	.getpermhwaddr = qede_dcbnl_getpermhwaddr,
319	.getpgtccfgtx = qede_dcbnl_getpgtccfgtx,
320	.getpgbwgcfgtx = qede_dcbnl_getpgbwgcfgtx,
321	.getpgtccfgrx = qede_dcbnl_getpgtccfgrx,
322	.getpgbwgcfgrx = qede_dcbnl_getpgbwgcfgrx,
323	.getpfccfg = qede_dcbnl_getpfccfg,
324	.setpfccfg = qede_dcbnl_setpfccfg,
325	.getcap = qede_dcbnl_getcap,
326	.getnumtcs = qede_dcbnl_getnumtcs,
327	.getpfcstate = qede_dcbnl_getpfcstate,
328	.getapp = qede_dcbnl_getapp,
329	.getdcbx = qede_dcbnl_getdcbx,
330	.setpgtccfgtx = qede_dcbnl_setpgtccfgtx,
331	.setpgtccfgrx = qede_dcbnl_setpgtccfgrx,
332	.setpgbwgcfgtx = qede_dcbnl_setpgbwgcfgtx,
333	.setpgbwgcfgrx = qede_dcbnl_setpgbwgcfgrx,
334	.setall = qede_dcbnl_setall,
335	.setnumtcs = qede_dcbnl_setnumtcs,
336	.setpfcstate = qede_dcbnl_setpfcstate,
337	.setapp = qede_dcbnl_setapp,
338	.setdcbx = qede_dcbnl_setdcbx,
339	.setfeatcfg = qede_dcbnl_setfeatcfg,
340	.getfeatcfg = qede_dcbnl_getfeatcfg,
341	.peer_getappinfo = qede_dcbnl_peer_getappinfo,
342	.peer_getapptable = qede_dcbnl_peer_getapptable,
343	.cee_peer_getpfc = qede_dcbnl_cee_peer_getpfc,
344	.cee_peer_getpg = qede_dcbnl_cee_peer_getpg,
345};
346
347void qede_set_dcbnl_ops(struct net_device *dev)
348{
349	dev->dcbnl_ops = &qede_dcbnl_ops;
350}
v5.4
  1// SPDX-License-Identifier: GPL-2.0-only
  2/* QLogic qede NIC Driver
  3* Copyright (c) 2015 QLogic Corporation
  4*/
 
  5
  6#include <linux/types.h>
  7#include <linux/netdevice.h>
  8#include <linux/rtnetlink.h>
  9#include <net/dcbnl.h>
 10#include "qede.h"
 11
 12static u8 qede_dcbnl_getstate(struct net_device *netdev)
 13{
 14	struct qede_dev *edev = netdev_priv(netdev);
 15
 16	return edev->ops->dcb->getstate(edev->cdev);
 17}
 18
 19static u8 qede_dcbnl_setstate(struct net_device *netdev, u8 state)
 20{
 21	struct qede_dev *edev = netdev_priv(netdev);
 22
 23	return edev->ops->dcb->setstate(edev->cdev, state);
 24}
 25
 26static void qede_dcbnl_getpermhwaddr(struct net_device *netdev,
 27				     u8 *perm_addr)
 28{
 29	memcpy(perm_addr, netdev->dev_addr, netdev->addr_len);
 30}
 31
 32static void qede_dcbnl_getpgtccfgtx(struct net_device *netdev, int prio,
 33				    u8 *prio_type, u8 *pgid, u8 *bw_pct,
 34				    u8 *up_map)
 35{
 36	struct qede_dev *edev = netdev_priv(netdev);
 37
 38	edev->ops->dcb->getpgtccfgtx(edev->cdev, prio, prio_type,
 39				     pgid, bw_pct, up_map);
 40}
 41
 42static void qede_dcbnl_getpgbwgcfgtx(struct net_device *netdev,
 43				     int pgid, u8 *bw_pct)
 44{
 45	struct qede_dev *edev = netdev_priv(netdev);
 46
 47	edev->ops->dcb->getpgbwgcfgtx(edev->cdev, pgid, bw_pct);
 48}
 49
 50static void qede_dcbnl_getpgtccfgrx(struct net_device *netdev, int prio,
 51				    u8 *prio_type, u8 *pgid, u8 *bw_pct,
 52				    u8 *up_map)
 53{
 54	struct qede_dev *edev = netdev_priv(netdev);
 55
 56	edev->ops->dcb->getpgtccfgrx(edev->cdev, prio, prio_type, pgid, bw_pct,
 57				     up_map);
 58}
 59
 60static void qede_dcbnl_getpgbwgcfgrx(struct net_device *netdev,
 61				     int pgid, u8 *bw_pct)
 62{
 63	struct qede_dev *edev = netdev_priv(netdev);
 64
 65	edev->ops->dcb->getpgbwgcfgrx(edev->cdev, pgid, bw_pct);
 66}
 67
 68static void qede_dcbnl_getpfccfg(struct net_device *netdev, int prio,
 69				 u8 *setting)
 70{
 71	struct qede_dev *edev = netdev_priv(netdev);
 72
 73	edev->ops->dcb->getpfccfg(edev->cdev, prio, setting);
 74}
 75
 76static void qede_dcbnl_setpfccfg(struct net_device *netdev, int prio,
 77				 u8 setting)
 78{
 79	struct qede_dev *edev = netdev_priv(netdev);
 80
 81	edev->ops->dcb->setpfccfg(edev->cdev, prio, setting);
 82}
 83
 84static u8 qede_dcbnl_getcap(struct net_device *netdev, int capid, u8 *cap)
 85{
 86	struct qede_dev *edev = netdev_priv(netdev);
 87
 88	return edev->ops->dcb->getcap(edev->cdev, capid, cap);
 89}
 90
 91static int qede_dcbnl_getnumtcs(struct net_device *netdev, int tcid, u8 *num)
 92{
 93	struct qede_dev *edev = netdev_priv(netdev);
 94
 95	return edev->ops->dcb->getnumtcs(edev->cdev, tcid, num);
 96}
 97
 98static u8 qede_dcbnl_getpfcstate(struct net_device *netdev)
 99{
100	struct qede_dev *edev = netdev_priv(netdev);
101
102	return edev->ops->dcb->getpfcstate(edev->cdev);
103}
104
105static int qede_dcbnl_getapp(struct net_device *netdev, u8 idtype, u16 id)
106{
107	struct qede_dev *edev = netdev_priv(netdev);
108
109	return edev->ops->dcb->getapp(edev->cdev, idtype, id);
110}
111
112static u8 qede_dcbnl_getdcbx(struct net_device *netdev)
113{
114	struct qede_dev *edev = netdev_priv(netdev);
115
116	return edev->ops->dcb->getdcbx(edev->cdev);
117}
118
119static void qede_dcbnl_setpgtccfgtx(struct net_device *netdev, int prio,
120				    u8 pri_type, u8 pgid, u8 bw_pct, u8 up_map)
121{
122	struct qede_dev *edev = netdev_priv(netdev);
123
124	return edev->ops->dcb->setpgtccfgtx(edev->cdev, prio, pri_type, pgid,
125					    bw_pct, up_map);
126}
127
128static void qede_dcbnl_setpgtccfgrx(struct net_device *netdev, int prio,
129				    u8 pri_type, u8 pgid, u8 bw_pct, u8 up_map)
130{
131	struct qede_dev *edev = netdev_priv(netdev);
132
133	return edev->ops->dcb->setpgtccfgrx(edev->cdev, prio, pri_type, pgid,
134					    bw_pct, up_map);
135}
136
137static void qede_dcbnl_setpgbwgcfgtx(struct net_device *netdev, int pgid,
138				     u8 bw_pct)
139{
140	struct qede_dev *edev = netdev_priv(netdev);
141
142	return edev->ops->dcb->setpgbwgcfgtx(edev->cdev, pgid, bw_pct);
143}
144
145static void qede_dcbnl_setpgbwgcfgrx(struct net_device *netdev, int pgid,
146				     u8 bw_pct)
147{
148	struct qede_dev *edev = netdev_priv(netdev);
149
150	return edev->ops->dcb->setpgbwgcfgrx(edev->cdev, pgid, bw_pct);
151}
152
153static u8 qede_dcbnl_setall(struct net_device *netdev)
154{
155	struct qede_dev *edev = netdev_priv(netdev);
156
157	return edev->ops->dcb->setall(edev->cdev);
158}
159
160static int qede_dcbnl_setnumtcs(struct net_device *netdev, int tcid, u8 num)
161{
162	struct qede_dev *edev = netdev_priv(netdev);
163
164	return edev->ops->dcb->setnumtcs(edev->cdev, tcid, num);
165}
166
167static void qede_dcbnl_setpfcstate(struct net_device *netdev, u8 state)
168{
169	struct qede_dev *edev = netdev_priv(netdev);
170
171	return edev->ops->dcb->setpfcstate(edev->cdev, state);
172}
173
174static int qede_dcbnl_setapp(struct net_device *netdev, u8 idtype, u16 idval,
175			     u8 up)
176{
177	struct qede_dev *edev = netdev_priv(netdev);
178
179	return edev->ops->dcb->setapp(edev->cdev, idtype, idval, up);
180}
181
182static u8 qede_dcbnl_setdcbx(struct net_device *netdev, u8 state)
183{
184	struct qede_dev *edev = netdev_priv(netdev);
185
186	return edev->ops->dcb->setdcbx(edev->cdev, state);
187}
188
189static u8 qede_dcbnl_getfeatcfg(struct net_device *netdev, int featid,
190				u8 *flags)
191{
192	struct qede_dev *edev = netdev_priv(netdev);
193
194	return edev->ops->dcb->getfeatcfg(edev->cdev, featid, flags);
195}
196
197static u8 qede_dcbnl_setfeatcfg(struct net_device *netdev, int featid, u8 flags)
198{
199	struct qede_dev *edev = netdev_priv(netdev);
200
201	return edev->ops->dcb->setfeatcfg(edev->cdev, featid, flags);
202}
203
204static int qede_dcbnl_peer_getappinfo(struct net_device *netdev,
205				      struct dcb_peer_app_info *info,
206				      u16 *count)
207{
208	struct qede_dev *edev = netdev_priv(netdev);
209
210	return edev->ops->dcb->peer_getappinfo(edev->cdev, info, count);
211}
212
213static int qede_dcbnl_peer_getapptable(struct net_device *netdev,
214				       struct dcb_app *app)
215{
216	struct qede_dev *edev = netdev_priv(netdev);
217
218	return edev->ops->dcb->peer_getapptable(edev->cdev, app);
219}
220
221static int qede_dcbnl_cee_peer_getpfc(struct net_device *netdev,
222				      struct cee_pfc *pfc)
223{
224	struct qede_dev *edev = netdev_priv(netdev);
225
226	return edev->ops->dcb->cee_peer_getpfc(edev->cdev, pfc);
227}
228
229static int qede_dcbnl_cee_peer_getpg(struct net_device *netdev,
230				     struct cee_pg *pg)
231{
232	struct qede_dev *edev = netdev_priv(netdev);
233
234	return edev->ops->dcb->cee_peer_getpg(edev->cdev, pg);
235}
236
237static int qede_dcbnl_ieee_getpfc(struct net_device *netdev,
238				  struct ieee_pfc *pfc)
239{
240	struct qede_dev *edev = netdev_priv(netdev);
241
242	return edev->ops->dcb->ieee_getpfc(edev->cdev, pfc);
243}
244
245static int qede_dcbnl_ieee_setpfc(struct net_device *netdev,
246				  struct ieee_pfc *pfc)
247{
248	struct qede_dev *edev = netdev_priv(netdev);
249
250	return edev->ops->dcb->ieee_setpfc(edev->cdev, pfc);
251}
252
253static int qede_dcbnl_ieee_getets(struct net_device *netdev,
254				  struct ieee_ets *ets)
255{
256	struct qede_dev *edev = netdev_priv(netdev);
257
258	return edev->ops->dcb->ieee_getets(edev->cdev, ets);
259}
260
261static int qede_dcbnl_ieee_setets(struct net_device *netdev,
262				  struct ieee_ets *ets)
263{
264	struct qede_dev *edev = netdev_priv(netdev);
265
266	return edev->ops->dcb->ieee_setets(edev->cdev, ets);
267}
268
269static int qede_dcbnl_ieee_getapp(struct net_device *netdev,
270				  struct dcb_app *app)
271{
272	struct qede_dev *edev = netdev_priv(netdev);
273
274	return edev->ops->dcb->ieee_getapp(edev->cdev, app);
275}
276
277static int qede_dcbnl_ieee_setapp(struct net_device *netdev,
278				  struct dcb_app *app)
279{
280	struct qede_dev *edev = netdev_priv(netdev);
281	int err;
282
283	err = dcb_ieee_setapp(netdev, app);
284	if (err)
285		return err;
286
287	return edev->ops->dcb->ieee_setapp(edev->cdev, app);
288}
289
290static int qede_dcbnl_ieee_peer_getpfc(struct net_device *netdev,
291				       struct ieee_pfc *pfc)
292{
293	struct qede_dev *edev = netdev_priv(netdev);
294
295	return edev->ops->dcb->ieee_peer_getpfc(edev->cdev, pfc);
296}
297
298static int qede_dcbnl_ieee_peer_getets(struct net_device *netdev,
299				       struct ieee_ets *ets)
300{
301	struct qede_dev *edev = netdev_priv(netdev);
302
303	return edev->ops->dcb->ieee_peer_getets(edev->cdev, ets);
304}
305
306static const struct dcbnl_rtnl_ops qede_dcbnl_ops = {
307	.ieee_getpfc = qede_dcbnl_ieee_getpfc,
308	.ieee_setpfc = qede_dcbnl_ieee_setpfc,
309	.ieee_getets = qede_dcbnl_ieee_getets,
310	.ieee_setets = qede_dcbnl_ieee_setets,
311	.ieee_getapp = qede_dcbnl_ieee_getapp,
312	.ieee_setapp = qede_dcbnl_ieee_setapp,
313	.ieee_peer_getpfc = qede_dcbnl_ieee_peer_getpfc,
314	.ieee_peer_getets = qede_dcbnl_ieee_peer_getets,
315	.getstate = qede_dcbnl_getstate,
316	.setstate = qede_dcbnl_setstate,
317	.getpermhwaddr = qede_dcbnl_getpermhwaddr,
318	.getpgtccfgtx = qede_dcbnl_getpgtccfgtx,
319	.getpgbwgcfgtx = qede_dcbnl_getpgbwgcfgtx,
320	.getpgtccfgrx = qede_dcbnl_getpgtccfgrx,
321	.getpgbwgcfgrx = qede_dcbnl_getpgbwgcfgrx,
322	.getpfccfg = qede_dcbnl_getpfccfg,
323	.setpfccfg = qede_dcbnl_setpfccfg,
324	.getcap = qede_dcbnl_getcap,
325	.getnumtcs = qede_dcbnl_getnumtcs,
326	.getpfcstate = qede_dcbnl_getpfcstate,
327	.getapp = qede_dcbnl_getapp,
328	.getdcbx = qede_dcbnl_getdcbx,
329	.setpgtccfgtx = qede_dcbnl_setpgtccfgtx,
330	.setpgtccfgrx = qede_dcbnl_setpgtccfgrx,
331	.setpgbwgcfgtx = qede_dcbnl_setpgbwgcfgtx,
332	.setpgbwgcfgrx = qede_dcbnl_setpgbwgcfgrx,
333	.setall = qede_dcbnl_setall,
334	.setnumtcs = qede_dcbnl_setnumtcs,
335	.setpfcstate = qede_dcbnl_setpfcstate,
336	.setapp = qede_dcbnl_setapp,
337	.setdcbx = qede_dcbnl_setdcbx,
338	.setfeatcfg = qede_dcbnl_setfeatcfg,
339	.getfeatcfg = qede_dcbnl_getfeatcfg,
340	.peer_getappinfo = qede_dcbnl_peer_getappinfo,
341	.peer_getapptable = qede_dcbnl_peer_getapptable,
342	.cee_peer_getpfc = qede_dcbnl_cee_peer_getpfc,
343	.cee_peer_getpg = qede_dcbnl_cee_peer_getpg,
344};
345
346void qede_set_dcbnl_ops(struct net_device *dev)
347{
348	dev->dcbnl_ops = &qede_dcbnl_ops;
349}