59 lines
1.8 KiB
C
59 lines
1.8 KiB
C
/* 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_ */
|