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

nfp: default to chained metadata prepend format

ABI 4.x introduced the chained metadata format and made it the
only one possible.  There are cases, however, where the old
format is preferred - mostly to make interoperation with VFs
using ABI 3.x easier for the datapath.  In ABI 5.x we allowed
for more flexibility by selecting the metadata format based
on capabilities.  The default was left to non-chained.

In case of fallback traffic, there is no capability telling the
driver there may be chained metadata.  With a very stripped-
-down FW the default old metadata format would be selected
making the driver drop all fallback traffic.

This patch changes the default selection in the driver. It
should not hurt with old firmwares, because if they don't
advertise RSS they will not produce metadata anyway.  New
firmwares advertising ABI 5.x, however, can depend on the
driver defaulting to chained format.

Fixes: f9380629 ("nfp: advertise support for NFD ABI 0.5")
Suggested-by: default avatarMichael Rapson <michael.rapson@netronome.com>
Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent cb2cda48
...@@ -3719,10 +3719,17 @@ int nfp_net_init(struct nfp_net *nn) ...@@ -3719,10 +3719,17 @@ int nfp_net_init(struct nfp_net *nn)
nn->cap = nn_readl(nn, NFP_NET_CFG_CAP); nn->cap = nn_readl(nn, NFP_NET_CFG_CAP);
nn->max_mtu = nn_readl(nn, NFP_NET_CFG_MAX_MTU); nn->max_mtu = nn_readl(nn, NFP_NET_CFG_MAX_MTU);
/* Chained metadata is signalled by capabilities except in version 4 */ /* ABI 4.x and ctrl vNIC always use chained metadata, in other cases
* we allow use of non-chained metadata if RSS(v1) is the only
* advertised capability requiring metadata.
*/
nn->dp.chained_metadata_format = nn->fw_ver.major == 4 || nn->dp.chained_metadata_format = nn->fw_ver.major == 4 ||
!nn->dp.netdev || !nn->dp.netdev ||
!(nn->cap & NFP_NET_CFG_CTRL_RSS) ||
nn->cap & NFP_NET_CFG_CTRL_CHAIN_META; nn->cap & NFP_NET_CFG_CTRL_CHAIN_META;
/* RSS(v1) uses non-chained metadata format, except in ABI 4.x where
* it has the same meaning as RSSv2.
*/
if (nn->dp.chained_metadata_format && nn->fw_ver.major != 4) if (nn->dp.chained_metadata_format && nn->fw_ver.major != 4)
nn->cap &= ~NFP_NET_CFG_CTRL_RSS; nn->cap &= ~NFP_NET_CFG_CTRL_RSS;
......
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