aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Kicinski <[email protected]>2017-02-19 11:58:10 -0800
committerDavid S. Miller <[email protected]>2017-02-20 11:18:49 -0500
commit368b1d1c49f651ba513090623f2891a695fe9fbb (patch)
treee1d166885cac5b5eabb236b2d2d08906a3f1bb42
parent64db09ed1fc2c4491cca4219850fab4d0460c952 (diff)
nfp: store NSP ABI version in state structure
We read the status register on each NSP open, we can store the NSP ABI version in the state structure so that we don't have to read it again. Signed-off-by: Jakub Kicinski <[email protected]> Signed-off-by: David S. Miller <[email protected]>
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c
index f07f2fc3fba0..f2d737c3d1df 100644
--- a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c
+++ b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c
@@ -99,6 +99,10 @@ enum nfp_nsp_cmd {
struct nfp_nsp {
struct nfp_cpp *cpp;
struct nfp_resource *res;
+ struct {
+ u16 major;
+ u16 minor;
+ } ver;
};
static int nfp_nsp_check(struct nfp_nsp *state)
@@ -120,11 +124,12 @@ static int nfp_nsp_check(struct nfp_nsp *state)
return -ENODEV;
}
- if (FIELD_GET(NSP_STATUS_MAJOR, reg) != NSP_MAJOR ||
- FIELD_GET(NSP_STATUS_MINOR, reg) < NSP_MINOR) {
- nfp_err(cpp, "Unsupported ABI %lld.%lld\n",
- FIELD_GET(NSP_STATUS_MAJOR, reg),
- FIELD_GET(NSP_STATUS_MINOR, reg));
+ state->ver.major = FIELD_GET(NSP_STATUS_MAJOR, reg);
+ state->ver.minor = FIELD_GET(NSP_STATUS_MINOR, reg);
+
+ if (state->ver.major != NSP_MAJOR || state->ver.minor < NSP_MINOR) {
+ nfp_err(cpp, "Unsupported ABI %hu.%hu\n",
+ state->ver.major, state->ver.minor);
return -EINVAL;
}
@@ -301,15 +306,9 @@ static int nfp_nsp_command_buf(struct nfp_nsp *nsp, u16 code, u32 option,
int ret, err;
u32 cpp_id;
- err = nfp_cpp_readq(cpp, nfp_resource_cpp_id(nsp->res),
- nfp_resource_address(nsp->res) + NSP_STATUS, &reg);
- if (err < 0)
- return err;
-
- if (FIELD_GET(NSP_STATUS_MINOR, reg) < 13) {
- nfp_err(cpp, "NSP: Code 0x%04x with buffer not supported (ABI %lld.%lld)\n",
- code, FIELD_GET(NSP_STATUS_MAJOR, reg),
- FIELD_GET(NSP_STATUS_MINOR, reg));
+ if (nsp->ver.minor < 13) {
+ nfp_err(cpp, "NSP: Code 0x%04x with buffer not supported (ABI %hu.%hu)\n",
+ code, nsp->ver.major, nsp->ver.minor);
return -EOPNOTSUPP;
}