mirror of
https://github.com/torvalds/linux.git
synced 2024-12-15 07:33:56 +00: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
|
||||
* @dp: Datapath structure
|
||||
* @id: vNIC id within the PF (0 for VFs)
|
||||
* @fw_ver: Firmware version
|
||||
* @cap: Capabilities 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;
|
||||
|
||||
u32 id;
|
||||
|
||||
u32 cap;
|
||||
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_destroy(void);
|
||||
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);
|
||||
#else
|
||||
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
|
||||
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;
|
||||
}
|
||||
|
||||
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
|
||||
* @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_features = nfp_net_set_features,
|
||||
.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_del = nfp_net_del_vxlan_port,
|
||||
.ndo_bpf = nfp_net_xdp,
|
||||
|
@ -201,7 +201,7 @@ static const struct file_operations nfp_xdp_q_fops = {
|
||||
.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;
|
||||
char name[20];
|
||||
@ -211,7 +211,7 @@ void nfp_net_debugfs_vnic_add(struct nfp_net *nn, struct dentry *ddir, int id)
|
||||
return;
|
||||
|
||||
if (nfp_net_is_data_vnic(nn))
|
||||
sprintf(name, "vnic%d", id);
|
||||
sprintf(name, "vnic%d", nn->id);
|
||||
else
|
||||
strcpy(name, "ctrl-vnic");
|
||||
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;
|
||||
|
||||
nn->id = id;
|
||||
|
||||
err = nfp_net_init(nn);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
nfp_net_debugfs_vnic_add(nn, pf->ddir, id);
|
||||
nfp_net_debugfs_vnic_add(nn, pf->ddir);
|
||||
|
||||
if (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);
|
||||
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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user