Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* 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
13#ifdef CONFIG_BNXT_SRIOV
14
15#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
27/* To clear devlink pointer from bp, pass NULL dl */
28static inline void bnxt_link_bp_to_dl(struct bnxt *bp, struct devlink *dl)
29{
30 bp->dl = dl;
31
32 /* 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 }
38}
39
40int bnxt_dl_register(struct bnxt *bp);
41void bnxt_dl_unregister(struct bnxt *bp);
42void bnxt_vf_reps_destroy(struct bnxt *bp);
43void 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);
47
48static 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
56#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
84static inline u16 bnxt_vf_rep_get_fid(struct net_device *dev)
85{
86 return 0;
87}
88#endif /* CONFIG_BNXT_SRIOV */
89#endif /* BNXT_VFR_H */