[dpdk-dev] [PATCH 2/2] qede: return LAN stats to MFW

Rasesh Mody rasesh.mody at qlogic.com
Sat May 7 06:21:31 CEST 2016


From: Harish Patil <harish.patil at qlogic.com>

Under certain scenarios, MFW periodically polls the driver
for LAN statistics. This patch implements the osal hook to
fill in the stats.

Fixes: ffa002d318d36 ("qede: add base driver")

Signed-off-by: Harish Patil <harish.patil at qlogic.com>
---
 drivers/net/qede/base/bcm_osal.c |   21 +++++++++++++++++++++
 drivers/net/qede/base/bcm_osal.h |    9 ++++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/drivers/net/qede/base/bcm_osal.c b/drivers/net/qede/base/bcm_osal.c
index 9540c4b..8a62056 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 47d056e..3e2aeb0 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 */
-- 
1.7.10.3



More information about the dev mailing list