diff options
author | Jakub Kicinski <jakub.kicinski@netronome.com> | 2018-01-18 05:51:02 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-01-19 23:44:18 +0300 |
commit | ce991ab6662a1d11923ba17d482a77686f2a4b74 (patch) | |
tree | 0fd361451e1c1aeee0d074cc223d9eea430db794 /drivers/net/ethernet/netronome/nfp/nfp_net_ctrl.c | |
parent | 73a0329b057e9a7ac3e6eead208e7de056d13c9a (diff) | |
download | linux-ce991ab6662a1d11923ba17d482a77686f2a4b74.tar.xz |
nfp: read ME frequency from vNIC ctrl memory
PCIe island clock frequency is used when converting coalescing
parameters from usecs to NFP timestamps. Most chips don't run
at 1200MHz, allow FW to provide us with the real frequency.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/netronome/nfp/nfp_net_ctrl.c')
-rw-r--r-- | drivers/net/ethernet/netronome/nfp/nfp_net_ctrl.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_ctrl.c b/drivers/net/ethernet/netronome/nfp/nfp_net_ctrl.c index ff155242a665..72da1b352418 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_ctrl.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_ctrl.c @@ -42,6 +42,7 @@ static void nfp_net_tlv_caps_reset(struct nfp_net_tlv_caps *caps) { memset(caps, 0, sizeof(*caps)); + caps->me_freq_mhz = 1200; } int nfp_net_tlv_caps_parse(struct device *dev, u8 __iomem *ctrl_mem, @@ -91,6 +92,16 @@ int nfp_net_tlv_caps_parse(struct device *dev, u8 __iomem *ctrl_mem, dev_err(dev, "END TLV should be empty, has len:%d\n", length); return -EINVAL; + case NFP_NET_CFG_TLV_TYPE_ME_FREQ: + if (length != 4) { + dev_err(dev, + "ME FREQ TLV should be 4B, is %dB\n", + length); + return -EINVAL; + } + + caps->me_freq_mhz = readl(data); + break; default: if (!FIELD_GET(NFP_NET_CFG_TLV_HEADER_REQUIRED, hdr)) break; |