0001
0002
0003
0004 #include "nfpcore/nfp_cpp.h"
0005 #include "nfpcore/nfp_nsp.h"
0006 #include "nfp_app.h"
0007 #include "nfp_main.h"
0008 #include "nfp_net.h"
0009 #include "nfp_port.h"
0010
0011 int nfp_app_nic_vnic_init_phy_port(struct nfp_pf *pf, struct nfp_app *app,
0012 struct nfp_net *nn, unsigned int id)
0013 {
0014 int err;
0015
0016 if (!pf->eth_tbl)
0017 return 0;
0018
0019 nn->port = nfp_port_alloc(app, NFP_PORT_PHYS_PORT, nn->dp.netdev);
0020 if (IS_ERR(nn->port))
0021 return PTR_ERR(nn->port);
0022
0023 err = nfp_port_init_phy_port(pf, app, nn->port, id);
0024 if (err) {
0025 nfp_port_free(nn->port);
0026 return err;
0027 }
0028
0029 return nn->port->type == NFP_PORT_INVALID;
0030 }
0031
0032 int nfp_app_nic_vnic_alloc(struct nfp_app *app, struct nfp_net *nn,
0033 unsigned int id)
0034 {
0035 int err;
0036
0037 err = nfp_app_nic_vnic_init_phy_port(app->pf, app, nn, id);
0038 if (err)
0039 return err < 0 ? err : 0;
0040
0041 nfp_net_get_mac_addr(app->pf, nn->dp.netdev, nn->port);
0042
0043 return 0;
0044 }