Commit e38f5d11 authored by Jakub Kicinski's avatar Jakub Kicinski Committed by David S. Miller

nfp: pass ctrl_bar pointer to nfp_net_alloc

Move setting ctrl_bar pointer to the nfp_net_alloc function,
to make sure we can parse capabilities early in the following
patch.
Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: default avatarJohn Hurley <john.hurley@netronome.com>
Reviewed-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 47330f9b
...@@ -851,7 +851,7 @@ void nfp_net_get_fw_version(struct nfp_net_fw_version *fw_ver, ...@@ -851,7 +851,7 @@ void nfp_net_get_fw_version(struct nfp_net_fw_version *fw_ver,
void __iomem *ctrl_bar); void __iomem *ctrl_bar);
struct nfp_net * struct nfp_net *
nfp_net_alloc(struct pci_dev *pdev, bool needs_netdev, nfp_net_alloc(struct pci_dev *pdev, void __iomem *ctrl_bar, bool needs_netdev,
unsigned int max_tx_rings, unsigned int max_rx_rings); unsigned int max_tx_rings, unsigned int max_rx_rings);
void nfp_net_free(struct nfp_net *nn); void nfp_net_free(struct nfp_net *nn);
......
...@@ -3560,6 +3560,7 @@ void nfp_net_info(struct nfp_net *nn) ...@@ -3560,6 +3560,7 @@ void nfp_net_info(struct nfp_net *nn)
/** /**
* nfp_net_alloc() - Allocate netdev and related structure * nfp_net_alloc() - Allocate netdev and related structure
* @pdev: PCI device * @pdev: PCI device
* @ctrl_bar: PCI IOMEM with vNIC config memory
* @needs_netdev: Whether to allocate a netdev for this vNIC * @needs_netdev: Whether to allocate a netdev for this vNIC
* @max_tx_rings: Maximum number of TX rings supported by device * @max_tx_rings: Maximum number of TX rings supported by device
* @max_rx_rings: Maximum number of RX rings supported by device * @max_rx_rings: Maximum number of RX rings supported by device
...@@ -3570,9 +3571,9 @@ void nfp_net_info(struct nfp_net *nn) ...@@ -3570,9 +3571,9 @@ void nfp_net_info(struct nfp_net *nn)
* *
* Return: NFP Net device structure, or ERR_PTR on error. * Return: NFP Net device structure, or ERR_PTR on error.
*/ */
struct nfp_net *nfp_net_alloc(struct pci_dev *pdev, bool needs_netdev, struct nfp_net *
unsigned int max_tx_rings, nfp_net_alloc(struct pci_dev *pdev, void __iomem *ctrl_bar, bool needs_netdev,
unsigned int max_rx_rings) unsigned int max_tx_rings, unsigned int max_rx_rings)
{ {
struct nfp_net *nn; struct nfp_net *nn;
...@@ -3594,6 +3595,7 @@ struct nfp_net *nfp_net_alloc(struct pci_dev *pdev, bool needs_netdev, ...@@ -3594,6 +3595,7 @@ struct nfp_net *nfp_net_alloc(struct pci_dev *pdev, bool needs_netdev,
} }
nn->dp.dev = &pdev->dev; nn->dp.dev = &pdev->dev;
nn->dp.ctrl_bar = ctrl_bar;
nn->pdev = pdev; nn->pdev = pdev;
nn->max_tx_rings = max_tx_rings; nn->max_tx_rings = max_tx_rings;
......
...@@ -116,13 +116,13 @@ nfp_net_pf_alloc_vnic(struct nfp_pf *pf, bool needs_netdev, ...@@ -116,13 +116,13 @@ nfp_net_pf_alloc_vnic(struct nfp_pf *pf, bool needs_netdev,
n_rx_rings = readl(ctrl_bar + NFP_NET_CFG_MAX_RXRINGS); n_rx_rings = readl(ctrl_bar + NFP_NET_CFG_MAX_RXRINGS);
/* Allocate and initialise the vNIC */ /* Allocate and initialise the vNIC */
nn = nfp_net_alloc(pf->pdev, needs_netdev, n_tx_rings, n_rx_rings); nn = nfp_net_alloc(pf->pdev, ctrl_bar, needs_netdev,
n_tx_rings, n_rx_rings);
if (IS_ERR(nn)) if (IS_ERR(nn))
return nn; return nn;
nn->app = pf->app; nn->app = pf->app;
nfp_net_get_fw_version(&nn->fw_ver, ctrl_bar); nfp_net_get_fw_version(&nn->fw_ver, ctrl_bar);
nn->dp.ctrl_bar = ctrl_bar;
nn->tx_bar = qc_bar + tx_base * NFP_QCP_QUEUE_ADDR_SZ; nn->tx_bar = qc_bar + tx_base * NFP_QCP_QUEUE_ADDR_SZ;
nn->rx_bar = qc_bar + rx_base * NFP_QCP_QUEUE_ADDR_SZ; nn->rx_bar = qc_bar + rx_base * NFP_QCP_QUEUE_ADDR_SZ;
nn->dp.is_vf = 0; nn->dp.is_vf = 0;
......
...@@ -172,7 +172,7 @@ static int nfp_netvf_pci_probe(struct pci_dev *pdev, ...@@ -172,7 +172,7 @@ static int nfp_netvf_pci_probe(struct pci_dev *pdev,
rx_bar_off = NFP_PCIE_QUEUE(startq); rx_bar_off = NFP_PCIE_QUEUE(startq);
/* Allocate and initialise the netdev */ /* Allocate and initialise the netdev */
nn = nfp_net_alloc(pdev, true, max_tx_rings, max_rx_rings); nn = nfp_net_alloc(pdev, ctrl_bar, true, max_tx_rings, max_rx_rings);
if (IS_ERR(nn)) { if (IS_ERR(nn)) {
err = PTR_ERR(nn); err = PTR_ERR(nn);
goto err_ctrl_unmap; goto err_ctrl_unmap;
...@@ -180,7 +180,6 @@ static int nfp_netvf_pci_probe(struct pci_dev *pdev, ...@@ -180,7 +180,6 @@ static int nfp_netvf_pci_probe(struct pci_dev *pdev,
vf->nn = nn; vf->nn = nn;
nn->fw_ver = fw_ver; nn->fw_ver = fw_ver;
nn->dp.ctrl_bar = ctrl_bar;
nn->dp.is_vf = 1; nn->dp.is_vf = 1;
nn->stride_tx = stride; nn->stride_tx = stride;
nn->stride_rx = stride; nn->stride_rx = stride;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment