blob: d8b5f89427fab98abdd5aef7349432c1a50e404b [file] [log] [blame]
Sathya Perla4ab0c6a2017-07-24 12:34:27 -04001/* Broadcom NetXtreme-C/E network driver.
2 *
3 * Copyright (c) 2016-2017 Broadcom Limited
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation.
8 */
9
10#ifndef BNXT_VFR_H
11#define BNXT_VFR_H
12
Sathya Perlad3e3bec2017-07-25 13:28:39 -040013#ifdef CONFIG_BNXT_SRIOV
14
Sathya Perla4ab0c6a2017-07-24 12:34:27 -040015#define MAX_CFA_CODE 65536
16
17/* Struct to hold housekeeping info needed by devlink interface */
18struct bnxt_dl {
19 struct bnxt *bp; /* back ptr to the controlling dev */
20};
21
22static inline struct bnxt *bnxt_get_bp_from_dl(struct devlink *dl)
23{
24 return ((struct bnxt_dl *)devlink_priv(dl))->bp;
25}
26
Sathya Perla70855602017-08-28 13:40:32 -040027/* To clear devlink pointer from bp, pass NULL dl */
28static inline void bnxt_link_bp_to_dl(struct bnxt *bp, struct devlink *dl)
Sathya Perla4ab0c6a2017-07-24 12:34:27 -040029{
Sathya Perla70855602017-08-28 13:40:32 -040030 bp->dl = dl;
Sathya Perla4ab0c6a2017-07-24 12:34:27 -040031
Sathya Perla70855602017-08-28 13:40:32 -040032 /* add a back pointer in dl to bp */
33 if (dl) {
34 struct bnxt_dl *bp_dl = devlink_priv(dl);
35
36 bp_dl->bp = bp;
37 }
Sathya Perla4ab0c6a2017-07-24 12:34:27 -040038}
39
40int bnxt_dl_register(struct bnxt *bp);
41void bnxt_dl_unregister(struct bnxt *bp);
42void bnxt_vf_reps_destroy(struct bnxt *bp);
Sathya Perlaee5c7fb2017-07-24 12:34:28 -040043void bnxt_vf_reps_close(struct bnxt *bp);
44void bnxt_vf_reps_open(struct bnxt *bp);
45void bnxt_vf_rep_rx(struct bnxt *bp, struct sk_buff *skb);
46struct net_device *bnxt_get_vf_rep(struct bnxt *bp, u16 cfa_code);
Sathya Perla4ab0c6a2017-07-24 12:34:27 -040047
Sathya Perla2ae74082017-08-28 13:40:33 -040048static inline u16 bnxt_vf_rep_get_fid(struct net_device *dev)
49{
50 struct bnxt_vf_rep *vf_rep = netdev_priv(dev);
51 struct bnxt *bp = vf_rep->bp;
52
53 return bp->pf.vf[vf_rep->vf_idx].fw_fid;
54}
55
Sathya Perlad3e3bec2017-07-25 13:28:39 -040056#else
57
58static inline int bnxt_dl_register(struct bnxt *bp)
59{
60 return 0;
61}
62
63static inline void bnxt_dl_unregister(struct bnxt *bp)
64{
65}
66
67static inline void bnxt_vf_reps_close(struct bnxt *bp)
68{
69}
70
71static inline void bnxt_vf_reps_open(struct bnxt *bp)
72{
73}
74
75static inline void bnxt_vf_rep_rx(struct bnxt *bp, struct sk_buff *skb)
76{
77}
78
79static inline struct net_device *bnxt_get_vf_rep(struct bnxt *bp, u16 cfa_code)
80{
81 return NULL;
82}
83#endif /* CONFIG_BNXT_SRIOV */
Sathya Perla4ab0c6a2017-07-24 12:34:27 -040084#endif /* BNXT_VFR_H */