Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 /* Copyright (C) 2017-2018 Netronome Systems, Inc. */
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 }