Skip to content

ltq-vdsl-app: add error vector counters to the ubus metrics #4633

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package/network/config/ltq-vdsl-app/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=ltq-vdsl-app
PKG_VERSION:=4.17.18.6
PKG_RELEASE:=9
PKG_RELEASE:=$(AUTORELEASE)
PKG_BASE_NAME:=dsl_cpe_control
PKG_SOURCE:=$(PKG_BASE_NAME)_vrx-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@OPENWRT
Expand Down
63 changes: 45 additions & 18 deletions package/network/config/ltq-vdsl-app/src/src/dsl_cpe_ubus.c
Original file line number Diff line number Diff line change
Expand Up @@ -477,32 +477,40 @@ static void g997_xtu_system_enabling(int fd, standard_t *standard) {
m_str("standard", str);
}

static vector_t get_vector_status() {
static void get_vector_status(int fd, vector_t *status) {
*status = VECTOR_UNKNOWN;

#ifdef INCLUDE_DSL_CPE_API_VRX
int fd = open(DSL_CPE_DSL_LOW_DEV "/0", O_RDWR, 0644);
if (fd < 0)
return VECTOR_UNKNOWN;

IOCTL_MEI_dsmStatus_t out;
memset(&out, 0, sizeof(IOCTL_MEI_dsmStatus_t));
int ret = ioctl(fd, FIO_MEI_DSM_STATUS_GET, &out);
close(fd);
return;

if (ret)
return VECTOR_UNKNOWN;
IOCTL(IOCTL_MEI_dsmStatus_t, FIO_MEI_DSM_STATUS_GET);

switch (out.eVectorStatus) {
case e_MEI_VECTOR_STAT_OFF:
return VECTOR_OFF;
*status = VECTOR_OFF;
break;
case e_MEI_VECTOR_STAT_ON_DS:
return VECTOR_ON_DS;
*status = VECTOR_ON_DS;
break;
case e_MEI_VECTOR_STAT_ON_DS_US:
return VECTOR_ON_DS_US;
*status = VECTOR_ON_DS_US;
break;
default:
return VECTOR_UNKNOWN;
break;
};
#else
return VECTOR_UNKNOWN;
#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
}

Expand Down Expand Up @@ -720,7 +728,7 @@ static int metrics(struct ubus_context *ctx, struct ubus_object *obj,
struct ubus_request_data *req, const char *method,
struct blob_attr *msg)
{
int fd;
int fd, fd_mei;
void *c, *c2;
standard_t standard = STD_UNKNOWN;
profile_t profile = PROFILE_UNKNOWN;
Expand All @@ -734,6 +742,12 @@ static int metrics(struct ubus_context *ctx, struct ubus_object *obj,
if (fd < 0)
return UBUS_STATUS_UNKNOWN_ERROR;

#ifdef INCLUDE_DSL_CPE_API_VRX
fd_mei = open(DSL_CPE_DSL_LOW_DEV "/0", O_RDWR, 0644);
#else
fd_mei = -1;
#endif

blob_buf_init(&b, 0);

version_information(fd);
Expand All @@ -749,7 +763,7 @@ static int metrics(struct ubus_context *ctx, struct ubus_object *obj,

if (standard == STD_G_993_2) {
band_plan_status(fd, &profile);
vector = get_vector_status();
get_vector_status(fd_mei, &vector);
}

describe_mode(standard, profile, vector);
Expand Down Expand Up @@ -801,8 +815,21 @@ 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)
close(fd_mei);
close(fd);

return 0;
Expand Down