xref: /aosp_15_r20/external/libnl/include/netlink/route/link/sriov.h (revision 4dc78e53d49367fa8e61b07018507c90983a077d)
1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1-only */
2*4dc78e53SAndroid Build Coastguard Worker /*
3*4dc78e53SAndroid Build Coastguard Worker  * Copyright (c) 2016 Intel Corp. All rights reserved.
4*4dc78e53SAndroid Build Coastguard Worker  * Copyright (c) 2016 Jef Oliver <[email protected]>
5*4dc78e53SAndroid Build Coastguard Worker  */
6*4dc78e53SAndroid Build Coastguard Worker 
7*4dc78e53SAndroid Build Coastguard Worker #ifndef NETLINK_LINK_SRIOV_H_
8*4dc78e53SAndroid Build Coastguard Worker #define NETLINK_LINK_SRIOV_H_
9*4dc78e53SAndroid Build Coastguard Worker 
10*4dc78e53SAndroid Build Coastguard Worker #include <netlink/netlink.h>
11*4dc78e53SAndroid Build Coastguard Worker #include <netlink/route/link.h>
12*4dc78e53SAndroid Build Coastguard Worker 
13*4dc78e53SAndroid Build Coastguard Worker #ifdef __cplusplus
14*4dc78e53SAndroid Build Coastguard Worker extern "C" {
15*4dc78e53SAndroid Build Coastguard Worker #endif
16*4dc78e53SAndroid Build Coastguard Worker 
17*4dc78e53SAndroid Build Coastguard Worker #define RTNL_VF_GUID_STR_LEN 23
18*4dc78e53SAndroid Build Coastguard Worker 
19*4dc78e53SAndroid Build Coastguard Worker /**
20*4dc78e53SAndroid Build Coastguard Worker  * @ingroup sriov
21*4dc78e53SAndroid Build Coastguard Worker  */
22*4dc78e53SAndroid Build Coastguard Worker typedef enum {
23*4dc78e53SAndroid Build Coastguard Worker 	RTNL_LINK_VF_RATE_API_UNSPEC,	/*!< Unspecified API type */
24*4dc78e53SAndroid Build Coastguard Worker 	RTNL_LINK_VF_RATE_API_OLD,	/*!< Old Rate setting API */
25*4dc78e53SAndroid Build Coastguard Worker 	RTNL_LINK_VF_RATE_API_NEW,	/*!< New Rate setting API */
26*4dc78e53SAndroid Build Coastguard Worker 	__RTNL_LINK_VF_RATE_API_MAX,
27*4dc78e53SAndroid Build Coastguard Worker } rtnl_link_rate_api_t;
28*4dc78e53SAndroid Build Coastguard Worker 
29*4dc78e53SAndroid Build Coastguard Worker #define RTNL_LINK_VF_RATE_API_MAX (__RTNL_LINK_VF_RATE_API_MAX - 1)
30*4dc78e53SAndroid Build Coastguard Worker 
31*4dc78e53SAndroid Build Coastguard Worker /**
32*4dc78e53SAndroid Build Coastguard Worker  * @ingroup sriov
33*4dc78e53SAndroid Build Coastguard Worker  */
34*4dc78e53SAndroid Build Coastguard Worker typedef enum {
35*4dc78e53SAndroid Build Coastguard Worker 	RTNL_LINK_VF_STATS_RX_PACKETS,	/*!< Packets Received */
36*4dc78e53SAndroid Build Coastguard Worker 	RTNL_LINK_VF_STATS_TX_PACKETS,	/*!< Packets Sent */
37*4dc78e53SAndroid Build Coastguard Worker 	RTNL_LINK_VF_STATS_RX_BYTES,	/*!< Bytes Recieved */
38*4dc78e53SAndroid Build Coastguard Worker 	RTNL_LINK_VF_STATS_TX_BYTES,	/*!< Bytes Sent */
39*4dc78e53SAndroid Build Coastguard Worker 	RTNL_LINK_VF_STATS_BROADCAST,	/*!< Broadcast packets received */
40*4dc78e53SAndroid Build Coastguard Worker 	RTNL_LINK_VF_STATS_MULTICAST,	/*!< Multicast packets received */
41*4dc78e53SAndroid Build Coastguard Worker 	__RTNL_LINK_VF_STATS_MAX,
42*4dc78e53SAndroid Build Coastguard Worker } rtnl_link_vf_stats_t;
43*4dc78e53SAndroid Build Coastguard Worker 
44*4dc78e53SAndroid Build Coastguard Worker #define RTNL_LINK_VF_STATS_MAX (__RTNL_LINK_VF_STATS_MAX - 1)
45*4dc78e53SAndroid Build Coastguard Worker 
46*4dc78e53SAndroid Build Coastguard Worker /**
47*4dc78e53SAndroid Build Coastguard Worker  * @struct rtnl_link_vf sriov.h "netlink/route/link/sriov.h"
48*4dc78e53SAndroid Build Coastguard Worker  * @brief SRIOV VF object
49*4dc78e53SAndroid Build Coastguard Worker  * @ingroup sriov
50*4dc78e53SAndroid Build Coastguard Worker  *
51*4dc78e53SAndroid Build Coastguard Worker  * @copydoc private_struct
52*4dc78e53SAndroid Build Coastguard Worker  */
53*4dc78e53SAndroid Build Coastguard Worker struct rtnl_link_vf;
54*4dc78e53SAndroid Build Coastguard Worker 
55*4dc78e53SAndroid Build Coastguard Worker /**
56*4dc78e53SAndroid Build Coastguard Worker  * @brief SRIOV VF VFLAN settings
57*4dc78e53SAndroid Build Coastguard Worker  * @ingroup sriov
58*4dc78e53SAndroid Build Coastguard Worker  */
59*4dc78e53SAndroid Build Coastguard Worker typedef struct nl_vf_vlan_info {
60*4dc78e53SAndroid Build Coastguard Worker 	uint32_t	vf_vlan;	/*!< VLAN number */
61*4dc78e53SAndroid Build Coastguard Worker 	uint32_t	vf_vlan_qos;	/*!< VLAN QOS value */
62*4dc78e53SAndroid Build Coastguard Worker 	uint16_t	vf_vlan_proto;	/*!< VLAN protocol */
63*4dc78e53SAndroid Build Coastguard Worker } nl_vf_vlan_info_t;
64*4dc78e53SAndroid Build Coastguard Worker 
65*4dc78e53SAndroid Build Coastguard Worker /**
66*4dc78e53SAndroid Build Coastguard Worker  * @brief SRIOV VF VLANs information
67*4dc78e53SAndroid Build Coastguard Worker  * @ingroup sriov
68*4dc78e53SAndroid Build Coastguard Worker  */
69*4dc78e53SAndroid Build Coastguard Worker typedef struct nl_vf_vlans {
70*4dc78e53SAndroid Build Coastguard Worker 	int			ce_refcnt;	/*!< Reference counter. Don't change this value */
71*4dc78e53SAndroid Build Coastguard Worker 	int			size;		/*!< Number of VLANs on the SRIOV VF */
72*4dc78e53SAndroid Build Coastguard Worker 	nl_vf_vlan_info_t *	vlans;		/*!< nl_vf_vlan_info_t array of SRIOV VF VLANs */
73*4dc78e53SAndroid Build Coastguard Worker } nl_vf_vlans_t;
74*4dc78e53SAndroid Build Coastguard Worker 
75*4dc78e53SAndroid Build Coastguard Worker /**
76*4dc78e53SAndroid Build Coastguard Worker  * @brief VF Rate information structure
77*4dc78e53SAndroid Build Coastguard Worker  * @ingroup sriov
78*4dc78e53SAndroid Build Coastguard Worker  */
79*4dc78e53SAndroid Build Coastguard Worker struct nl_vf_rate {
80*4dc78e53SAndroid Build Coastguard Worker 	int		api;		/*!< rtnl_link_rate_api_t API Version to use */
81*4dc78e53SAndroid Build Coastguard Worker 	uint32_t	rate;		/*!< Old API Max Rate in Mbps */
82*4dc78e53SAndroid Build Coastguard Worker 	uint32_t	max_tx_rate;	/*!< New API Max Rate in Mbps */
83*4dc78e53SAndroid Build Coastguard Worker 	uint32_t	min_tx_rate;	/*!< New API Mix Rate in Mbps */
84*4dc78e53SAndroid Build Coastguard Worker };
85*4dc78e53SAndroid Build Coastguard Worker 
86*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_add(struct rtnl_link *, struct rtnl_link_vf *);
87*4dc78e53SAndroid Build Coastguard Worker extern struct rtnl_link_vf *rtnl_link_vf_alloc(void);
88*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_free(struct rtnl_link_vf *);
89*4dc78e53SAndroid Build Coastguard Worker extern struct rtnl_link_vf *rtnl_link_vf_get(struct rtnl_link *, uint32_t);
90*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_put(struct rtnl_link_vf *);
91*4dc78e53SAndroid Build Coastguard Worker 
92*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_get_addr(struct rtnl_link_vf *, struct nl_addr **);
93*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_set_addr(struct rtnl_link_vf *, struct nl_addr *);
94*4dc78e53SAndroid Build Coastguard Worker 
95*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_set_ib_node_guid(struct rtnl_link_vf *, uint64_t);
96*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_set_ib_port_guid(struct rtnl_link_vf *, uint64_t);
97*4dc78e53SAndroid Build Coastguard Worker 
98*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_get_index(struct rtnl_link_vf *, uint32_t *);
99*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_set_index(struct rtnl_link_vf *, uint32_t);
100*4dc78e53SAndroid Build Coastguard Worker 
101*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_get_linkstate(struct rtnl_link_vf *, uint32_t *);
102*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_set_linkstate(struct rtnl_link_vf *, uint32_t);
103*4dc78e53SAndroid Build Coastguard Worker 
104*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_get_rate(struct rtnl_link_vf *, struct nl_vf_rate *);
105*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_set_rate(struct rtnl_link_vf *, struct nl_vf_rate *);
106*4dc78e53SAndroid Build Coastguard Worker 
107*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_get_rss_query_en(struct rtnl_link_vf *, uint32_t *);
108*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_set_rss_query_en(struct rtnl_link_vf *, uint32_t);
109*4dc78e53SAndroid Build Coastguard Worker 
110*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_get_spoofchk(struct rtnl_link_vf *, uint32_t *);
111*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_set_spoofchk(struct rtnl_link_vf *, uint32_t);
112*4dc78e53SAndroid Build Coastguard Worker 
113*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_get_stat(struct rtnl_link_vf *, rtnl_link_vf_stats_t,
114*4dc78e53SAndroid Build Coastguard Worker 				 uint64_t *);
115*4dc78e53SAndroid Build Coastguard Worker 
116*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_get_trust(struct rtnl_link_vf *, uint32_t *);
117*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_set_trust(struct rtnl_link_vf *, uint32_t);
118*4dc78e53SAndroid Build Coastguard Worker 
119*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_get_vlans(struct rtnl_link_vf *, nl_vf_vlans_t **);
120*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_set_vlans(struct rtnl_link_vf *, nl_vf_vlans_t *);
121*4dc78e53SAndroid Build Coastguard Worker 
122*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_vlan_alloc(nl_vf_vlans_t **, int);
123*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_vlan_free(nl_vf_vlans_t *vf_vlans);
124*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_link_vf_vlan_put(nl_vf_vlans_t *);
125*4dc78e53SAndroid Build Coastguard Worker 
126*4dc78e53SAndroid Build Coastguard Worker /* Utility functions */
127*4dc78e53SAndroid Build Coastguard Worker extern char *rtnl_link_vf_linkstate2str(uint32_t, char *, size_t);
128*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_str2linkstate(const char *);
129*4dc78e53SAndroid Build Coastguard Worker 
130*4dc78e53SAndroid Build Coastguard Worker extern char *rtnl_link_vf_vlanproto2str(uint16_t, char *, size_t);
131*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_str2vlanproto(const char *);
132*4dc78e53SAndroid Build Coastguard Worker 
133*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vf_str2guid(uint64_t *, const char *);
134*4dc78e53SAndroid Build Coastguard Worker 
135*4dc78e53SAndroid Build Coastguard Worker #ifdef __cplusplus
136*4dc78e53SAndroid Build Coastguard Worker }
137*4dc78e53SAndroid Build Coastguard Worker #endif
138*4dc78e53SAndroid Build Coastguard Worker 
139*4dc78e53SAndroid Build Coastguard Worker #endif
140