ltq-vdsl-app: add error vector counters to the ubus metrics
[openwrt/staging/nbd.git] / package / network / config / ltq-vdsl-app / src / src / dsl_cpe_ubus.c
index ab18c9d4d683788058d9b4c6e3613cea533c2490..707acdc60662c0560fec5d75f1dbfe3a5b6334c6 100644 (file)
@@ -502,6 +502,18 @@ static void get_vector_status(int fd, vector_t *status) {
 #endif
 }
 
+static void vector_erb(int fd) {
+#ifdef INCLUDE_DSL_CPE_API_VRX
+       if (fd < 0)
+               return;
+
+       IOCTL(IOCTL_MEI_dsmStatistics_t, FIO_MEI_DSM_STATISTICS_GET);
+
+       m_u32("sent", out.n_processed);
+       m_u32("discarded", out.n_fw_dropped_size + out.n_mei_dropped_size + out.n_mei_dropped_no_pp_cb + out.n_pp_dropped);
+#endif
+}
+
 static void band_plan_status(int fd, profile_t *profile) {
 #if (INCLUDE_DSL_CPE_API_VDSL_SUPPORT == 1)
        IOCTL(DSL_BandPlanStatus_t, DSL_FIO_BAND_PLAN_STATUS_GET)
@@ -803,6 +815,17 @@ static int metrics(struct ubus_context *ctx, struct ubus_object *obj,
        blobmsg_close_table(&b, c2);
        blobmsg_close_table(&b, c);
 
+       switch (vector) {
+       case VECTOR_ON_DS:
+       case VECTOR_ON_DS_US:
+               c = blobmsg_open_table(&b, "erb");
+               vector_erb(fd_mei);
+               blobmsg_close_table(&b, c);
+               break;
+       default:
+               break;
+       };
+
        ubus_send_reply(ctx, req, b.head);
 
        if (fd_mei >= 0)