net/qede: allow firmware to query LAN stats
authorHarish Patil <harish.patil@qlogic.com>
Sat, 7 May 2016 04:21:31 +0000 (21:21 -0700)
committerBruce Richardson <bruce.richardson@intel.com>
Wed, 15 Jun 2016 15:13:55 +0000 (17:13 +0200)
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 <harish.patil@qlogic.com>
drivers/net/qede/base/bcm_osal.c
drivers/net/qede/base/bcm_osal.h

index ae5a8bc..16029b5 100644 (file)
@@ -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);
+       }
+}
index 47d056e..3e2aeb0 100644 (file)
@@ -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 */