Commit 73997348 authored by John Hurley's avatar John Hurley Committed by David S. Miller

nfp: flower: read extra feature support from fw

Extract the _abi_flower_extra_features symbol from the fw which gives a 64
bit bitmap of new features (on top of the flower base support) that the fw
can offload. Store this bitmap in the priv data associated with each app.
If the symbol does not exist, set the bitmap to 0.
Signed-off-by: default avatarJohn Hurley <john.hurley@netronome.com>
Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarSimon Horman <simon.horman@netronome.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 574f1e9c
...@@ -381,7 +381,7 @@ static int nfp_flower_init(struct nfp_app *app) ...@@ -381,7 +381,7 @@ static int nfp_flower_init(struct nfp_app *app)
{ {
const struct nfp_pf *pf = app->pf; const struct nfp_pf *pf = app->pf;
struct nfp_flower_priv *app_priv; struct nfp_flower_priv *app_priv;
u64 version; u64 version, features;
int err; int err;
if (!pf->eth_tbl) { if (!pf->eth_tbl) {
...@@ -424,6 +424,14 @@ static int nfp_flower_init(struct nfp_app *app) ...@@ -424,6 +424,14 @@ static int nfp_flower_init(struct nfp_app *app)
if (err) if (err)
goto err_free_app_priv; goto err_free_app_priv;
/* Extract the extra features supported by the firmware. */
features = nfp_rtsym_read_le(app->pf->rtbl,
"_abi_flower_extra_features", &err);
if (err)
app_priv->flower_ext_feats = 0;
else
app_priv->flower_ext_feats = features;
return 0; return 0;
err_free_app_priv: err_free_app_priv:
......
...@@ -77,6 +77,7 @@ struct nfp_fl_stats_id { ...@@ -77,6 +77,7 @@ struct nfp_fl_stats_id {
* @nn: Pointer to vNIC * @nn: Pointer to vNIC
* @mask_id_seed: Seed used for mask hash table * @mask_id_seed: Seed used for mask hash table
* @flower_version: HW version of flower * @flower_version: HW version of flower
* @flower_ext_feats: Bitmap of extra features the HW supports
* @stats_ids: List of free stats ids * @stats_ids: List of free stats ids
* @mask_ids: List of free mask ids * @mask_ids: List of free mask ids
* @mask_table: Hash table used to store masks * @mask_table: Hash table used to store masks
...@@ -101,6 +102,7 @@ struct nfp_flower_priv { ...@@ -101,6 +102,7 @@ struct nfp_flower_priv {
struct nfp_net *nn; struct nfp_net *nn;
u32 mask_id_seed; u32 mask_id_seed;
u64 flower_version; u64 flower_version;
u64 flower_ext_feats;
struct nfp_fl_stats_id stats_ids; struct nfp_fl_stats_id stats_ids;
struct nfp_fl_mask_id mask_ids; struct nfp_fl_mask_id mask_ids;
DECLARE_HASHTABLE(mask_table, NFP_FLOWER_MASK_HASH_BITS); DECLARE_HASHTABLE(mask_table, NFP_FLOWER_MASK_HASH_BITS);
......
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