/* 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 if 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_ */
Messung V0.5 in Prozent C=92 H=100 G=95
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-10-04)
¤
*© Formatika GbR, Deutschland