From: Harish Patil <harish.pa...@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

Reply via email to