File: devlink_port.h

package info (click to toggle)
linux 6.12.27-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,674,652 kB
  • sloc: ansic: 25,905,246; asm: 269,514; sh: 136,573; python: 64,834; makefile: 55,708; perl: 38,062; xml: 19,283; cpp: 5,895; yacc: 4,927; lex: 2,939; awk: 1,594; sed: 28; ruby: 25
file content (58 lines) | stat: -rw-r--r-- 1,854 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (c) 2024, Intel Corporation. */

#ifndef _DEVLINK_PORT_H_
#define _DEVLINK_PORT_H_

#include "../ice.h"
#include "../ice_sf_eth.h"

/**
 * struct ice_dynamic_port - Track dynamically added devlink port instance
 * @hw_addr: the HW address for this port
 * @active: true if the port has been activated
 * @attached: true it the prot is attached
 * @devlink_port: the associated devlink port structure
 * @pf: pointer to the PF private structure
 * @vsi: the VSI associated with this port
 * @repr_id: the representor ID
 * @sfnum: the subfunction ID
 * @sf_dev: pointer to the subfunction device
 *
 * An instance of a dynamically added devlink port. Each port flavour
 */
struct ice_dynamic_port {
	u8 hw_addr[ETH_ALEN];
	u8 active: 1;
	u8 attached: 1;
	struct devlink_port devlink_port;
	struct ice_pf *pf;
	struct ice_vsi *vsi;
	unsigned long repr_id;
	u32 sfnum;
	/* Flavour-specific implementation data */
	union {
		struct ice_sf_dev *sf_dev;
	};
};

void ice_dealloc_all_dynamic_ports(struct ice_pf *pf);

int ice_devlink_create_pf_port(struct ice_pf *pf);
void ice_devlink_destroy_pf_port(struct ice_pf *pf);
int ice_devlink_create_vf_port(struct ice_vf *vf);
void ice_devlink_destroy_vf_port(struct ice_vf *vf);
int ice_devlink_create_sf_port(struct ice_dynamic_port *dyn_port);
void ice_devlink_destroy_sf_port(struct ice_dynamic_port *dyn_port);
int ice_devlink_create_sf_dev_port(struct ice_sf_dev *sf_dev);
void ice_devlink_destroy_sf_dev_port(struct ice_sf_dev *sf_dev);

#define ice_devlink_port_to_dyn(port) \
	container_of(port, struct ice_dynamic_port, devlink_port)

int
ice_devlink_port_new(struct devlink *devlink,
		     const struct devlink_port_new_attrs *new_attr,
		     struct netlink_ext_ack *extack,
		     struct devlink_port **devlink_port);
#endif /* _DEVLINK_PORT_H_ */