mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-04-22 08:47:42 +07:00
nfp: assign vNIC id as phys_port_name of vNICs which are not ports
When NFP is modelled as a switch we assign phys_port_name to respective port(representor )s: vNIC0 - | - PF port (pf%d) MAC/PHY (p%d[s%d]) - |E== In most cases there is only one vNIC for communication with the switch. If there is more than one we need to be able to identify them. Use %d as phys_port_name of the vNICs. We don't have to pass ID to nfp_net_debugfs_vnic_add() separately any more. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
290f54db31
commit
51c1df83e3
@ -545,6 +545,7 @@ struct nfp_net_dp {
|
|||||||
/**
|
/**
|
||||||
* struct nfp_net - NFP network device structure
|
* struct nfp_net - NFP network device structure
|
||||||
* @dp: Datapath structure
|
* @dp: Datapath structure
|
||||||
|
* @id: vNIC id within the PF (0 for VFs)
|
||||||
* @fw_ver: Firmware version
|
* @fw_ver: Firmware version
|
||||||
* @cap: Capabilities advertised by the Firmware
|
* @cap: Capabilities advertised by the Firmware
|
||||||
* @max_mtu: Maximum support MTU advertised by the Firmware
|
* @max_mtu: Maximum support MTU advertised by the Firmware
|
||||||
@ -597,6 +598,8 @@ struct nfp_net {
|
|||||||
|
|
||||||
struct nfp_net_fw_version fw_ver;
|
struct nfp_net_fw_version fw_ver;
|
||||||
|
|
||||||
|
u32 id;
|
||||||
|
|
||||||
u32 cap;
|
u32 cap;
|
||||||
u32 max_mtu;
|
u32 max_mtu;
|
||||||
|
|
||||||
@ -909,7 +912,7 @@ int nfp_net_ring_reconfig(struct nfp_net *nn, struct nfp_net_dp *new,
|
|||||||
void nfp_net_debugfs_create(void);
|
void nfp_net_debugfs_create(void);
|
||||||
void nfp_net_debugfs_destroy(void);
|
void nfp_net_debugfs_destroy(void);
|
||||||
struct dentry *nfp_net_debugfs_device_add(struct pci_dev *pdev);
|
struct dentry *nfp_net_debugfs_device_add(struct pci_dev *pdev);
|
||||||
void nfp_net_debugfs_vnic_add(struct nfp_net *nn, struct dentry *ddir, int id);
|
void nfp_net_debugfs_vnic_add(struct nfp_net *nn, struct dentry *ddir);
|
||||||
void nfp_net_debugfs_dir_clean(struct dentry **dir);
|
void nfp_net_debugfs_dir_clean(struct dentry **dir);
|
||||||
#else
|
#else
|
||||||
static inline void nfp_net_debugfs_create(void)
|
static inline void nfp_net_debugfs_create(void)
|
||||||
@ -926,7 +929,7 @@ static inline struct dentry *nfp_net_debugfs_device_add(struct pci_dev *pdev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
nfp_net_debugfs_vnic_add(struct nfp_net *nn, struct dentry *ddir, int id)
|
nfp_net_debugfs_vnic_add(struct nfp_net *nn, struct dentry *ddir)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3277,6 +3277,24 @@ nfp_net_features_check(struct sk_buff *skb, struct net_device *dev,
|
|||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
nfp_net_get_phys_port_name(struct net_device *netdev, char *name, size_t len)
|
||||||
|
{
|
||||||
|
struct nfp_net *nn = netdev_priv(netdev);
|
||||||
|
int n;
|
||||||
|
|
||||||
|
if (nn->port)
|
||||||
|
return nfp_port_get_phys_port_name(netdev, name, len);
|
||||||
|
|
||||||
|
if (!nn->dp.is_vf) {
|
||||||
|
n = snprintf(name, len, "%d", nn->id);
|
||||||
|
if (n >= len)
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nfp_net_set_vxlan_port() - set vxlan port in SW and reconfigure HW
|
* nfp_net_set_vxlan_port() - set vxlan port in SW and reconfigure HW
|
||||||
* @nn: NFP Net device to reconfigure
|
* @nn: NFP Net device to reconfigure
|
||||||
@ -3475,7 +3493,7 @@ const struct net_device_ops nfp_net_netdev_ops = {
|
|||||||
.ndo_set_mac_address = nfp_net_set_mac_address,
|
.ndo_set_mac_address = nfp_net_set_mac_address,
|
||||||
.ndo_set_features = nfp_net_set_features,
|
.ndo_set_features = nfp_net_set_features,
|
||||||
.ndo_features_check = nfp_net_features_check,
|
.ndo_features_check = nfp_net_features_check,
|
||||||
.ndo_get_phys_port_name = nfp_port_get_phys_port_name,
|
.ndo_get_phys_port_name = nfp_net_get_phys_port_name,
|
||||||
.ndo_udp_tunnel_add = nfp_net_add_vxlan_port,
|
.ndo_udp_tunnel_add = nfp_net_add_vxlan_port,
|
||||||
.ndo_udp_tunnel_del = nfp_net_del_vxlan_port,
|
.ndo_udp_tunnel_del = nfp_net_del_vxlan_port,
|
||||||
.ndo_bpf = nfp_net_xdp,
|
.ndo_bpf = nfp_net_xdp,
|
||||||
|
@ -201,7 +201,7 @@ static const struct file_operations nfp_xdp_q_fops = {
|
|||||||
.llseek = seq_lseek
|
.llseek = seq_lseek
|
||||||
};
|
};
|
||||||
|
|
||||||
void nfp_net_debugfs_vnic_add(struct nfp_net *nn, struct dentry *ddir, int id)
|
void nfp_net_debugfs_vnic_add(struct nfp_net *nn, struct dentry *ddir)
|
||||||
{
|
{
|
||||||
struct dentry *queues, *tx, *rx, *xdp;
|
struct dentry *queues, *tx, *rx, *xdp;
|
||||||
char name[20];
|
char name[20];
|
||||||
@ -211,7 +211,7 @@ void nfp_net_debugfs_vnic_add(struct nfp_net *nn, struct dentry *ddir, int id)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (nfp_net_is_data_vnic(nn))
|
if (nfp_net_is_data_vnic(nn))
|
||||||
sprintf(name, "vnic%d", id);
|
sprintf(name, "vnic%d", nn->id);
|
||||||
else
|
else
|
||||||
strcpy(name, "ctrl-vnic");
|
strcpy(name, "ctrl-vnic");
|
||||||
nn->debugfs_dir = debugfs_create_dir(name, ddir);
|
nn->debugfs_dir = debugfs_create_dir(name, ddir);
|
||||||
|
@ -178,11 +178,13 @@ nfp_net_pf_init_vnic(struct nfp_pf *pf, struct nfp_net *nn, unsigned int id)
|
|||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
nn->id = id;
|
||||||
|
|
||||||
err = nfp_net_init(nn);
|
err = nfp_net_init(nn);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
nfp_net_debugfs_vnic_add(nn, pf->ddir, id);
|
nfp_net_debugfs_vnic_add(nn, pf->ddir);
|
||||||
|
|
||||||
if (nn->port) {
|
if (nn->port) {
|
||||||
err = nfp_devlink_port_register(pf->app, nn->port);
|
err = nfp_devlink_port_register(pf->app, nn->port);
|
||||||
|
@ -283,7 +283,7 @@ static int nfp_netvf_pci_probe(struct pci_dev *pdev,
|
|||||||
|
|
||||||
nfp_net_info(nn);
|
nfp_net_info(nn);
|
||||||
vf->ddir = nfp_net_debugfs_device_add(pdev);
|
vf->ddir = nfp_net_debugfs_device_add(pdev);
|
||||||
nfp_net_debugfs_vnic_add(nn, vf->ddir, 0);
|
nfp_net_debugfs_vnic_add(nn, vf->ddir);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user