From: Harish Patil Date: Sat, 7 May 2016 04:21:31 +0000 (-0700) Subject: net/qede: allow firmware to query LAN stats X-Git-Tag: spdx-start~6558 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=8a9c69ae4a481256c16812269ecfd1e813323991;p=dpdk.git net/qede: allow firmware to query LAN stats Under certain scenarios, management firmware (MFW) periodically polls the driver for LAN statistics. This patch implements the osal hook to fill in the stats. Fixes: ec94dbc57362 ("qede: add base driver") Signed-off-by: Harish Patil --- diff --git a/drivers/net/qede/base/bcm_osal.c b/drivers/net/qede/base/bcm_osal.c index ae5a8bcec8..16029b589d 100644 --- a/drivers/net/qede/base/bcm_osal.c +++ b/drivers/net/qede/base/bcm_osal.c @@ -15,6 +15,9 @@ #include "ecore.h" #include "ecore_hw.h" #include "ecore_iov_api.h" +#include "ecore_mcp_api.h" +#include "ecore_l2_api.h" + unsigned long qede_log2_align(unsigned long n) { @@ -179,3 +182,21 @@ u32 qede_unzip_data(struct ecore_hwfn *p_hwfn, u32 input_len, return p_hwfn->stream->total_out / 4; } + +void +qede_get_mcp_proto_stats(struct ecore_dev *edev, + enum ecore_mcp_protocol_type type, + union ecore_mcp_protocol_stats *stats) +{ + struct ecore_eth_stats lan_stats; + + if (type == ECORE_MCP_LAN_STATS) { + ecore_get_vport_stats(edev, &lan_stats); + stats->lan_stats.ucast_rx_pkts = lan_stats.rx_ucast_pkts; + stats->lan_stats.ucast_tx_pkts = lan_stats.tx_ucast_pkts; + stats->lan_stats.fcs_err = -1; + } else { + DP_INFO(edev, "Statistics request type %d not supported\n", + type); + } +} diff --git a/drivers/net/qede/base/bcm_osal.h b/drivers/net/qede/base/bcm_osal.h index 47d056e41b..3e2aeb03e5 100644 --- a/drivers/net/qede/base/bcm_osal.h +++ b/drivers/net/qede/base/bcm_osal.h @@ -24,6 +24,9 @@ struct ecore_dev; struct ecore_hwfn; struct ecore_vf_acquire_sw_info; struct vf_pf_resc_request; +enum ecore_mcp_protocol_type; +union ecore_mcp_protocol_stats; + void qed_link_update(struct ecore_hwfn *hwfn); #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN @@ -390,7 +393,11 @@ u32 qede_osal_log2(u32); #define OSAL_MAX_T(type, __max1, __max2) \ ((type)(__max1) > (type)(__max2) ? (type)(__max1) : (type)(__max2)) -#define OSAL_GET_PROTOCOL_STATS(p_hwfn, type, stats) (0) +void qede_get_mcp_proto_stats(struct ecore_dev *, enum ecore_mcp_protocol_type, + union ecore_mcp_protocol_stats *); +#define OSAL_GET_PROTOCOL_STATS(dev, type, stats) \ + qede_get_mcp_proto_stats(dev, type, stats) + #define OSAL_SLOWPATH_IRQ_REQ(p_hwfn) (0) #endif /* __BCM_OSAL_H */