Skip to content

Commit 0be40e6

Browse files
Jakub Kicinskidavem330
authored andcommitted
nfp: keep MIP object around
Microcode Information Page contains some useful information, like application firmware build name. Keep it around, similar to RTSym and HWInfo. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 9baa488 commit 0be40e6

File tree

4 files changed

+22
-4
lines changed

4 files changed

+22
-4
lines changed

drivers/net/ethernet/netronome/nfp/nfp_main.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,8 @@ static int nfp_pci_probe(struct pci_dev *pdev,
375375
if (err)
376376
goto err_devlink_unreg;
377377

378-
pf->rtbl = nfp_rtsym_table_read(pf->cpp);
378+
pf->mip = nfp_mip_open(pf->cpp);
379+
pf->rtbl = __nfp_rtsym_table_read(pf->cpp, pf->mip);
379380

380381
err = nfp_pcie_sriov_read_nfd_limit(pf);
381382
if (err)
@@ -399,6 +400,7 @@ static int nfp_pci_probe(struct pci_dev *pdev,
399400
pci_sriov_set_totalvfs(pf->pdev, 0);
400401
err_fw_unload:
401402
kfree(pf->rtbl);
403+
nfp_mip_close(pf->mip);
402404
if (pf->fw_loaded)
403405
nfp_fw_unload(pf);
404406
kfree(pf->eth_tbl);
@@ -437,6 +439,7 @@ static void nfp_pci_remove(struct pci_dev *pdev)
437439
devlink_unregister(devlink);
438440

439441
kfree(pf->rtbl);
442+
nfp_mip_close(pf->mip);
440443
if (pf->fw_loaded)
441444
nfp_fw_unload(pf);
442445

drivers/net/ethernet/netronome/nfp/nfp_main.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ struct nfp_cpp;
5555
struct nfp_cpp_area;
5656
struct nfp_eth_table;
5757
struct nfp_hwinfo;
58+
struct nfp_mip;
5859
struct nfp_net;
5960
struct nfp_nsp_identify;
6061
struct nfp_rtsym_table;
@@ -72,6 +73,7 @@ struct nfp_rtsym_table;
7273
* @num_vfs: Number of SR-IOV VFs enabled
7374
* @fw_loaded: Is the firmware loaded?
7475
* @ctrl_vnic: Pointer to the control vNIC if available
76+
* @mip: MIP handle
7577
* @rtbl: RTsym table
7678
* @hwinfo: HWInfo table
7779
* @eth_tbl: NSP ETH table
@@ -105,6 +107,7 @@ struct nfp_pf {
105107

106108
struct nfp_net *ctrl_vnic;
107109

110+
const struct nfp_mip *mip;
108111
struct nfp_rtsym_table *rtbl;
109112
struct nfp_hwinfo *hwinfo;
110113
struct nfp_eth_table *eth_tbl;

drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nffw.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ struct nfp_rtsym {
9090
struct nfp_rtsym_table;
9191

9292
struct nfp_rtsym_table *nfp_rtsym_table_read(struct nfp_cpp *cpp);
93+
struct nfp_rtsym_table *
94+
__nfp_rtsym_table_read(struct nfp_cpp *cpp, const struct nfp_mip *mip);
9395
int nfp_rtsym_count(struct nfp_rtsym_table *rtbl);
9496
const struct nfp_rtsym *nfp_rtsym_get(struct nfp_rtsym_table *rtbl, int idx);
9597
const struct nfp_rtsym *

drivers/net/ethernet/netronome/nfp/nfpcore/nfp_rtsym.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,22 +108,32 @@ nfp_rtsym_sw_entry_init(struct nfp_rtsym_table *cache, u32 strtab_size,
108108
}
109109

110110
struct nfp_rtsym_table *nfp_rtsym_table_read(struct nfp_cpp *cpp)
111+
{
112+
struct nfp_rtsym_table *rtbl;
113+
const struct nfp_mip *mip;
114+
115+
mip = nfp_mip_open(cpp);
116+
rtbl = __nfp_rtsym_table_read(cpp, mip);
117+
nfp_mip_close(mip);
118+
119+
return rtbl;
120+
}
121+
122+
struct nfp_rtsym_table *
123+
__nfp_rtsym_table_read(struct nfp_cpp *cpp, const struct nfp_mip *mip)
111124
{
112125
const u32 dram = NFP_CPP_ID(NFP_CPP_TARGET_MU, NFP_CPP_ACTION_RW, 0) |
113126
NFP_ISL_EMEM0;
114127
u32 strtab_addr, symtab_addr, strtab_size, symtab_size;
115128
struct nfp_rtsym_entry *rtsymtab;
116129
struct nfp_rtsym_table *cache;
117-
const struct nfp_mip *mip;
118130
int err, n, size;
119131

120-
mip = nfp_mip_open(cpp);
121132
if (!mip)
122133
return NULL;
123134

124135
nfp_mip_strtab(mip, &strtab_addr, &strtab_size);
125136
nfp_mip_symtab(mip, &symtab_addr, &symtab_size);
126-
nfp_mip_close(mip);
127137

128138
if (!symtab_size || !strtab_size || symtab_size % sizeof(*rtsymtab))
129139
return NULL;

0 commit comments

Comments
 (0)