From 2f80014a68838442775b6a703e02ef8c29d07ab0 Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Mon, 10 Aug 2026 14:32:42 +0800 Subject: [PATCH 1/6] [Accton] sfpi: add per-port per-reason syslog rate limiting Platforms: as7535-28xb, as7926-40xfb, as7946-30xb, as7946-74xkb, as9716_32d, as9726-32d, as9736-64d, as9737-32db, as9817-64, as9817-64-nb, as9926-24d, as9926-24db. * Add log_reason enum, per-port sfp_log_mgmt state (should_log flag per reason + last-known sfp_present_rec) and helpers syslog_ctrl() / reset_log_ctrl(). * Route every port-scoped syslog(LOG_ERR, ...) through syslog_ctrl() so each (port, reason) is only logged once until state changes. * In onlp_sfpi_is_present(), re-arm the log_ctrl flags whenever the presence result changes (module insert/remove or transition to/from E_INTERNAL), so the next failure re-emits one log line. * CPLD-level syslog calls with no port context are left untouched. Signed-off-by: Eric Yang --- .../module/src/sfpi.c | 183 +++++++++++--- .../module/src/sfpi.c | 145 ++++++++--- .../module/src/sfpi.c | 139 +++++++--- .../module/src/sfpi.c | 140 ++++++++--- .../module/src/sfpi.c | 216 ++++++++++++---- .../module/src/sfpi.c | 200 +++++++++++---- .../module/src/sfpi.c | 221 +++++++++++----- .../module/src/sfpi.c | 193 ++++++++++---- .../module/src/sfpi.c | 171 ++++++++++--- .../x86_64_accton_as9817_64/module/src/sfpi.c | 186 +++++++++++--- .../module/src/sfpi.c | 238 +++++++++++++----- .../module/src/sfpi.c | 195 ++++++++++---- 12 files changed, 1706 insertions(+), 521 deletions(-) mode change 100755 => 100644 packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c diff --git a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c index fdd48a5be..481b6748f 100644 --- a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c @@ -91,6 +91,7 @@ #define QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX 0x82 #define NUM_OF_SFP_PORT 28 +#define MAX_PORT (NUM_OF_SFP_PORT - 1) static const int port_bus_index[NUM_OF_SFP_PORT] = { 23, 21, 24, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, @@ -99,6 +100,73 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define PORT_BUS_INDEX(port) (port_bus_index[port]) +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + MULTIRATE_UNABLE_TO_SET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -138,10 +206,21 @@ onlp_sfpi_is_present(int port) VALIDATE(port); if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -246,12 +325,14 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d), size is different!", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -268,20 +349,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog(LOG_ERR, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog(LOG_ERR, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -336,40 +420,47 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= 0 && port <= 3) { if ((identifier = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0 ) { - syslog(LOG_ERR, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0 ) { - syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0 ) { - syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog(LOG_ERR, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } } else { @@ -380,7 +471,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { return (rv == ONLP_STATUS_E_UNSUPPORTED) ? rv : ONLP_STATUS_E_INTERNAL; @@ -391,14 +483,16 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; } } else { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -411,7 +505,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write reset status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -420,7 +515,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write LP mode status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } else { @@ -438,7 +534,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (value == 0x0) { mbit_value = RESET_RATE_SELECT_BIT(mbit_value,3); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, MULTIRATE_OFFSET, mbit_value) < 0){ - syslog(LOG_ERR, "Unable to write multirate status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], MULTIRATE_UNABLE_TO_SET_STATUS, + "Unable to write multirate status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -446,7 +543,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else if(value == 0x1) { mbit_value = SET_RATE_SELECT_BIT(mbit_value,3); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, MULTIRATE_OFFSET, mbit_value) < 0){ - syslog(LOG_ERR, "Unable to write multirate status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], MULTIRATE_UNABLE_TO_SET_STATUS, + "Unable to write multirate status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -458,7 +556,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } } else { - syslog(LOG_ERR, "Unable to write multirate status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], MULTIRATE_UNABLE_TO_SET_STATUS, + "Unable to write multirate status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } @@ -486,7 +585,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -497,7 +597,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -512,40 +613,47 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 3) { if ((identifier = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog(LOG_ERR, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog(LOG_ERR, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; } @@ -557,7 +665,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -567,7 +676,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_OK; } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } *value = (tx_dis & 0xf); @@ -575,7 +685,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* SFP */ if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -588,7 +699,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -598,7 +710,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read LP mode status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c index 291e75f18..28097afea 100644 --- a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c @@ -108,6 +108,72 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { /* OSFP IDENTIFIER Specific*/ #define QSFP_DD_IDENTIFIER 0x18 +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -165,10 +231,21 @@ onlp_sfpi_is_present(int port) } if (onlp_file_read_int(&present, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -214,12 +291,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) } if (onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog(LOG_ERR, "Invalid file size(%d)", size); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Invalid file size(%d)", size); return ONLP_STATUS_E_INTERNAL; } @@ -276,7 +353,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -286,14 +363,14 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else{ identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -302,29 +379,29 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -335,7 +412,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -348,7 +425,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0 ){ - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -384,7 +461,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to reset port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, "Unable to reset port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -400,14 +477,14 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -417,7 +494,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -429,7 +506,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -441,7 +518,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value)< 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -484,7 +561,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -505,7 +582,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -515,14 +592,14 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -531,11 +608,11 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } @@ -544,17 +621,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; goto restore; @@ -562,7 +639,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -575,7 +652,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0){ - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -612,7 +689,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -627,7 +704,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -635,7 +712,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4):Low power requset sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog(LOG_ERR, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -647,7 +724,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog(LOG_ERR, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c index cd86f89a4..05511dda4 100644 --- a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c @@ -30,6 +30,7 @@ #include #define NUM_OF_SFP_PORT 30 +#define MAX_PORT (NUM_OF_SFP_PORT - 1) /* QSFP device address of eeprom */ #define PORT_EEPROM_DEVADDR 0x50 @@ -89,6 +90,71 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define MODULE_TXDISABLE_MAIN_BOARD_CPLD1_FORMAT "/sys/bus/i2c/devices/12-0061/module_tx_disable_%d" #define MODULE_TXDISABLE_MAIN_BOARD_CPLD2_FORMAT "/sys/bus/i2c/devices/13-0062/module_tx_disable_%d" +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} /************************************************************ * @@ -143,10 +209,21 @@ onlp_sfpi_is_present(int port) } if (onlp_file_read_int(&present, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -200,12 +277,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) VALIDATE(port); if (onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog(LOG_ERR, "Invalid file size(%d)", size); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Invalid file size(%d)", size); return ONLP_STATUS_E_INTERNAL; } @@ -222,20 +299,20 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog(LOG_ERR, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog(LOG_ERR, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -290,40 +367,40 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if(port >= 0 && port <= 25) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog(LOG_ERR, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog(LOG_ERR, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } } else { @@ -334,7 +411,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -345,7 +422,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -354,7 +431,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { path = MODULE_TXDISABLE_MAIN_BOARD_CPLD2_FORMAT; if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to set tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to set tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -379,7 +456,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write reset status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -399,7 +476,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write LP mode status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -442,7 +519,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -457,40 +534,40 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 25) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog(LOG_ERR, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog(LOG_ERR, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; } @@ -502,7 +579,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -513,7 +590,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { *value = (tx_dis & 0xf); @@ -523,7 +600,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } else { /* SFP */ path = MODULE_TXDISABLE_MAIN_BOARD_CPLD2_FORMAT; if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -548,7 +625,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -567,7 +644,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read LP mode status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c index 1ccbdcd36..7d19a89ca 100644 --- a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c @@ -30,6 +30,7 @@ #include #define NUM_OF_SFP_PORT 74 +#define MAX_PORT (NUM_OF_SFP_PORT - 1) /* QSFP device address of eeprom */ #define PORT_EEPROM_DEVADDR 0x50 @@ -97,6 +98,72 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define MODULE_TXDISABLE_MAIN_BOARD_CPLD2_FORMAT "/sys/bus/i2c/devices/13-0062/module_tx_disable_%d" #define MODULE_TXDISABLE_MAIN_BOARD_CPLD3_FORMAT "/sys/bus/i2c/devices/16-0063/module_tx_disable_%d" +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -153,10 +220,21 @@ onlp_sfpi_is_present(int port) } if (onlp_file_read_int(&present, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -213,12 +291,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) VALIDATE(port); if (onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog(LOG_ERR, "Invalid file size(%d)", size); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Invalid file size(%d)", size); return ONLP_STATUS_E_INTERNAL; } @@ -235,20 +313,20 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog(LOG_ERR, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog(LOG_ERR, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -303,40 +381,40 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if(port >= 0 && port <= 9) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog(LOG_ERR, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog(LOG_ERR, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } } else { @@ -347,7 +425,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { rv = (rv == ONLP_STATUS_E_UNSUPPORTED) ? rv : ONLP_STATUS_E_INTERNAL; @@ -357,7 +435,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -378,7 +456,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to set tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to set tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -406,7 +484,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write reset status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -423,7 +501,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write LP mode status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -468,7 +546,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -483,40 +561,40 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 9) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog(LOG_ERR, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog(LOG_ERR, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; } @@ -528,7 +606,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -539,7 +617,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { *value = (tx_dis & 0xf); @@ -561,7 +639,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -589,7 +667,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -607,7 +685,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read LP mode status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; diff --git a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c old mode 100755 new mode 100644 index a617dbf5d..13d671fb1 --- a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c @@ -100,6 +100,72 @@ int sfp_map_bus[] ={25, 26, 27, 28, 29, 30, 31, 32, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58}; +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -159,18 +225,28 @@ onlp_sfpi_is_present(int port) bus = 21; } - if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)", port); + if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } int onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) { - return ONLP_STATUS_E_UNSUPPORTED; } @@ -180,7 +256,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) uint32_t bytes[5]; int i = 0; uint64_t rx_los_all = 0; - + bytes[0]=bytes[1]=bytes[2]=bytes[3]=0x0; bytes[4]=0x03; for(i = AIM_ARRAYSIZE(bytes)-1; i >= 0; i--) { @@ -211,13 +287,14 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); - if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d), size is different!", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -233,20 +310,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog(LOG_ERR, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog(LOG_ERR, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -312,7 +392,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -323,14 +404,16 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -339,30 +422,35 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", + port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Unable to write tx_disable status to port(%d): read control from eeprom fail", + port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to write tx_disable status to port(%d): write bank to eeprom fail", + port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", + port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + port); goto restore; } } else { @@ -372,7 +460,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -385,8 +474,9 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0 ){ - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -394,7 +484,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } } } - } + } else { rv = ONLP_STATUS_E_INTERNAL; } @@ -404,7 +494,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write reset status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -419,15 +510,17 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, + "Unable to write LP mode status to port(%d): read identifier from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -437,7 +530,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -451,7 +545,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -463,7 +558,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value)< 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -509,7 +605,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } else{ addr=62; - bus=21; + bus=21; } switch(control) @@ -518,7 +614,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -531,7 +628,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -548,7 +646,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -558,14 +657,16 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -574,11 +675,13 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } @@ -587,17 +690,20 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; goto restore; @@ -605,7 +711,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -618,7 +725,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0){ - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -639,7 +747,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to get reset status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to get reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -655,15 +764,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, + "Unable to read LP mode status from port(%d): read identifier from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* lpmode valid bit(bit4):Low power requset sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -675,7 +786,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c index b50d7d63b..6231f1e4e 100644 --- a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c @@ -31,6 +31,8 @@ #include "x86_64_accton_as9726_32d_int.h" #include "x86_64_accton_as9726_32d_log.h" +#define MAX_PORT 33 + #define VALIDATE(_port) \ do { \ if (_port < 0 || _port > 33) { \ @@ -96,6 +98,72 @@ int sfp_map_bus[] = {17, 18, 19, 20, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}; +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -145,8 +213,13 @@ int onlp_sfpi_is_present(int port) if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)" - , port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } else { @@ -155,12 +228,22 @@ int onlp_sfpi_is_present(int port) if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)" - , port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -279,13 +362,14 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d), size is different!", - port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -301,23 +385,23 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if (fp == NULL) { - syslog(LOG_ERR, "Unable to open the eeprom device file of port(%d)", - port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog(LOG_ERR, "Unable to set the file position indicator of port(%d)", - port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", - port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -370,40 +454,47 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if(port >= 0 && port <= 31) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog(LOG_ERR, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", - QSFP_DD_PAGE_LANE_CTRL, port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog(LOG_ERR, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } } else { @@ -414,7 +505,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -425,7 +517,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -435,8 +528,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) addr = 62; if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port + 1)) < 0) { - syslog(LOG_ERR, "Unable to set tx_disable status to port(%d)", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to set tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -454,8 +547,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port + 1)) < 0) { - syslog(LOG_ERR, "Unable to set reset status to port(%d)", - port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to set reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -469,8 +562,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port + 1)) < 0) { - syslog(LOG_ERR, "Unable to set LP mode to port(%d)", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to set LP mode to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -506,8 +599,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -521,8 +614,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -536,40 +629,47 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 31) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog(LOG_ERR, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", - QSFP_DD_PAGE_LANE_CTRL, port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog(LOG_ERR, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; } @@ -581,7 +681,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -592,7 +693,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { *value = (tx_dis & 0xf); @@ -603,8 +705,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) addr = 62; if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -622,8 +724,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port + 1)) < 0) { - syslog(LOG_ERR, "Unable to get reset status to port(%d)", - port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to get reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -637,8 +739,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port + 1)) < 0) { - syslog(LOG_ERR, "Unable to get LP mode to port(%d)", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to get LP mode from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; diff --git a/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c index 58d244918..f59b20e1c 100644 --- a/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c @@ -111,6 +111,72 @@ int sfp_map_bus[] = {17, 18, 19, 20, 21, 22, 23, 24, 49, 50}; #endif +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -158,11 +224,21 @@ int onlp_sfpi_is_present(int port) VALIDATE_PORT(port); if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)" - , port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -262,21 +338,24 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (port <= 31) { if (onlp_file_read(data, 256, &size, UDB_PORT_EEPROM_FORMAT, port) != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } else { if (onlp_file_read(data, 256, &size, LDB_PORT_EEPROM_FORMAT, port-32) != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } if (size != 256) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d), size is different!", - port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", + port); return ONLP_STATUS_E_INTERNAL; } @@ -292,23 +371,23 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if (fp == NULL) { - syslog(LOG_ERR, "Unable to open the eeprom device file of port(%d)", - port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog(LOG_ERR, "Unable to set the file position indicator of port(%d)", - port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", - port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } #endif @@ -435,8 +514,9 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port + 1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -446,14 +526,16 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { //QSFP identifier = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_eeprom_readb(port, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -462,30 +544,35 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", + port); goto restore; } if ((eeprom_control = onlp_sfpi_eeprom_readb(port, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Unable to write tx_disable status to port(%d): read control from eeprom fail", + port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to write tx_disable status to port(%d): write bank to eeprom fail", + port); goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", + port); goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + port); goto restore; } } else { @@ -495,7 +582,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -508,8 +596,9 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value & 0xf; if (onlp_sfpi_eeprom_writeb(port, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -528,8 +617,9 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port + 1)) < 0) { - syslog(LOG_ERR, "Unable to write reset status to port(%d)", - port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -542,8 +632,9 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port + 1)) < 0) { - syslog(LOG_ERR, "Unable to write LP mode status to port(%d)", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d)", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -575,8 +666,9 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -588,8 +680,9 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -604,8 +697,9 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -615,14 +709,16 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_eeprom_readb(port, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -631,11 +727,13 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_eeprom_readb(port, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } @@ -644,25 +742,29 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to read tx_disable status from port(%d): write bank to eeprom fail", + port); goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", - QSFP_DD_PAGE_LANE_CTRL, port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_eeprom_readb(port, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + port); rv = tx_dis; goto restore; } restore: if (onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -675,8 +777,9 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_TXDIS); if (tx_dis < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -696,8 +799,9 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port + 1)) < 0) { - syslog(LOG_ERR, "Unable to read reset status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -710,8 +814,9 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port + 1)) < 0) { - syslog(LOG_ERR, "Unable to read LP mode status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d)", + port); rv = ONLP_STATUS_E_INTERNAL; } else { diff --git a/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c index 7d1b07a56..b7d75efce 100644 --- a/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c @@ -101,6 +101,71 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { /*QSFP Specific*/ #define QSFP_DD_IDENTIFIER 0x18 +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} /************************************************************ * @@ -152,12 +217,21 @@ onlp_sfpi_is_present(int port) } if (onlp_file_read_int(&present, path, port) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)", - port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -175,13 +249,14 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d), size is different!", - port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -197,23 +272,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog(LOG_ERR, "Unable to open the eeprom device file of port(%d)", - port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog(LOG_ERR, "Unable to set the file position indicator of port(%d)", - port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", - port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -268,8 +343,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } @@ -277,41 +352,46 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } } else { @@ -321,7 +401,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -335,8 +416,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) <0 ){ - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -356,8 +437,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) : MODULE_RESET_CPLD3_FORMAT; if (onlp_file_write_int(value, path, port) < 0) { - syslog(LOG_ERR, "Unable to write reset status to port(%d)", - port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -370,8 +451,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) : MODULE_LPMODE_CPLD3_FORMAT; if (onlp_file_write_int(value, path, port) < 0) { - syslog(LOG_ERR, "Unable to write LP mode to port(%d)", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -401,8 +482,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) *value = 0; if (port >= 33 && port <= 34) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } @@ -414,8 +495,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -430,36 +511,37 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read support control from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Unable to read tx_disabled status from port(%d) : read support control from eeprom fail", port); rv = support_ctrls; goto restore; } @@ -468,25 +550,26 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); rv = tx_disable; goto restore; } restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -500,8 +583,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } *value = (tx_disable & 0xf); @@ -521,8 +604,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) : MODULE_RESET_CPLD3_FORMAT; if (onlp_file_read_int(value, path, port) < 0) { - syslog(LOG_ERR, "Unable to read reset status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -535,8 +618,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) : MODULE_LPMODE_CPLD3_FORMAT; if (onlp_file_read_int(value, path, port) < 0) { - syslog(LOG_ERR, "Unable to read LP mode status from port(%d)", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c index a3cfc9577..5ae7477f4 100644 --- a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c @@ -103,6 +103,72 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define PORT_BUS_INDEX(port) (port_bus_index[port-1]) +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -141,10 +207,21 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -161,12 +238,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d), size is different!", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -182,20 +260,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog(LOG_ERR, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog(LOG_ERR, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -247,14 +328,16 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } else { //QSFP identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } else { @@ -264,32 +347,38 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } } else { @@ -299,7 +388,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -313,7 +403,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case QSFP_PLUS_IDENTIFIER:{ value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) <0 ){ - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } break; @@ -332,7 +423,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_RESET_STATE: { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to write reset status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -340,7 +432,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_LP_MODE: { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to write LP mode status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -368,7 +461,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) *value = 0; if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } @@ -377,7 +471,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_FAULT: { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -388,14 +483,16 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } else { @@ -405,18 +502,21 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read control from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Unable to read tx_disabled status from port(%d) : read control from eeprom fail", port); rv = support_ctrls; goto restore; } @@ -425,22 +525,26 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); rv = tx_disable; goto restore; } restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -455,7 +559,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case QSFP_PLUS_IDENTIFIER:{ tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } *value = (tx_disable & 0xf); @@ -475,7 +580,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RESET_STATE: { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -483,7 +589,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_LP_MODE: { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read LP mode status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; diff --git a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c index b78e759d0..237c11dc0 100644 --- a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c @@ -105,6 +105,72 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define OSFP_IDENTIFIER 0x19 +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -143,10 +209,21 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -163,12 +240,14 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d), size is different!", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -184,20 +263,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog(LOG_ERR, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog(LOG_ERR, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -249,15 +331,17 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } else { //QSFP identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", + port); return ONLP_STATUS_E_INTERNAL; } else { @@ -267,33 +351,39 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", + port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } } else { @@ -303,7 +393,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -318,8 +409,9 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) <0 ){ - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + port); return ONLP_STATUS_E_INTERNAL; } break; @@ -341,7 +433,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to write reset status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -351,7 +444,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to write LP mode status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -380,7 +474,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) *value = 0; if (port >= 65 && port <= 66) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } @@ -392,7 +487,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -407,15 +503,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", + port); return ONLP_STATUS_E_INTERNAL; } else { @@ -425,20 +523,23 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read control from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Unable to read tx_disabled status from port(%d) : read control from eeprom fail", + port); rv = support_ctrls; goto restore; } @@ -447,25 +548,29 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", + port); rv = tx_disable; goto restore; } restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -480,8 +585,9 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case QSFP_PLUS_IDENTIFIER:{ //for as9817-64D tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", + port); return ONLP_STATUS_E_INTERNAL; } *value = (tx_disable & 0xf); @@ -505,7 +611,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -515,7 +622,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, port) < 0) { - syslog(LOG_ERR, "Unable to read LP mode status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c index e4ab7fb8e..a8fe4ad87 100644 --- a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c @@ -98,6 +98,72 @@ /* OSFP IDENTIFIER Specific*/ #define QSFP_DD_IDENTIFIER 0x18 +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -138,10 +204,21 @@ onlp_sfpi_is_present(int port) int bus = (port < 16) ? 20 : 21; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -250,12 +327,14 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d), size is different!", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -271,20 +350,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog(LOG_ERR, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog(LOG_ERR, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -341,7 +423,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, 21, 62, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -352,15 +435,17 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read status byte from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Unable to write tx_disable status to port(%d): read status byte from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -369,30 +454,35 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", + port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Unable to write tx_disable status to port(%d): read control from eeprom fail", + port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to write tx_disable status to port(%d): write bank to eeprom fail", + port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", + port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + port); goto restore; } } else { @@ -402,7 +492,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -415,8 +506,9 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0 ){ - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -438,7 +530,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int bus = (port < 16) ? 20 : 21; if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write reset status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -455,16 +548,18 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, + "Unable to write LP mode status to port(%d): read identifier from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else{ @@ -473,8 +568,9 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -487,8 +583,9 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else{ @@ -499,8 +596,9 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value)< 0){ - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -543,7 +641,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, 21, 62, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -556,7 +655,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, 21, 62, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -573,7 +673,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, 21, 62, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -583,15 +684,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read status byte from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Unable to read tx_disable status from port(%d): read status byte from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -600,13 +703,15 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write page to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to read tx_disable status from port(%d): write page to eeprom fail", + port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read support control from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Unable to read tx_disable status from port(%d): read support control from eeprom fail", + port); rv = support_ctrls; goto restore; } @@ -615,25 +720,29 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to read tx_disable status from port(%d): write bank to eeprom fail", + port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write page to eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to read tx_disable status from port(%d): write page to eeprom fail", + port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + port); rv = tx_dis; goto restore; } restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -646,8 +755,9 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0){ - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -671,7 +781,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int bus = (port < 16) ? 20 : 21; if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -688,16 +799,18 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, + "Unable to read LP mode status from port(%d): read identifier from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* lpmode valid bit(bit4):Low power requset sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -708,8 +821,9 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", - port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { diff --git a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c index a0e614017..6dd9bd454 100644 --- a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c @@ -106,6 +106,72 @@ #define MODULE_RXLOS_ALL_ATTR \ "/sys/devices/platform/as9926_24db_sfp/module_rxlos_all" +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -143,11 +209,21 @@ int onlp_sfpi_is_present(int port) if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read present status from port(%d)", - port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -270,13 +346,14 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog(LOG_ERR, "Unable to read eeprom from port(%d), size is \ - different!", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -291,23 +368,23 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog(LOG_ERR, "Unable to open the eeprom device file of \ - port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog(LOG_ERR, "Unable to set the file position indicator of \ - port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog(LOG_ERR, "Unable to read the module_eeprom device file of \ - port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -335,7 +412,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { /* SFP */ if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -345,13 +423,15 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { /* QSFP */ identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read status byte from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Unable to write tx_disable status to port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -360,25 +440,30 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } } else { @@ -388,7 +473,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -399,7 +485,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP 28 or QSFP+ */ value = value & 0xf; if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -419,7 +506,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to set reset to port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to set reset to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -435,13 +523,15 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, + "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if (lpmode_value < 0) { - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -450,7 +540,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0) { - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -460,7 +551,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP 28 or QSFP+ */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if (lpmode_value < 0) { - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -469,7 +561,8 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_LPMODE; if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0) { - syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -537,7 +630,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -550,7 +644,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -564,7 +659,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -581,7 +677,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { /* SFP */ if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -591,13 +688,15 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP */ identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read status byte from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + "Unable to read tx_disable status from port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -606,11 +705,13 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read support control from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + "Unable to read tx_disable status from port(%d): read support control from eeprom fail", port); rv = support_ctrls; goto restore; } @@ -619,22 +720,26 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; goto restore; } restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog(LOG_ERR, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -647,7 +752,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if (tx_dis < 0) { - syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -670,14 +776,16 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, + "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* lpmode valid bit(bit4): Low power request sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if (lpmode_value < 0) { - syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -688,7 +796,8 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if (lpmode_value < 0) { - syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { From 947fde6d618d8b8d0b390b939d239f0f265bb141 Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Mon, 10 Aug 2026 17:11:07 +0800 Subject: [PATCH 2/6] [Accton] sfpi: apply per-port per-reason syslog rate limiting to AIM_LOG_ERROR platforms Platforms: as4625-54t, as4630-54pe, as4630-54te, as5835-54t, as5835-54x, as5915-18x, as5916-54x, as5916-54xks, as5916-54xl, as7326-56x, as7515-24x, as7712-32x, as7726-32x, as7816-64x. * Reuse the log_reason enum, sfp_log_mgmt state and syslog_ctrl() / reset_log_ctrl() helpers introduced for the syslog-based platforms, so all Accton sfpi drivers share the same rate-limiting model. * Convert port-scoped AIM_LOG_ERROR calls in these drivers to syslog_ctrl() so each (port, reason) only emits one log entry until the port state changes. Strip trailing \r\n from converted messages since syslog does not require them. * In onlp_sfpi_is_present(), re-arm log_ctrl whenever the presence result changes: on a real module insertion (present transitions to 1), and on the first read failure after a successful read (transition into E_INTERNAL). This mirrors the behavior in 098a42badf4 so downstream failures re-emit one log line after the underlying state has changed. * CPLD-level AIM_LOG_ERROR calls with no port context (e.g. in presence_bitmap_get / rx_los_bitmap_get) are rewritten as plain syslog(LOG_ERR, ...) to keep the logging channel consistent with the syslog-based platforms; they are not rate-limited because the bitmap APIs have no port to key the log_ctrl on. Signed-off-by: Eric Yang --- .../module/src/sfpi.c | 121 ++++++++++++-- .../module/src/sfpi.c | 126 +++++++++++++-- .../module/src/sfpi.c | 134 +++++++++++++--- .../module/src/sfpi.c | 117 ++++++++++++-- .../module/src/sfpi.c | 135 +++++++++++++--- .../module/src/sfpi.c | 116 ++++++++++++-- .../module/src/sfpi.c | 136 +++++++++++++--- .../module/src/sfpi.c | 147 +++++++++++++++--- .../module/src/sfpi.c | 145 ++++++++++++++--- .../module/src/sfpi.c | 138 +++++++++++++--- .../module/src/sfpi.c | 139 ++++++++++++++--- .../module/src/sfpi.c | 111 +++++++++++-- .../module/src/sfpi.c | 136 +++++++++++++--- .../module/src/sfpi.c | 110 +++++++++++-- 14 files changed, 1549 insertions(+), 262 deletions(-) diff --git a/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c b/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c index eae66474b..e140064f3 100644 --- a/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c @@ -28,6 +28,7 @@ #include #include "x86_64_accton_as4625_54t_int.h" #include "x86_64_accton_as4625_54t_log.h" +#include #define PORT_EEPROM_FORMAT "/sys/bus/i2c/devices/%d-0050/eeprom" #define MODULE_PRESENT_FORMAT_0 "/sys/bus/i2c/devices/0-0064/module_present_%d" @@ -46,12 +47,79 @@ int port_bus_index[] = { 10, 11, 12, 13, 14, 15 }; #define PORT_BUS_INDEX(port) (port_bus_index[port-48]) +#define MAX_PORT 53 + #define VALIDATE_SFP(_port) \ do { \ if (_port < 48 || _port > 53) \ return ONLP_STATUS_E_UNSUPPORTED; \ } while(0) +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} /************************************************************ * @@ -93,12 +161,22 @@ onlp_sfpi_is_present(int port) if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT_0, port+1) < 0) { if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT_1, port+1) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", - port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -115,7 +193,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) if(fp == NULL) { fp = fopen(MODULE_PRESENT_ALL_ATTR_1, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file"); + syslog(LOG_ERR, "Unable to open the module_present_all device file"); return ONLP_STATUS_E_INTERNAL; } } @@ -125,7 +203,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) if(count != 1) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read the module_present_all device file"); + syslog(LOG_ERR, "Unable to read the module_present_all device file"); return ONLP_STATUS_E_INTERNAL; } @@ -166,7 +244,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) if(fp == NULL) { fp = fopen(MODULE_RXLOS_ALL_ATTR_1, "r"); if(fp == NULL){ - AIM_LOG_ERROR("Unable to open the module_rx_los_all device file"); + syslog(LOG_ERR, "Unable to open the module_rx_los_all device file"); return ONLP_STATUS_E_INTERNAL; } } @@ -176,7 +254,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) if(count != 1) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read the module_rx_los_all device file"); + syslog(LOG_ERR, "Unable to read the module_rx_los_all device file"); return ONLP_STATUS_E_INTERNAL; } @@ -184,7 +262,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) if(fp1 == NULL) { fp1 = fopen(MODULE_PRESENT_ALL_ATTR_1, "r"); if(fp1 == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file"); + syslog(LOG_ERR, "Unable to open the module_present_all device file"); return ONLP_STATUS_E_INTERNAL; } } @@ -194,7 +272,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) if(count1 != 1) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read the module_present_all device file"); + syslog(LOG_ERR, "Unable to read the module_present_all device file"); return ONLP_STATUS_E_INTERNAL; } /* Mask out non-existant SFP ports */ @@ -230,12 +308,14 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d), size is different!\r\n" + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!" , port); return ONLP_STATUS_E_INTERNAL; } @@ -254,14 +334,16 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)" + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)" , port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)" + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)" , port); return ONLP_STATUS_E_INTERNAL; } @@ -269,7 +351,8 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)" + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)" , port); return ONLP_STATUS_E_INTERNAL; } @@ -292,7 +375,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) , (port+1)) < 0) { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT_1 , (port+1)) < 0) { - AIM_LOG_ERROR("Unable to set tx_disable status to port(%d)\r\n" + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to set tx_disable status to port(%d)" , port); return ONLP_STATUS_E_INTERNAL; } @@ -325,7 +409,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) < 0) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT_1, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n" + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)" , port); return ONLP_STATUS_E_INTERNAL; } @@ -340,7 +425,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) < 0) { if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT_1, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n" + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)" , port); return ONLP_STATUS_E_INTERNAL; } @@ -358,7 +444,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) (port+1)) < 0) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT_1, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n" + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)" , port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c index 5ad86e3ad..6a948481e 100755 --- a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c @@ -28,6 +28,9 @@ #include #include "x86_64_accton_as4630_54pe_int.h" #include "x86_64_accton_as4630_54pe_log.h" +#include + +#define MAX_PORT 53 #define PORT_EEPROM_FORMAT "/sys/bus/i2c/devices/%d-0050/eeprom" #define MODULE_PRESENT_FORMAT "/sys/bus/i2c/devices/%d-00%d/module_present_%d" @@ -63,6 +66,72 @@ int port_bus_index[] ={18, 19, 20, 21, 22, 23}; return ONLP_STATUS_E_UNSUPPORTED; \ } while(0) +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -108,10 +177,21 @@ onlp_sfpi_is_present(int port) bus = 3; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -161,12 +241,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d), size is different!\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -183,20 +264,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -249,7 +333,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port>=48 && port<=51) { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -257,7 +342,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -270,7 +356,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { if(port>=52 && port<=53) { if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -281,7 +368,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { if(port>=52 && port<=53) { if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write lpmode status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write lpmode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -309,7 +397,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if(port>=48 && port<=51) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -321,7 +410,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if(port>=48 && port<=51) { if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -338,7 +428,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port>=48 && port<=51) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -346,7 +437,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } *value = (tx_dis & 0xf); @@ -360,7 +452,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if(port>=52 && port<=53) { if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -373,7 +466,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if(port>=52 && port<=53) { if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read lpmode status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read lpmode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; diff --git a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c index 8b4443861..5b9aeea3c 100644 --- a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c @@ -28,6 +28,9 @@ #include #include "x86_64_accton_as4630_54te_int.h" #include "x86_64_accton_as4630_54te_log.h" +#include + +#define MAX_PORT 53 #define PORT_EEPROM_FORMAT "/sys/bus/i2c/devices/%d-0050/eeprom" #define MODULE_PRESENT_FORMAT "/sys/bus/i2c/devices/3-0060/module_present_%d" @@ -65,6 +68,72 @@ int port_bus_index[] = { 18, 19, 20, 21, 22, 23 }; return ONLP_STATUS_E_UNSUPPORTED; \ } while(0) +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -104,10 +173,21 @@ onlp_sfpi_is_present(int port) VALIDATE(port); if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, port+1) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -122,7 +202,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fp = fopen(MODULE_PRESENT_ALL_ATTR, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file"); + syslog(LOG_ERR, "Unable to open the module_present_all device file"); return ONLP_STATUS_E_INTERNAL; } @@ -131,7 +211,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) if(count != 1) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read the module_present_all device file"); + syslog(LOG_ERR, "Unable to read the module_present_all device file"); return ONLP_STATUS_E_INTERNAL; } @@ -164,7 +244,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fp = fopen(MODULE_RXLOS_ALL_ATTR, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_rx_los_all device file"); + syslog(LOG_ERR, "Unable to open the module_rx_los_all device file"); return ONLP_STATUS_E_INTERNAL; } @@ -173,7 +253,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) if(count != 1) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read the module_rx_los_all device file"); + syslog(LOG_ERR, "Unable to read the module_rx_los_all device file"); return ONLP_STATUS_E_INTERNAL; } @@ -211,12 +291,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d), size is different!\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -233,20 +314,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -295,7 +379,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= 48 && port < 52) { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -303,7 +388,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -316,7 +402,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -326,7 +413,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write lpmode status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write lpmode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -350,7 +438,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -360,7 +449,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_FAULT: { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -375,7 +465,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 48 && port < 52) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -383,7 +474,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } *value = (tx_dis & 0xf); @@ -397,7 +489,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -407,7 +500,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read lpmode status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read lpmode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c index 95ad770ee..271201c33 100644 --- a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c @@ -28,11 +28,13 @@ #include #include "x86_64_accton_as5835_54t_int.h" #include "x86_64_accton_as5835_54t_log.h" +#include int sfp_map[] = {28,29,26,30,31,27}; #define QSFP_PORT_MIN 48 #define QSFP_PORT_MAX 53 +#define MAX_PORT 53 #define VALIDATE_QSFP(_port) \ do { \ if (_port < QSFP_PORT_MIN || _port > QSFP_PORT_MAX ) \ @@ -51,6 +53,72 @@ int sfp_map[] = {28,29,26,30,31,27}; #define PORT_EEPROM_DEVADDR 0x50 #define QSFP_EEPROM_OFFSET_TXDIS 0x56 +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -89,10 +157,21 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -110,7 +189,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) sprintf(file, MODULE_PRESENT_ALL_ATTR); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file of CPLD."); + syslog(LOG_ERR, "Unable to open the module_present_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -119,7 +198,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) if(count != length) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_present_all device file of CPLD."); + syslog(LOG_ERR, "Unable to read all fields the module_present_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -156,12 +235,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d), size is different!\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -177,20 +257,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -244,7 +327,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -261,7 +345,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -273,7 +358,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_LP_MODE: { if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write LP mode status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -310,7 +396,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) tx_dis_val = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis_val < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d): read eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -327,7 +414,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -339,7 +427,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_LP_MODE: { if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { diff --git a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c index 69d0d5ee8..d52409346 100644 --- a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c @@ -28,6 +28,7 @@ #include #include "x86_64_accton_as5835_54x_int.h" #include "x86_64_accton_as5835_54x_log.h" +#include int sfp_map[] = { 42,43,44,45,46,47,48,49,50,51, @@ -80,6 +81,72 @@ int sfp_map[] = { #define PORT_EEPROM_DEVADDR 0x50 #define QSFP_EEPROM_OFFSET_TXDIS 0x56 +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -119,10 +186,21 @@ onlp_sfpi_is_present(int port) int addr = (port < 38) ? 61 : 62; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, 3, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -144,7 +222,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) sprintf(file, MODULE_PRESENT_ALL_ATTR, 3, addr); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file of CPLD."); + syslog(LOG_ERR, "Unable to open the module_present_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -159,7 +237,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) if(count != length) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_present_all device file of CPLD."); + syslog(LOG_ERR, "Unable to read all fields the module_present_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -215,7 +293,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) } if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_rx_los_all device file of CPLD(0x%d)", addr); + syslog(LOG_ERR, "Unable to open the module_rx_los_all device file of CPLD(0x%d)", addr); return ONLP_STATUS_E_INTERNAL; } @@ -224,7 +302,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 5) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields from the module_rx_los_all device file of CPLD(0x%d)", addr); + syslog(LOG_ERR, "Unable to read all fields from the module_rx_los_all device file of CPLD(0x%d)", addr); return ONLP_STATUS_E_INTERNAL; } } @@ -233,7 +311,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 2) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields from the module_rx_los_all device file of CPLD(0x%d)", addr); + syslog(LOG_ERR, "Unable to read all fields from the module_rx_los_all device file of CPLD(0x%d)", addr); return ONLP_STATUS_E_INTERNAL; } } @@ -281,12 +359,14 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d), size is different!\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -302,20 +382,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -368,7 +451,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, 3, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -379,7 +463,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -397,7 +482,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, 3, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -410,7 +496,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, 3, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write LP mode status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -443,7 +530,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, 3, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -456,7 +544,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, 3, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -472,7 +561,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1){ if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, 3, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -483,7 +573,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_dis_val = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis_val < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d): read eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -502,7 +593,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, 3, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -515,7 +607,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, 3, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { diff --git a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c index 6ab3eafe1..bf3b23596 100644 --- a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c @@ -28,6 +28,9 @@ #include #include "x86_64_accton_as5915_18x_int.h" #include "x86_64_accton_as5915_18x_log.h" +#include + +#define MAX_PORT 13 #define PORT_EEPROM_FORMAT "/sys/bus/i2c/devices/%d-0050/eeprom" #define MODULE_PRESENT_FORMAT "/sys/bus/i2c/devices/32-0063/module_present_%d" @@ -44,6 +47,72 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define PORT_BUS_INDEX(port) (port_bus_index[port]) +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -82,10 +151,21 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -100,7 +180,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fp = fopen(MODULE_PRESENT_ALL_ATTR, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file of CPLD."); + syslog(LOG_ERR, "Unable to open the module_present_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -109,7 +189,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) if(count != 2) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_present_all device file of CPLD."); + syslog(LOG_ERR, "Unable to read all fields the module_present_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -145,7 +225,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fp = fopen(MODULE_RXLOS_ALL_ATTR_CPLD, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_rx_los_all device file of CPLD(0x63)"); + syslog(LOG_ERR, "Unable to open the module_rx_los_all device file of CPLD(0x63)"); return ONLP_STATUS_E_INTERNAL; } @@ -153,7 +233,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 2) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields from the module_rx_los_all device file of CPLD(0x62)"); + syslog(LOG_ERR, "Unable to read all fields from the module_rx_los_all device file of CPLD(0x62)"); return ONLP_STATUS_E_INTERNAL; } @@ -191,12 +271,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d), size is different!\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -212,20 +293,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -274,7 +358,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to set tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to set tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -304,7 +389,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RX_LOS: { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -316,7 +402,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_FAULT: { if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -328,7 +415,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_DISABLE: { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { diff --git a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c index b1e34e795..ebe6ca599 100644 --- a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c @@ -28,6 +28,7 @@ #include #include "x86_64_accton_as5916_54x_int.h" #include "x86_64_accton_as5916_54x_log.h" +#include #define SFP_PORT_MIN 0 #define SFP_PORT_MAX 47 @@ -71,6 +72,72 @@ #define PORT_EEPROM_DEVADDR 0x50 #define QSFP_EEPROM_OFFSET_TXDIS 0x56 +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -109,14 +176,27 @@ onlp_sfpi_is_present(int port) int present; int bus, addr; + VALIDATE_PORT(port); + addr = (port < 24) ? 60 : 62; bus = (addr == 60) ? 11 : 12; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -138,7 +218,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) sprintf(file, MODULE_PRESENT_ALL_ATTR, bus, addr); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file of CPLD(0x%d).", addr); + syslog(LOG_ERR, "Unable to open the module_present_all device file of CPLD(0x%d).", addr); return ONLP_STATUS_E_INTERNAL; } @@ -147,7 +227,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 3) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_present_all device file of CPLD(0x%d).", addr); + syslog(LOG_ERR, "Unable to read all fields the module_present_all device file of CPLD(0x%d).", addr); return ONLP_STATUS_E_INTERNAL; } } @@ -156,7 +236,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 4) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_present_all device file of CPLD(0x%d).", addr); + syslog(LOG_ERR, "Unable to read all fields the module_present_all device file of CPLD(0x%d).", addr); return ONLP_STATUS_E_INTERNAL; } } @@ -203,7 +283,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) } if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_rx_los_all device file of CPLD(0x%d)", addr); + syslog(LOG_ERR, "Unable to open the module_rx_los_all device file of CPLD(0x%d)", addr); return ONLP_STATUS_E_INTERNAL; } @@ -211,7 +291,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 3) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields from the module_rx_los_all device file of CPLD(0x%d)", addr); + syslog(LOG_ERR, "Unable to read all fields from the module_rx_los_all device file of CPLD(0x%d)", addr); return ONLP_STATUS_E_INTERNAL; } @@ -248,12 +328,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d), size is different!\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -269,20 +350,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -336,7 +420,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -347,7 +432,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -365,7 +451,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -378,7 +465,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write LP mode status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -411,7 +499,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -424,7 +513,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -440,7 +530,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1){ if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -451,7 +542,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_dis_val = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis_val < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d): read eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -470,7 +562,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -483,7 +576,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { diff --git a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c index 1a9c848c1..7ca5bfe3f 100755 --- a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c @@ -28,6 +28,7 @@ #include #include "x86_64_accton_as5916_54xks_int.h" #include "x86_64_accton_as5916_54xks_log.h" +#include #define PORT_EEPROM_FORMAT "/sys/devices/platform/as5916_54xks_sfp/module_eeprom_%d" #define MODULE_PRESENT_FORMAT "/sys/devices/platform/as5916_54xks_sfp/module_present_%d" @@ -66,6 +67,73 @@ /*QSFP tx_disable*/ #define QSFP_EEPROM_OFFSET_TXDIS 0x56 + +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -104,10 +172,21 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -122,7 +201,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fp = fopen(MODULE_PRESENT_ALL_ATTR, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file from (%s).", MODULE_PRESENT_ALL_ATTR); + syslog(LOG_ERR, "Unable to open the module_present_all device file from (%s).", MODULE_PRESENT_ALL_ATTR); return ONLP_STATUS_E_INTERNAL; } @@ -131,7 +210,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 7) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_present_all device file from(%s).", MODULE_PRESENT_ALL_ATTR); + syslog(LOG_ERR, "Unable to read all fields the module_present_all device file from(%s).", MODULE_PRESENT_ALL_ATTR); return ONLP_STATUS_E_INTERNAL; } @@ -166,7 +245,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fp = fopen(MODULE_RXLOS_ALL_ATTR, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_rxlos_all device file from (%s).", MODULE_RXLOS_ALL_ATTR); + syslog(LOG_ERR, "Unable to open the module_rxlos_all device file from (%s).", MODULE_RXLOS_ALL_ATTR); return ONLP_STATUS_E_INTERNAL; } @@ -175,7 +254,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 6) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_rxlos_all device file from(%s).", MODULE_RXLOS_ALL_ATTR); + syslog(LOG_ERR, "Unable to read all fields the module_rxlos_all device file from(%s).", MODULE_RXLOS_ALL_ATTR); return ONLP_STATUS_E_INTERNAL; } @@ -209,12 +288,14 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, (port+1)) != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d), size is different!\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -314,7 +395,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -325,8 +407,9 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if (onlp_sfpi_eeprom_writeb(port, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -345,7 +428,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -359,7 +443,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write LP mode status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -392,7 +477,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -406,7 +492,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -422,7 +509,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1){ if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -433,8 +521,9 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_disable = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_TXDIS); if (tx_disable < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -455,7 +544,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -469,7 +559,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -541,7 +632,8 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin sprintf(file, PORT_EEPROM_FORMAT, (port+1)); fp = fopen(file, "r+"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -552,21 +644,24 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin seek_off = (port <= SFP_PORT_IDX_END) ? SFP_PAGE_OFFSET : QSFP_PAGE_OFFSET; if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(&page, 1, 1, fp); if (ret != 1) { fclose(fp); - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } seek_off = onlp_sfpi_dev_get_sysfs_off(port, devaddr, addr, page); if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -575,7 +670,8 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - AIM_LOG_ERROR("Unable to write the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to write the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } @@ -584,7 +680,8 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } diff --git a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c index a7d5d633e..f471b96d4 100755 --- a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c @@ -28,6 +28,7 @@ #include #include "x86_64_accton_as5916_54xl_int.h" #include "x86_64_accton_as5916_54xl_log.h" +#include #define SFP_PORT_MIN 0 #define SFP_PORT_MAX 47 @@ -67,6 +68,72 @@ /*QSFP tx_disable*/ #define QSFP_EEPROM_OFFSET_TXDIS 0x56 +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -105,10 +172,21 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -123,7 +201,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fp = fopen(MODULE_PRESENT_ALL_ATTR, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file from (%s).", MODULE_PRESENT_ALL_ATTR); + syslog(LOG_ERR, "Unable to open the module_present_all device file from (%s).", MODULE_PRESENT_ALL_ATTR); return ONLP_STATUS_E_INTERNAL; } @@ -132,7 +210,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 7) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_present_all device file from(%s).", MODULE_PRESENT_ALL_ATTR); + syslog(LOG_ERR, "Unable to read all fields the module_present_all device file from(%s).", MODULE_PRESENT_ALL_ATTR); return ONLP_STATUS_E_INTERNAL; } @@ -167,7 +245,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fp = fopen(MODULE_RXLOS_ALL_ATTR, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_rxlos_all device file from (%s).", MODULE_RXLOS_ALL_ATTR); + syslog(LOG_ERR, "Unable to open the module_rxlos_all device file from (%s).", MODULE_RXLOS_ALL_ATTR); return ONLP_STATUS_E_INTERNAL; } @@ -176,7 +254,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 6) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_rxlos_all device file from(%s).", MODULE_RXLOS_ALL_ATTR); + syslog(LOG_ERR, "Unable to read all fields the module_rxlos_all device file from(%s).", MODULE_RXLOS_ALL_ATTR); return ONLP_STATUS_E_INTERNAL; } @@ -210,12 +288,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, (port+1)) != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d), size is different!\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -315,7 +394,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -326,8 +406,9 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if (onlp_sfpi_eeprom_writeb(port, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -346,7 +427,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -360,7 +442,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write LP mode status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -393,7 +476,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -407,7 +491,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -423,7 +508,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1){ if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -434,8 +520,9 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_disable = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_TXDIS); if (tx_disable < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", - port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -455,7 +542,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -469,7 +557,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -541,7 +630,8 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin sprintf(file, PORT_EEPROM_FORMAT, (port+1)); fp = fopen(file, "r+"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -552,21 +642,24 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin seek_off = (port <= SFP_PORT_IDX_END) ? SFP_PAGE_OFFSET : QSFP_PAGE_OFFSET; if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(&page, 1, 1, fp); if (ret != 1) { fclose(fp); - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } seek_off = onlp_sfpi_dev_get_sysfs_off(port, devaddr, addr, page); if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -575,7 +668,8 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - AIM_LOG_ERROR("Unable to write the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to write the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } @@ -584,7 +678,8 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } diff --git a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c index 784011376..c3669ba71 100644 --- a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c @@ -28,6 +28,7 @@ #include #include "x86_64_accton_as7326_56x_int.h" #include "x86_64_accton_as7326_56x_log.h" +#include #define SFP_PORT_RANGE1_MIN 0 #define SFP_PORT_RANGE1_MAX 47 @@ -86,6 +87,71 @@ const int sfp_map[] = { 25,26,27,28,29,30,31,32, /*port 49~56 QSFP*/ 22,23}; /*port 57~58 SFP+ from CPU NIF.*/ +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} /************************************************************ * @@ -125,14 +191,27 @@ onlp_sfpi_is_present(int port) int present; int bus, addr; + VALIDATE_PORT(port); + addr = (port < 30) ? 62 : 60; bus = (addr == 62) ? 12 : 18; - if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -154,7 +233,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) sprintf(file, MODULE_PRESENT_ALL_ATTR, bus, addr); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file of CPLD3."); + syslog(LOG_ERR, "Unable to open the module_present_all device file of CPLD3."); return ONLP_STATUS_E_INTERNAL; } @@ -162,7 +241,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 4) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_present_all device file of CPLD3."); + syslog(LOG_ERR, "Unable to read all fields the module_present_all device file of CPLD3."); return ONLP_STATUS_E_INTERNAL; } @@ -208,7 +287,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) } if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_rx_los_all device file of CPLD(0x%d)", addr); + syslog(LOG_ERR, "Unable to open the module_rx_los_all device file of CPLD(0x%d)", addr); return ONLP_STATUS_E_INTERNAL; } @@ -216,7 +295,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 4) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields from the module_rx_los_all device file of CPLD(0x%d)", addr); + syslog(LOG_ERR, "Unable to read all fields from the module_rx_los_all device file of CPLD(0x%d)", addr); return ONLP_STATUS_E_INTERNAL; } @@ -253,12 +332,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d), size is different!\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -274,20 +354,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -347,7 +430,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -357,7 +441,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -377,7 +462,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -394,7 +480,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d):read LP mode value fail\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -405,7 +492,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d):write eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -448,7 +536,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -462,7 +551,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -482,7 +572,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d): read eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -494,7 +585,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -513,7 +605,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -530,7 +623,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { diff --git a/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c index 8174a6928..816e05140 100644 --- a/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as7515_24x_int.h" #include "x86_64_accton_as7515_24x_log.h" #include "platform_lib.h" +#include #define VALIDATE(_port) \ do { \ @@ -71,6 +72,74 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define PORT_BUS_INDEX(port) (port_bus_index[port]) +#define MAX_PORT (NUM_OF_SFP_PORT - 1) + +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -110,10 +179,21 @@ onlp_sfpi_is_present(int port) VALIDATE(port); if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, port+1) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port+1); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port+1); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -128,7 +208,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) /* Read present status of each port */ fp = fopen(MODULE_PRESENT_ALL_ATTR, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file of CPLD."); + syslog(LOG_ERR, "Unable to open the module_present_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -137,7 +217,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) if(count != 3) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_present_all device file of CPLD."); + syslog(LOG_ERR, "Unable to read all fields the module_present_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -169,7 +249,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) /* Read present status of each port */ fp = fopen(MODULE_PRESENT_ALL_ATTR, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file of CPLD."); + syslog(LOG_ERR, "Unable to open the module_present_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -178,7 +258,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) if(count != 3) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_present_all device file of CPLD."); + syslog(LOG_ERR, "Unable to read all fields the module_present_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -193,7 +273,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) /* Read rx los status of each port */ fp = fopen(MODULE_RXLOS_ALL_ATTR, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_rx_los_all device file of CPLD."); + syslog(LOG_ERR, "Unable to open the module_rx_los_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -202,7 +282,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) if(count != 3) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_rx_los_all device file of CPLD."); + syslog(LOG_ERR, "Unable to read all fields the module_rx_los_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -240,12 +320,14 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d), size is different!\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -262,20 +344,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -325,13 +410,15 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= 0 && port < 4) { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; } else { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, port+1) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -344,7 +431,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, port+1) < 0) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -354,7 +442,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, port+1) < 0) { - AIM_LOG_ERROR("Unable to write lpmode status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write lpmode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -380,7 +469,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, port+1) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -391,7 +481,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, port+1) < 0) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -406,14 +497,16 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port < 4) { if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } *value = (tx_dis & 0xf); return ONLP_STATUS_OK; } else { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, port+1) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -426,7 +519,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, port+1) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -436,7 +530,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, port+1) < 0) { - AIM_LOG_ERROR("Unable to read lpmode status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read lpmode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c index 5845ecceb..8506de0af 100644 --- a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c @@ -28,9 +28,11 @@ #include #include #include "platform_lib.h" +#include #define QSFP_PORT_MIN 0 #define QSFP_PORT_MAX 31 +#define MAX_PORT QSFP_PORT_MAX #define VALIDATE_QSFP(_port) \ do { \ @@ -64,6 +66,72 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { /*QSFP Specific*/ #define QSFP_LPMODE 0x3 +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -102,11 +170,22 @@ onlp_sfpi_is_present(int port) */ int present; - if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -119,7 +198,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fp = fopen(MODULE_PRESENT_ALL_ATTR, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the sfp_is_present_all device file."); + syslog(LOG_ERR, "Unable to open the sfp_is_present_all device file."); return ONLP_STATUS_E_INTERNAL; } int count = fscanf(fp, "%x %x %x %x", @@ -131,7 +210,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != AIM_ARRAYSIZE(bytes)) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields from the sfp_is_present_all device file."); + syslog(LOG_ERR, "Unable to read all fields from the sfp_is_present_all device file."); return ONLP_STATUS_E_INTERNAL; } @@ -165,7 +244,8 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -219,7 +299,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -235,7 +316,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } else { @@ -251,7 +333,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d):read LP mode value fail\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -262,7 +345,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d):write eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -305,7 +389,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d): read eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -323,7 +408,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -339,7 +425,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { diff --git a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c index 397282280..0ad15e8f1 100755 --- a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c @@ -28,7 +28,7 @@ #include #include "x86_64_accton_as7726_32x_int.h" #include "x86_64_accton_as7726_32x_log.h" - +#include #define SFP_PORT_MIN 32 #define SFP_PORT_MAX 33 @@ -83,6 +83,72 @@ int sfp_map_bus[] ={21, 22, 23, 24, 26, 25, 28, 27, 37, 38, 39, 40, 41, 42, 43, 44, 15, 16}; +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -136,10 +202,21 @@ onlp_sfpi_is_present(int port) bus = 11; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -157,7 +234,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) sprintf(file, MODULE_PRESENT_ALL_ATTR, bus, addr); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_present_all device file of CPLD3."); + syslog(LOG_ERR, "Unable to open the module_present_all device file of CPLD3."); return ONLP_STATUS_E_INTERNAL; } @@ -165,7 +242,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 5) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the module_present_all device file of CPLD3."); + syslog(LOG_ERR, "Unable to read all fields the module_present_all device file of CPLD3."); return ONLP_STATUS_E_INTERNAL; } @@ -197,7 +274,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fp = fopen(MODULE_RXLOS_ALL_ATTR_CPLD, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_rx_los_all device file of CPLD(0x%d)", addr); + syslog(LOG_ERR, "Unable to open the module_rx_los_all device file of CPLD(0x%d)", addr); return ONLP_STATUS_E_INTERNAL; } @@ -205,7 +282,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 5) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields from the module_rx_los_all device file of CPLD(0x%d)", addr); + syslog(LOG_ERR, "Unable to read all fields from the module_rx_los_all device file of CPLD(0x%d)", addr); return ONLP_STATUS_E_INTERNAL; } @@ -240,12 +317,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d), size is different!\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -261,20 +339,23 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - AIM_LOG_ERROR("Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - AIM_LOG_ERROR("Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -334,7 +415,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -344,7 +426,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -363,7 +446,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -380,7 +464,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d):read LP mode value fail\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -391,7 +476,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d):write eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -432,7 +518,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -445,7 +532,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -465,7 +553,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d): read eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -476,7 +565,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -495,7 +585,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -512,7 +603,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { diff --git a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c index cbdf3b171..6b9981c08 100644 --- a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c @@ -27,9 +27,12 @@ #include #include #include "platform_lib.h" +#include #define QSFP_PORT_MIN 0 #define QSFP_PORT_MAX 63 +#define MIN_PORT QSFP_PORT_MIN +#define MAX_PORT QSFP_PORT_MAX #define VALIDATE_QSFP(_port) \ do { \ if (_port < QSFP_PORT_MIN || _port > QSFP_PORT_MAX ) \ @@ -64,6 +67,73 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { /*QSFP Specific*/ #define QSFP_LPMODE 0x3 + +enum log_reason{ + PRESENT_UNABLE_TO_GET_STATUS, + EEPROM_UNABLE_TO_GET_DATA, + EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + DOM_UNABLE_TO_OPEN_EEPROM_FILE, + DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + DOM_UNABLE_TO_GET_EEPROM_DATA, + TX_DIS_UNABLE_TO_SET_STATUS, + TX_DIS_UNABLE_TO_GET_IDENTIFIER, + TX_DIS_UNABLE_TO_GET_MEM_MODEL, + TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + TX_DIS_UNABLE_TO_GET_CONTROL, + TX_DIS_UNABLE_TO_SET_BANK, + TX_DIS_UNABLE_TO_GET_STATUS, + LP_MODE_UNABLE_TO_GET_IDENTIFIER, + LP_MODE_UNABLE_TO_SET_STATUS, + LP_MODE_UNABLE_TO_GET_STATUS, + RESET_UNABLE_TO_SET_STATUS, + RESET_UNABLE_TO_GET_STATUS, + RX_LOS_UNABLE_TO_GET_STATUS, + TX_FAULT_UNABLE_TO_GET_STATUS, + LOG_REASON_COUNT, +}; + +struct sfp_log_ctrl { + int should_log; +}; + +struct sfp_log_mgmt { + int sfp_present_rec; + struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; +}; + +static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { + [0 ... MAX_PORT] = { + .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .log_ctrl = { + [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + } + } +}; + +void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { + char buf[256]; + va_list args; + + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { + syslog(LOG_ERR, "%s", buf); + + log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; + } +} + +void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) +{ + int i; + + for (i = 0; i < LOG_REASON_COUNT; i++) { + log_mgmt_ptr->log_ctrl[i].should_log = 1; + } +} + /************************************************************ * * SFPI Entry Points @@ -103,10 +173,21 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + + syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } + if (present == 1 && present != log_mgmt[port].sfp_present_rec) { + reset_log_ctrl(&log_mgmt[port]); + } + log_mgmt[port].sfp_present_rec = present; + return present; } @@ -119,7 +200,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fp = fopen(MODULE_PRESENT_ALL_ATTR, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the sfp_is_present_all device file."); + syslog(LOG_ERR, "Unable to open the sfp_is_present_all device file."); return ONLP_STATUS_E_INTERNAL; } int count = fscanf(fp, "%x %x %x %x %x %x %x %x", @@ -128,7 +209,7 @@ onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != AIM_ARRAYSIZE(bytes)) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields from the sfp_is_present_all device file."); + syslog(LOG_ERR, "Unable to read all fields from the sfp_is_present_all device file."); return ONLP_STATUS_E_INTERNAL; } @@ -161,7 +242,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) int size = 0; if(onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -222,7 +303,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0){ - AIM_LOG_ERROR("Unable to write tx_disabled status to port(%d): write eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + "Unable to write tx_disabled status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -239,7 +321,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -255,7 +338,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d):read LP mode value fail\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } else{ @@ -266,7 +350,8 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d):write eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -309,7 +394,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d): read eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else{ @@ -328,7 +414,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -344,7 +431,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read eeprom fail\r\n", port); + syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else{ From dcbe9df83b8e5d6e42319f93b4bb84c285d55566 Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Thu, 27 Aug 2026 07:25:49 +0000 Subject: [PATCH 3/6] [Accton] sfpi: extract per-port per-reason syslog rate limiting into common log_ctrl module Platforms: as4625-54t, as4630-54pe, as4630-54te, as5835-54t, as5835-54x, as5915-18x, as5916-54x, as5916-54xks, as5916-54xl, as7326-56x, as7515-24x, as7535-28xb, as7712-32x, as7726-32x, as7816-64x, as7926-40xfb, as7946-30xb, as7946-74xkb, as9716_32d, as9726-32d, as9736-64d, as9737-32db, as9817-64, as9817-64-nb, as9926-24d, as9926-24db. * Move the log_reason enum, sfp_log_mgmt state and syslog_ctrl() / reset_log_ctrl() helpers previously duplicated in every platform sfpi.c into a shared header/source under packages/platforms/accton/x86-64/common (log_ctrl.h / log_ctrl.c), so all Accton sfpi drivers share one implementation of the rate-limiting model. * Generalize the primitive: syslog_ctrl() / reset_log_ctrl() now operate on a plain struct log_ctrl array plus an entry count, instead of being tied to struct sfp_log_mgmt. This leaves room for future domains (fan, PSU, ...) to reuse the same throttling primitive with their own reason enums. * Rename the SFP reason enum values with an SFP_ prefix (SFP_PRESENT_UNABLE_TO_GET_STATUS, ...) and rename the terminator to SFP_LOG_REASON_COUNT to avoid symbol collisions when other domains are added later. Rename the sfp_present_rec field to present_rec to match the shared struct layout. * Update each platform sfpi.c to include "log_ctrl.h" and drop its private copy of the enum, struct and helpers. Update each platform's module/make.mk to compile the shared log_ctrl.c and add the common include path, so the linker picks up one copy of the helpers instead of per-platform duplicates. Signed-off-by: Eric Yang --- .../x86_64_accton_as4625_54t/module/make.mk | 8 +- .../module/src/sfpi.c | 94 +++-------- .../x86_64_accton_as4630_54pe/module/make.mk | 8 +- .../module/src/sfpi.c | 106 +++---------- .../x86_64_accton_as4630_54pe/module/make.mk | 8 +- .../module/src/sfpi.c | 106 +++---------- .../x86_64_accton_as5835_54t/module/make.mk | 8 +- .../module/src/sfpi.c | 98 +++--------- .../x86_64_accton_as5835_54x/module/make.mk | 8 +- .../module/src/sfpi.c | 106 +++---------- .../x86_64_accton_as5915_18x/module/make.mk | 12 +- .../module/src/sfpi.c | 94 +++-------- .../x86_64_accton_as5916_54x/module/make.mk | 8 +- .../module/src/sfpi.c | 106 +++---------- .../x86_64_accton_as5916_54xks/module/make.mk | 8 +- .../module/src/sfpi.c | 112 ++++--------- .../x86_64_accton_as5916_54xl/module/make.mk | 8 +- .../module/src/sfpi.c | 112 ++++--------- .../x86_64_accton_as7326_56x/module/make.mk | 8 +- .../module/src/sfpi.c | 108 +++---------- .../x86_64_accton_as7515_24x/module/make.mk | 8 +- .../module/src/sfpi.c | 106 +++---------- .../x86_64_accton_as7535_28xb/module/make.mk | 9 +- .../module/src/sfpi.c | 145 +++++------------ .../x86_64_accton_as7712_32x/module/make.mk | 8 +- .../module/src/sfpi.c | 92 +++-------- .../x86_64_accton_as7726_32x/module/make.mk | 8 +- .../module/src/sfpi.c | 108 +++---------- .../x86_64_accton_as7816_64x/module/make.mk | 8 +- .../module/src/sfpi.c | 92 +++-------- .../x86_64_accton_as7926_40xfb/module/make.mk | 8 +- .../module/src/sfpi.c | 142 +++++------------ .../x86_64_accton_as7946_30xb/module/make.mk | 8 +- .../module/src/sfpi.c | 136 +++++----------- .../x86_64_accton_as7946_74xkb/module/make.mk | 8 +- .../module/src/sfpi.c | 136 +++++----------- .../x86_64_accton_as9716_32d/module/make.mk | 8 +- .../module/src/sfpi.c | 150 ++++++------------ .../x86_64_accton_as9726_32d/module/make.mk | 8 +- .../module/src/sfpi.c | 146 ++++++----------- .../x86_64_accton_as9736_64d/module/make.mk | 12 +- .../module/src/sfpi.c | 140 +++++----------- .../x86_64_accton_as9737_32db/module/make.mk | 8 +- .../module/src/sfpi.c | 138 +++++----------- .../x86_64_accton_as9817_64_nb/module/make.mk | 9 +- .../module/src/sfpi.c | 138 +++++----------- .../x86_64_accton_as9817_64/module/make.mk | 11 +- .../x86_64_accton_as9817_64/module/src/sfpi.c | 138 +++++----------- .../x86_64_accton_as9926_24d/module/make.mk | 8 +- .../module/src/sfpi.c | 150 ++++++------------ .../x86_64_accton_as9926_24db/module/make.mk | 8 +- .../module/src/sfpi.c | 150 ++++++------------ .../accton/x86-64/common/inc/log_ctrl.h | 106 +++++++++++++ .../accton/x86-64/common/src/log_ctrl.c | 40 +++++ .../accton/x86-64/common/src/make.mk | 9 ++ 55 files changed, 1168 insertions(+), 2357 deletions(-) create mode 100644 packages/platforms/accton/x86-64/common/inc/log_ctrl.h create mode 100644 packages/platforms/accton/x86-64/common/src/log_ctrl.c create mode 100644 packages/platforms/accton/x86-64/common/src/make.mk diff --git a/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/make.mk b/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/make.mk index d68eb57cb..15a7c0235 100644 --- a/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/make.mk +++ b/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as4625_54t_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as4625_54t_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as4625_54t_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as4625_54t_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as4625_54t_DEPENDMODULE_ENTRIES := init:x86_64_accton_as4625_54t ucli:x86_64_accton_as4625_54t +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as4625_54t_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c b/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c index e140064f3..6be05ab6d 100644 --- a/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as4625_54t_int.h" #include "x86_64_accton_as4625_54t_log.h" #include +#include "log_ctrl.h" #define PORT_EEPROM_FORMAT "/sys/bus/i2c/devices/%d-0050/eeprom" #define MODULE_PRESENT_FORMAT_0 "/sys/bus/i2c/devices/0-0064/module_present_%d" @@ -55,72 +56,15 @@ int port_bus_index[] = { 10, 11, 12, 13, 14, 15 }; return ONLP_STATUS_E_UNSUPPORTED; \ } while(0) -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -161,21 +105,21 @@ onlp_sfpi_is_present(int port) if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT_0, port+1) < 0) { if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT_1, port+1) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -308,13 +252,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!" , port); return ONLP_STATUS_E_INTERNAL; @@ -334,7 +278,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -342,7 +286,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -351,7 +295,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -375,7 +319,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) , (port+1)) < 0) { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT_1 , (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to set tx_disable status to port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -409,7 +353,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) < 0) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT_1, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -425,7 +369,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) < 0) { if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT_1, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -444,7 +388,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) (port+1)) < 0) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT_1, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)" , port); return ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk index fedb9a555..40d49e007 100755 --- a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk +++ b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as4630_54pe_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as4630_54pe_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as4630_54pe_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as4630_54pe_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as4630_54pe_DEPENDMODULE_ENTRIES := init:x86_64_accton_as4630_54pe ucli:x86_64_accton_as4630_54pe +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as4630_54pe_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c index 6a948481e..d458c5b8a 100755 --- a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as4630_54pe_int.h" #include "x86_64_accton_as4630_54pe_log.h" #include +#include "log_ctrl.h" #define MAX_PORT 53 @@ -66,72 +67,15 @@ int port_bus_index[] ={18, 19, 20, 21, 22, 23}; return ONLP_STATUS_E_UNSUPPORTED; \ } while(0) -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -177,20 +121,20 @@ onlp_sfpi_is_present(int port) bus = 3; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -241,12 +185,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -264,14 +208,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -279,7 +223,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -333,7 +277,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port>=48 && port<=51) { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -342,7 +286,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -356,7 +300,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { if(port>=52 && port<=53) { if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -368,7 +312,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { if(port>=52 && port<=53) { if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write lpmode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -397,7 +341,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if(port>=48 && port<=51) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -410,7 +354,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if(port>=48 && port<=51) { if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -428,7 +372,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port>=48 && port<=51) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -437,7 +381,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -452,7 +396,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if(port>=52 && port<=53) { if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -466,7 +410,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if(port>=52 && port<=53) { if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read lpmode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk index d9b448b38..16821a110 100644 --- a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk +++ b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as4630_54te_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as4630_54te_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as4630_54te_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as4630_54te_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as4630_54te_DEPENDMODULE_ENTRIES := init:x86_64_accton_as4630_54te ucli:x86_64_accton_as4630_54te +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as4630_54te_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c index 5b9aeea3c..493f3ccc9 100644 --- a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as4630_54te_int.h" #include "x86_64_accton_as4630_54te_log.h" #include +#include "log_ctrl.h" #define MAX_PORT 53 @@ -68,72 +69,15 @@ int port_bus_index[] = { 18, 19, 20, 21, 22, 23 }; return ONLP_STATUS_E_UNSUPPORTED; \ } while(0) -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -173,20 +117,20 @@ onlp_sfpi_is_present(int port) VALIDATE(port); if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, port+1) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -291,12 +235,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -314,14 +258,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -329,7 +273,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -379,7 +323,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= 48 && port < 52) { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -388,7 +332,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -402,7 +346,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -413,7 +357,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write lpmode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -438,7 +382,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -449,7 +393,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_FAULT: { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -465,7 +409,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 48 && port < 52) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -474,7 +418,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -489,7 +433,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -500,7 +444,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read lpmode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/make.mk b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/make.mk index 7fb74e039..8e90f959f 100644 --- a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/make.mk +++ b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as5835_54t_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as5835_54t_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as5835_54t_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as5835_54t_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as5835_54t_DEPENDMODULE_ENTRIES := init:x86_64_accton_as5835_54t ucli:x86_64_accton_as5835_54t +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as5835_54t_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c index 271201c33..47e2c754b 100644 --- a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as5835_54t_int.h" #include "x86_64_accton_as5835_54t_log.h" #include +#include "log_ctrl.h" int sfp_map[] = {28,29,26,30,31,27}; @@ -53,72 +54,15 @@ int sfp_map[] = {28,29,26,30,31,27}; #define PORT_EEPROM_DEVADDR 0x50 #define QSFP_EEPROM_OFFSET_TXDIS 0x56 -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -157,20 +101,20 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -235,12 +179,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -257,14 +201,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -272,7 +216,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -327,7 +271,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -345,7 +289,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -358,7 +302,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_LP_MODE: { if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -396,7 +340,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) tx_dis_val = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis_val < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -414,7 +358,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -427,7 +371,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_LP_MODE: { if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/make.mk b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/make.mk index 5718f964c..d92127b0a 100644 --- a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/make.mk +++ b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as5835_54x_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as5835_54x_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as5835_54x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as5835_54x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as5835_54x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as5835_54x ucli:x86_64_accton_as5835_54x +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as5835_54x_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c index d52409346..fa10eed8e 100644 --- a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as5835_54x_int.h" #include "x86_64_accton_as5835_54x_log.h" #include +#include "log_ctrl.h" int sfp_map[] = { 42,43,44,45,46,47,48,49,50,51, @@ -81,72 +82,15 @@ int sfp_map[] = { #define PORT_EEPROM_DEVADDR 0x50 #define QSFP_EEPROM_OFFSET_TXDIS 0x56 -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -186,20 +130,20 @@ onlp_sfpi_is_present(int port) int addr = (port < 38) ? 61 : 62; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, 3, addr, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -359,13 +303,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -382,14 +326,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -397,7 +341,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -451,7 +395,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -463,7 +407,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -482,7 +426,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -496,7 +440,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -530,7 +474,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -544,7 +488,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -561,7 +505,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1){ if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -573,7 +517,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_dis_val = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis_val < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -593,7 +537,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -607,7 +551,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/make.mk b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/make.mk index d1d99f3e6..14ca3f80e 100644 --- a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/make.mk +++ b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/make.mk @@ -1,10 +1,16 @@ ############################################################################### # -# +# # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as5915_18x_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as5915_18x_INTERNAL_INCLUDES := -I $(THIS_DIR)src +# module -> x86_64_accton_as5915_18x -> builds -> onlp -> as5915-18x -> x86-64 -> accton +ACCTON_COMMON := $(THIS_DIR)../../../../../common + +x86_64_accton_as5915_18x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as5915_18x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as5915_18x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as5915_18x ucli:x86_64_accton_as5915_18x +# Pull in the shared accton helper library (log throttling, ...). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as5915_18x_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c index bf3b23596..ced41a887 100644 --- a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as5915_18x_int.h" #include "x86_64_accton_as5915_18x_log.h" #include +#include "log_ctrl.h" #define MAX_PORT 13 @@ -47,72 +48,15 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define PORT_BUS_INDEX(port) (port_bus_index[port]) -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -151,20 +95,20 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -271,12 +215,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -293,14 +237,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -308,7 +252,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -358,7 +302,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to set tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -389,7 +333,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RX_LOS: { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -402,7 +346,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_FAULT: { if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -415,7 +359,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_DISABLE: { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/make.mk b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/make.mk index 568066a47..1e83929b3 100644 --- a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/make.mk +++ b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as5916_54x_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as5916_54x_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as5916_54x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as5916_54x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as5916_54x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as5916_54x ucli:x86_64_accton_as5916_54x +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as5916_54x_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c index ebe6ca599..a91640894 100644 --- a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as5916_54x_int.h" #include "x86_64_accton_as5916_54x_log.h" #include +#include "log_ctrl.h" #define SFP_PORT_MIN 0 #define SFP_PORT_MAX 47 @@ -72,72 +73,15 @@ #define PORT_EEPROM_DEVADDR 0x50 #define QSFP_EEPROM_OFFSET_TXDIS 0x56 -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -182,20 +126,20 @@ onlp_sfpi_is_present(int port) bus = (addr == 60) ? 11 : 12; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -328,12 +272,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -350,14 +294,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -365,7 +309,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -420,7 +364,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -432,7 +376,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -451,7 +395,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -465,7 +409,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -499,7 +443,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -513,7 +457,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -530,7 +474,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1){ if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -542,7 +486,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_dis_val = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis_val < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -562,7 +506,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -576,7 +520,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/make.mk b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/make.mk index 3f0fcdad7..72263d1f4 100755 --- a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/make.mk +++ b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as5916_54xks_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as5916_54xks_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as5916_54xks_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as5916_54xks_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as5916_54xks_DEPENDMODULE_ENTRIES := init:x86_64_accton_as5916_54xks ucli:x86_64_accton_as5916_54xks +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as5916_54xks_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c index 7ca5bfe3f..3f2dd8857 100755 --- a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as5916_54xks_int.h" #include "x86_64_accton_as5916_54xks_log.h" #include +#include "log_ctrl.h" #define PORT_EEPROM_FORMAT "/sys/devices/platform/as5916_54xks_sfp/module_eeprom_%d" #define MODULE_PRESENT_FORMAT "/sys/devices/platform/as5916_54xks_sfp/module_present_%d" @@ -68,72 +69,15 @@ /*QSFP tx_disable*/ #define QSFP_EEPROM_OFFSET_TXDIS 0x56 -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -172,20 +116,20 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -288,13 +232,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, (port+1)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -395,7 +339,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -407,7 +351,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if (onlp_sfpi_eeprom_writeb(port, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -428,7 +372,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -443,7 +387,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -477,7 +421,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -492,7 +436,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -509,7 +453,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1){ if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -521,7 +465,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_disable = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_TXDIS); if (tx_disable < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -544,7 +488,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -559,7 +503,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -632,7 +576,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin sprintf(file, PORT_EEPROM_FORMAT, (port+1)); fp = fopen(file, "r+"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -644,7 +588,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin seek_off = (port <= SFP_PORT_IDX_END) ? SFP_PAGE_OFFSET : QSFP_PAGE_OFFSET; if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -652,7 +596,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin int ret = fread(&page, 1, 1, fp); if (ret != 1) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -660,7 +604,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin seek_off = onlp_sfpi_dev_get_sysfs_off(port, devaddr, addr, page); if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -670,7 +614,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to write the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -680,7 +624,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/make.mk b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/make.mk index 9b80644e3..a7f1010bf 100755 --- a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/make.mk +++ b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as5916_54xl_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as5916_54xl_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as5916_54xl_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as5916_54xl_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as5916_54xl_DEPENDMODULE_ENTRIES := init:x86_64_accton_as5916_54xl ucli:x86_64_accton_as5916_54xl +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as5916_54xl_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c index f471b96d4..21d58d895 100755 --- a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as5916_54xl_int.h" #include "x86_64_accton_as5916_54xl_log.h" #include +#include "log_ctrl.h" #define SFP_PORT_MIN 0 #define SFP_PORT_MAX 47 @@ -68,72 +69,15 @@ /*QSFP tx_disable*/ #define QSFP_EEPROM_OFFSET_TXDIS 0x56 -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -172,20 +116,20 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -288,12 +232,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, (port+1)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -394,7 +338,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -406,7 +350,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if (onlp_sfpi_eeprom_writeb(port, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -427,7 +371,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -442,7 +386,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -476,7 +420,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -491,7 +435,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -508,7 +452,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1){ if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -520,7 +464,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_disable = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_TXDIS); if (tx_disable < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -542,7 +486,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -557,7 +501,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -630,7 +574,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin sprintf(file, PORT_EEPROM_FORMAT, (port+1)); fp = fopen(file, "r+"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -642,7 +586,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin seek_off = (port <= SFP_PORT_IDX_END) ? SFP_PAGE_OFFSET : QSFP_PAGE_OFFSET; if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -650,7 +594,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin int ret = fread(&page, 1, 1, fp); if (ret != 1) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -658,7 +602,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin seek_off = onlp_sfpi_dev_get_sysfs_off(port, devaddr, addr, page); if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -668,7 +612,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to write the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -678,7 +622,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/make.mk b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/make.mk index b7aa99d1b..e6e0a5415 100644 --- a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/make.mk +++ b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as7326_56x_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as7326_56x_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as7326_56x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as7326_56x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7326_56x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7326_56x ucli:x86_64_accton_as7326_56x +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as7326_56x_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c index c3669ba71..dc5714c16 100644 --- a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as7326_56x_int.h" #include "x86_64_accton_as7326_56x_log.h" #include +#include "log_ctrl.h" #define SFP_PORT_RANGE1_MIN 0 #define SFP_PORT_RANGE1_MAX 47 @@ -87,72 +88,15 @@ const int sfp_map[] = { 25,26,27,28,29,30,31,32, /*port 49~56 QSFP*/ 22,23}; /*port 57~58 SFP+ from CPU NIF.*/ -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -197,20 +141,20 @@ onlp_sfpi_is_present(int port) bus = (addr == 62) ? 12 : 18; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -332,12 +276,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -354,14 +298,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -369,7 +313,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -430,7 +374,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -441,7 +385,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -462,7 +406,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -480,7 +424,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -492,7 +436,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -536,7 +480,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -551,7 +495,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -572,7 +516,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -585,7 +529,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -605,7 +549,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -623,7 +567,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/make.mk b/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/make.mk index 5f1f189be..df8a7ed4e 100644 --- a/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/make.mk +++ b/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as7515_24x_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as7515_24x_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as7515_24x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as7515_24x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7515_24x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7515_24x ucli:x86_64_accton_as7515_24x +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as7515_24x_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c index 816e05140..d87b3abe5 100644 --- a/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c @@ -30,6 +30,7 @@ #include "x86_64_accton_as7515_24x_log.h" #include "platform_lib.h" #include +#include "log_ctrl.h" #define VALIDATE(_port) \ do { \ @@ -74,72 +75,15 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define MAX_PORT (NUM_OF_SFP_PORT - 1) -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -179,20 +123,20 @@ onlp_sfpi_is_present(int port) VALIDATE(port); if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, port+1) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port+1); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -320,13 +264,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -344,14 +288,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -359,7 +303,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -410,14 +354,14 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= 0 && port < 4) { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; } else { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, port+1) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -431,7 +375,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, port+1) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -442,7 +386,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, port+1) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write lpmode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -469,7 +413,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, port+1) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -481,7 +425,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, port+1) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -497,7 +441,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port < 4) { if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -505,7 +449,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_OK; } else { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, port+1) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -519,7 +463,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, port+1) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -530,7 +474,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, port+1) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read lpmode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/make.mk b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/make.mk index a6373b185..dac890b9e 100644 --- a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/make.mk +++ b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/make.mk @@ -4,6 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as7535_28xb_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as7535_28xb_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as7535_28xb_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as7535_28xb_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7535_28xb_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7535_28xb ucli:x86_64_accton_as7535_28xb + +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as7535_28xb_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c index 481b6748f..4a1205ea7 100644 --- a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as7535_28xb_int.h" #include "x86_64_accton_as7535_28xb_log.h" #include +#include "log_ctrl.h" #define VALIDATE(_port) \ do { \ @@ -100,73 +101,15 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define PORT_BUS_INDEX(port) (port_bus_index[port]) -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - MULTIRATE_UNABLE_TO_SET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -206,20 +149,20 @@ onlp_sfpi_is_present(int port) VALIDATE(port); if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -325,13 +268,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -349,14 +292,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -364,7 +307,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -420,7 +363,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= 0 && port <= 3) { if ((identifier = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0 ) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -428,7 +371,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -436,30 +379,30 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0 ) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0 ) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } @@ -471,7 +414,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -483,7 +426,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -491,7 +434,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } } else { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -505,7 +448,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -515,7 +458,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -534,7 +477,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (value == 0x0) { mbit_value = RESET_RATE_SELECT_BIT(mbit_value,3); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, MULTIRATE_OFFSET, mbit_value) < 0){ - syslog_ctrl(&log_mgmt[port], MULTIRATE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_MULTIRATE_UNABLE_TO_SET_STATUS, "Unable to write multirate status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -543,7 +486,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else if(value == 0x1) { mbit_value = SET_RATE_SELECT_BIT(mbit_value,3); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, MULTIRATE_OFFSET, mbit_value) < 0){ - syslog_ctrl(&log_mgmt[port], MULTIRATE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_MULTIRATE_UNABLE_TO_SET_STATUS, "Unable to write multirate status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -556,7 +499,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } } else { - syslog_ctrl(&log_mgmt[port], MULTIRATE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_MULTIRATE_UNABLE_TO_SET_STATUS, "Unable to write multirate status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -585,7 +528,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -597,7 +540,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -613,7 +556,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 3) { if ((identifier = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -621,7 +564,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -629,30 +572,30 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; @@ -665,7 +608,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -676,7 +619,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_OK; } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -685,7 +628,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* SFP */ if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -699,7 +642,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -710,7 +653,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/make.mk b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/make.mk index 3e09eade4..dadb09094 100644 --- a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/make.mk +++ b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as7712_32x_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as7712_32x_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as7712_32x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as7712_32x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7712_32x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7712_32x ucli:x86_64_accton_as7712_32x +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as7712_32x_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c index 8506de0af..27932102d 100644 --- a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c @@ -29,6 +29,7 @@ #include #include "platform_lib.h" #include +#include "log_ctrl.h" #define QSFP_PORT_MIN 0 #define QSFP_PORT_MAX 31 @@ -66,72 +67,15 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { /*QSFP Specific*/ #define QSFP_LPMODE 0x3 -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -171,20 +115,20 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -244,7 +188,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -299,7 +243,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -316,7 +260,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -333,7 +277,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -345,7 +289,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -389,7 +333,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -408,7 +352,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -425,7 +369,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/make.mk b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/make.mk index 7dd2df7a9..12395d011 100644 --- a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/make.mk +++ b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as7726_32x_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as7726_32x_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as7726_32x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as7726_32x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7726_32x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7726_32x ucli:x86_64_accton_as7726_32x +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as7726_32x_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c index 0ad15e8f1..eb6331a88 100755 --- a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as7726_32x_int.h" #include "x86_64_accton_as7726_32x_log.h" #include +#include "log_ctrl.h" #define SFP_PORT_MIN 32 #define SFP_PORT_MAX 33 @@ -83,72 +84,15 @@ int sfp_map_bus[] ={21, 22, 23, 24, 26, 25, 28, 27, 37, 38, 39, 40, 41, 42, 43, 44, 15, 16}; -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -202,20 +146,20 @@ onlp_sfpi_is_present(int port) bus = 11; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -317,12 +261,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -339,14 +283,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -354,7 +298,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -415,7 +359,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -426,7 +370,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -446,7 +390,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -464,7 +408,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -476,7 +420,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -518,7 +462,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -532,7 +476,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -553,7 +497,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -565,7 +509,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -585,7 +529,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -603,7 +547,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/make.mk b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/make.mk index cbf5a4d3e..778feee9c 100644 --- a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/make.mk +++ b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as7816_64x_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as7816_64x_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as7816_64x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as7816_64x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7816_64x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7816_64x ucli:x86_64_accton_as7816_64x +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as7816_64x_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c index 6b9981c08..03c14221f 100644 --- a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c @@ -28,6 +28,7 @@ #include #include "platform_lib.h" #include +#include "log_ctrl.h" #define QSFP_PORT_MIN 0 #define QSFP_PORT_MAX 63 @@ -68,72 +69,15 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { /*QSFP Specific*/ #define QSFP_LPMODE 0x3 -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -173,20 +117,20 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -242,7 +186,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) int size = 0; if(onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -303,7 +247,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disabled status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -321,7 +265,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -338,7 +282,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -350,7 +294,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -394,7 +338,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -414,7 +358,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -431,7 +375,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/make.mk b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/make.mk index 0a1eeeca2..2f10e2c1c 100644 --- a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/make.mk +++ b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as7926_40xfb_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as7926_40xfb_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as7926_40xfb_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as7926_40xfb_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7926_40xfb_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7926_40xfb ucli:x86_64_accton_as7926_40xfb +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as7926_40xfb_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c index 28097afea..a2eb9a0eb 100644 --- a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c @@ -28,6 +28,7 @@ #include #include "platform_lib.h" #include +#include "log_ctrl.h" #define NUM_OF_SFP_PORT 55 @@ -108,72 +109,15 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { /* OSFP IDENTIFIER Specific*/ #define QSFP_DD_IDENTIFIER 0x18 -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -231,20 +175,20 @@ onlp_sfpi_is_present(int port) } if (onlp_file_read_int(&present, path, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -291,12 +235,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) } if (onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Invalid file size(%d)", size); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Invalid file size(%d)", size); return ONLP_STATUS_E_INTERNAL; } @@ -353,7 +297,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -363,14 +307,14 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else{ identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -379,29 +323,29 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -412,7 +356,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -425,7 +369,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0 ){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -461,7 +405,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, "Unable to reset port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to reset port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -477,14 +421,14 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -494,7 +438,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -506,7 +450,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -518,7 +462,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value)< 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -561,7 +505,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -582,7 +526,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -592,14 +536,14 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -608,11 +552,11 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } @@ -621,17 +565,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; goto restore; @@ -639,7 +583,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -652,7 +596,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -689,7 +633,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -704,7 +648,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -712,7 +656,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4):Low power requset sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -724,7 +668,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/make.mk b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/make.mk index b49d29b76..c69d3b055 100644 --- a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/make.mk +++ b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as7946_30xb_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as7946_30xb_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as7946_30xb_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as7946_30xb_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7946_30xb_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7946_30xb ucli:x86_64_accton_as7946_30xb +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as7946_30xb_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c index 05511dda4..abe6a29fb 100644 --- a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c @@ -28,6 +28,7 @@ #include #include "platform_lib.h" #include +#include "log_ctrl.h" #define NUM_OF_SFP_PORT 30 #define MAX_PORT (NUM_OF_SFP_PORT - 1) @@ -90,72 +91,15 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define MODULE_TXDISABLE_MAIN_BOARD_CPLD1_FORMAT "/sys/bus/i2c/devices/12-0061/module_tx_disable_%d" #define MODULE_TXDISABLE_MAIN_BOARD_CPLD2_FORMAT "/sys/bus/i2c/devices/13-0062/module_tx_disable_%d" -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -209,20 +153,20 @@ onlp_sfpi_is_present(int port) } if (onlp_file_read_int(&present, path, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -277,12 +221,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) VALIDATE(port); if (onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Invalid file size(%d)", size); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Invalid file size(%d)", size); return ONLP_STATUS_E_INTERNAL; } @@ -299,20 +243,20 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -367,40 +311,40 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if(port >= 0 && port <= 25) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } } else { @@ -411,7 +355,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -422,7 +366,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -431,7 +375,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { path = MODULE_TXDISABLE_MAIN_BOARD_CPLD2_FORMAT; if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to set tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to set tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -456,7 +400,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -476,7 +420,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -519,7 +463,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -534,40 +478,40 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 25) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; } @@ -579,7 +523,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -590,7 +534,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { *value = (tx_dis & 0xf); @@ -600,7 +544,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } else { /* SFP */ path = MODULE_TXDISABLE_MAIN_BOARD_CPLD2_FORMAT; if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -625,7 +569,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -644,7 +588,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/make.mk b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/make.mk index 5e1d5c8ca..e6ee8e529 100644 --- a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/make.mk +++ b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as7946_74xkb_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as7946_74xkb_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as7946_74xkb_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as7946_74xkb_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7946_74xkb_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7946_74xkb ucli:x86_64_accton_as7946_74xkb +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as7946_74xkb_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c index 7d19a89ca..84c3cd4c7 100644 --- a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c @@ -28,6 +28,7 @@ #include #include "platform_lib.h" #include +#include "log_ctrl.h" #define NUM_OF_SFP_PORT 74 #define MAX_PORT (NUM_OF_SFP_PORT - 1) @@ -98,72 +99,15 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define MODULE_TXDISABLE_MAIN_BOARD_CPLD2_FORMAT "/sys/bus/i2c/devices/13-0062/module_tx_disable_%d" #define MODULE_TXDISABLE_MAIN_BOARD_CPLD3_FORMAT "/sys/bus/i2c/devices/16-0063/module_tx_disable_%d" -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -220,20 +164,20 @@ onlp_sfpi_is_present(int port) } if (onlp_file_read_int(&present, path, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -291,12 +235,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) VALIDATE(port); if (onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Invalid file size(%d)", size); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Invalid file size(%d)", size); return ONLP_STATUS_E_INTERNAL; } @@ -313,20 +257,20 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -381,40 +325,40 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if(port >= 0 && port <= 9) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } } else { @@ -425,7 +369,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { rv = (rv == ONLP_STATUS_E_UNSUPPORTED) ? rv : ONLP_STATUS_E_INTERNAL; @@ -435,7 +379,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -456,7 +400,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, "Unable to set tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to set tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -484,7 +428,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -501,7 +445,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -546,7 +490,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -561,40 +505,40 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 9) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; } @@ -606,7 +550,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -617,7 +561,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { *value = (tx_dis & 0xf); @@ -639,7 +583,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -667,7 +611,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -685,7 +629,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; diff --git a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/make.mk b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/make.mk index 2a274b718..c318df5a4 100755 --- a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/make.mk +++ b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as9716_32d_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as9716_32d_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as9716_32d_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as9716_32d_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9716_32d_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9716_32d ucli:x86_64_accton_as9716_32d +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as9716_32d_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c index 13d671fb1..15632f415 100644 --- a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as9716_32d_int.h" #include "x86_64_accton_as9716_32d_log.h" #include +#include "log_ctrl.h" #define SFP_PORT_MIN 32 #define SFP_PORT_MAX 33 @@ -100,72 +101,15 @@ int sfp_map_bus[] ={25, 26, 27, 28, 29, 30, 31, 32, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58}; -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -226,20 +170,20 @@ onlp_sfpi_is_present(int port) } if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -288,12 +232,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -310,14 +254,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -325,7 +269,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -392,7 +336,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -404,7 +348,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -412,7 +356,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -422,13 +366,13 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; @@ -436,19 +380,19 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; @@ -460,7 +404,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -474,7 +418,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0 ){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -494,7 +438,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -510,7 +454,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -519,7 +463,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -530,7 +474,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -545,7 +489,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -558,7 +502,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value)< 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -614,7 +558,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -628,7 +572,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -646,7 +590,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -657,7 +601,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -665,7 +609,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -675,12 +619,12 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; @@ -690,19 +634,19 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; @@ -711,7 +655,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -725,7 +669,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -747,7 +691,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to get reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -764,7 +708,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -773,7 +717,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4):Low power requset sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -786,7 +730,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/make.mk b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/make.mk index 95477e155..28614ac77 100644 --- a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/make.mk +++ b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as9726_32d_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as9726_32d_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as9726_32d_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as9726_32d_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9726_32d_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9726_32d ucli:x86_64_accton_as9726_32d +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as9726_32d_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c index 6231f1e4e..132ea893e 100644 --- a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c @@ -24,6 +24,7 @@ * ***********************************************************/ #include +#include "log_ctrl.h" #include #include @@ -98,72 +99,15 @@ int sfp_map_bus[] = {17, 18, 19, 20, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}; -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -213,12 +157,12 @@ int onlp_sfpi_is_present(int port) if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -228,21 +172,21 @@ int onlp_sfpi_is_present(int port) if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -362,13 +306,13 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -385,14 +329,14 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if (fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -400,7 +344,7 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -454,7 +398,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if(port >= 0 && port <= 31) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -462,7 +406,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -470,30 +414,30 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } @@ -505,7 +449,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -517,7 +461,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -528,7 +472,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) addr = 62; if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port + 1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to set tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -547,7 +491,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port + 1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to set reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -562,7 +506,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port + 1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to set LP mode to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -599,7 +543,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -614,7 +558,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -629,7 +573,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 31) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -637,7 +581,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -645,30 +589,30 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; @@ -681,7 +625,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -693,7 +637,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -705,7 +649,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) addr = 62; if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -724,7 +668,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port + 1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to get reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -739,7 +683,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port + 1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to get LP mode from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { diff --git a/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/make.mk b/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/make.mk index 7f23fb8a0..9747c76ef 100644 --- a/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/make.mk +++ b/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/make.mk @@ -1,10 +1,16 @@ ############################################################################### # -# +# # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as9736_64d_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as9736_64d_INTERNAL_INCLUDES := -I $(THIS_DIR)src +# module -> x86_64_accton_as9736_64d -> builds -> onlp -> as9736-64d -> x86-64 -> accton +ACCTON_COMMON := $(THIS_DIR)../../../../../common + +x86_64_accton_as9736_64d_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as9736_64d_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9736_64d_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9736_64d ucli:x86_64_accton_as9736_64d +# Pull in the shared accton helper library (log throttling, ...). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as9736_64d_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c index f59b20e1c..c18455555 100644 --- a/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c @@ -30,6 +30,7 @@ #include "x86_64_accton_as9736_64d_log.h" #include "platform_lib.h" #include +#include "log_ctrl.h" #define SFP_PORT_MIN 64 #define SFP_PORT_MAX 65 @@ -111,72 +112,15 @@ int sfp_map_bus[] = {17, 18, 19, 20, 21, 22, 23, 24, 49, 50}; #endif -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -224,20 +168,20 @@ int onlp_sfpi_is_present(int port) VALIDATE_PORT(port); if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -338,14 +282,14 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (port <= 31) { if (onlp_file_read(data, 256, &size, UDB_PORT_EEPROM_FORMAT, port) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } else { if (onlp_file_read(data, 256, &size, LDB_PORT_EEPROM_FORMAT, port-32) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -353,7 +297,7 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; @@ -371,14 +315,14 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if (fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -386,7 +330,7 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -514,7 +458,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port + 1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -526,7 +470,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { //QSFP identifier = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -534,7 +478,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_eeprom_readb(port, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -544,13 +488,13 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_eeprom_readb(port, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; @@ -558,19 +502,19 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; @@ -582,7 +526,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -596,7 +540,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value & 0xf; if (onlp_sfpi_eeprom_writeb(port, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -617,7 +561,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port + 1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -632,7 +576,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port + 1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -666,7 +610,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -680,7 +624,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -697,7 +641,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -709,7 +653,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -717,7 +661,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_eeprom_readb(port, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -727,12 +671,12 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_eeprom_readb(port, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; @@ -742,19 +686,19 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_eeprom_readb(port, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; @@ -763,7 +707,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -777,7 +721,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_TXDIS); if (tx_dis < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -799,7 +743,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port + 1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -814,7 +758,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port + 1)) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/make.mk b/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/make.mk index 1a8eba730..8fe0814b5 100644 --- a/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/make.mk +++ b/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as9737_32db_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as9737_32db_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as9737_32db_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as9737_32db_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9737_32db_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9737_32db ucli:x86_64_accton_as9737_32db +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as9737_32db_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c index b7d75efce..5a10f94c8 100644 --- a/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as9737_32db_int.h" #include "x86_64_accton_as9737_32db_log.h" #include +#include "log_ctrl.h" #define SFP_PORT_MIN 33 #define SFP_PORT_MAX 34 @@ -101,72 +102,15 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { /*QSFP Specific*/ #define QSFP_DD_IDENTIFIER 0x18 -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -217,20 +161,20 @@ onlp_sfpi_is_present(int port) } if (onlp_file_read_int(&present, path, port) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -249,13 +193,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -272,14 +216,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -287,7 +231,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -343,7 +287,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -352,7 +296,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -360,7 +304,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -368,29 +312,29 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -401,7 +345,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -416,7 +360,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) <0 ){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -437,7 +381,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) : MODULE_RESET_CPLD3_FORMAT; if (onlp_file_write_int(value, path, port) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -451,7 +395,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) : MODULE_LPMODE_CPLD3_FORMAT; if (onlp_file_write_int(value, path, port) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -482,7 +426,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) *value = 0; if (port >= 33 && port <= 34) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -495,7 +439,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -511,7 +455,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -519,7 +463,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -527,7 +471,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -535,12 +479,12 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to read tx_disabled status from port(%d) : read support control from eeprom fail", port); rv = support_ctrls; goto restore; @@ -550,17 +494,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); rv = tx_disable; goto restore; @@ -568,7 +512,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -583,7 +527,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -604,7 +548,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) : MODULE_RESET_CPLD3_FORMAT; if (onlp_file_read_int(value, path, port) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -618,7 +562,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) : MODULE_LPMODE_CPLD3_FORMAT; if (onlp_file_read_int(value, path, port) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/make.mk b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/make.mk index 132db709d..9a5b00178 100644 --- a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/make.mk +++ b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/make.mk @@ -4,6 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as9817_64_nb_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as9817_64_nb_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../common +x86_64_accton_as9817_64_nb_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as9817_64_nb_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9817_64_nb_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9817_64_nb ucli:x86_64_accton_as9817_64_nb + +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as9817_64_nb_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c index 5ae7477f4..d57d81c6a 100644 --- a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as9817_64_nb_int.h" #include "x86_64_accton_as9817_64_nb_log.h" #include +#include "log_ctrl.h" #define SFP_PORT_MIN 65 #define SFP_PORT_MAX 66 @@ -103,72 +104,15 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define PORT_BUS_INDEX(port) (port_bus_index[port-1]) -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -207,20 +151,20 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, port) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -238,12 +182,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -260,14 +204,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -275,7 +219,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -328,7 +272,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -336,7 +280,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { //QSFP identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -347,7 +291,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -355,29 +299,29 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -388,7 +332,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -403,7 +347,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case QSFP_PLUS_IDENTIFIER:{ value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) <0 ){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -423,7 +367,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_RESET_STATE: { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -432,7 +376,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_LP_MODE: { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -461,7 +405,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) *value = 0; if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -471,7 +415,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_FAULT: { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -483,7 +427,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -491,7 +435,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -502,7 +446,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -510,12 +454,12 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to read tx_disabled status from port(%d) : read control from eeprom fail", port); rv = support_ctrls; goto restore; @@ -525,17 +469,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); rv = tx_disable; goto restore; @@ -543,7 +487,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -559,7 +503,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case QSFP_PLUS_IDENTIFIER:{ tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -580,7 +524,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RESET_STATE: { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -589,7 +533,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_LP_MODE: { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/make.mk b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/make.mk index a353a86a4..5d1f26f6b 100644 --- a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/make.mk +++ b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/make.mk @@ -4,6 +4,13 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as9817_64_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as9817_64_INTERNAL_INCLUDES := -I $(THIS_DIR)src +# module -> x86_64_accton_as9817_64 -> src -> as9817-64 -> x86-64 -> accton +ACCTON_COMMON := $(THIS_DIR)../../../../common + +x86_64_accton_as9817_64_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as9817_64_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9817_64_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9817_64 ucli:x86_64_accton_as9817_64 + +# Pull in the shared accton helper library (log throttling, ...). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as9817_64_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c index 237c11dc0..aa91e2cea 100644 --- a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as9817_64_int.h" #include "x86_64_accton_as9817_64_log.h" #include +#include "log_ctrl.h" #define SFP_PORT_MIN 65 #define SFP_PORT_MAX 66 @@ -105,72 +106,15 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define OSFP_IDENTIFIER 0x19 -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -209,20 +153,20 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, port) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -240,13 +184,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -263,14 +207,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -278,7 +222,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -331,7 +275,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -339,7 +283,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { //QSFP identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; @@ -351,7 +295,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -359,30 +303,30 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -393,7 +337,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -409,7 +353,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) <0 ){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; @@ -433,7 +377,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -444,7 +388,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -474,7 +418,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) *value = 0; if (port >= 65 && port <= 66) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -487,7 +431,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -503,7 +447,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -511,7 +455,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; @@ -523,7 +467,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -531,13 +475,13 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to read tx_disabled status from port(%d) : read control from eeprom fail", port); rv = support_ctrls; @@ -548,19 +492,19 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); rv = tx_disable; @@ -569,7 +513,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -585,7 +529,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case QSFP_PLUS_IDENTIFIER:{ //for as9817-64D tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; @@ -611,7 +555,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -622,7 +566,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, port) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/make.mk b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/make.mk index 2356e8fe7..468bc12ad 100644 --- a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/make.mk +++ b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as9926_24d_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as9926_24d_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as9926_24d_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as9926_24d_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9926_24d_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9926_24d ucli:x86_64_accton_as9926_24d +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as9926_24d_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c index a8fe4ad87..1043915e1 100644 --- a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as9926_24d_int.h" #include "x86_64_accton_as9926_24d_log.h" #include +#include "log_ctrl.h" #define SFP_PORT_MIN 24 #define SFP_PORT_MAX 25 @@ -98,72 +99,15 @@ /* OSFP IDENTIFIER Specific*/ #define QSFP_DD_IDENTIFIER 0x18 -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -204,20 +148,20 @@ onlp_sfpi_is_present(int port) int bus = (port < 16) ? 20 : 21; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, bus, addr, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -327,13 +271,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -350,14 +294,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -365,7 +309,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -423,7 +367,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, 21, 62, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -435,7 +379,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -443,7 +387,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Unable to write tx_disable status to port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -454,13 +398,13 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; @@ -468,19 +412,19 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; @@ -492,7 +436,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -506,7 +450,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0 ){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -530,7 +474,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int bus = (port < 16) ? 20 : 21; if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -548,7 +492,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -557,7 +501,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -568,7 +512,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -583,7 +527,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -596,7 +540,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value)< 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -641,7 +585,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, 21, 62, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -655,7 +599,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, 21, 62, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -673,7 +617,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, 21, 62, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -684,7 +628,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -692,7 +636,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Unable to read tx_disable status from port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -703,13 +647,13 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to read tx_disable status from port(%d): read support control from eeprom fail", port); rv = support_ctrls; @@ -720,19 +664,19 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; @@ -741,7 +685,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -755,7 +699,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0){ - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -781,7 +725,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int bus = (port < 16) ? 20 : 21; if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -799,7 +743,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -808,7 +752,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4):Low power requset sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -821,7 +765,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/make.mk b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/make.mk index e4dbf4969..6a20d5fae 100644 --- a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/make.mk +++ b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/make.mk @@ -4,7 +4,11 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -x86_64_accton_as9926_24db_INCLUDES := -I $(THIS_DIR)inc -x86_64_accton_as9926_24db_INTERNAL_INCLUDES := -I $(THIS_DIR)src +ACCTON_COMMON := $(THIS_DIR)../../../../../common +x86_64_accton_as9926_24db_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc +x86_64_accton_as9926_24db_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9926_24db_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9926_24db ucli:x86_64_accton_as9926_24db +# Pull in the shared accton helper library (log throttling). +include $(ACCTON_COMMON)/src/make.mk +x86_64_accton_as9926_24db_LIBRARIES := accton_common diff --git a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c index 6dd9bd454..6bd7164d0 100644 --- a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c @@ -29,6 +29,7 @@ #include "x86_64_accton_as9926_24db_int.h" #include "x86_64_accton_as9926_24db_log.h" #include +#include "log_ctrl.h" #define PORT_BUS_INDEX(port) (port+9) @@ -106,72 +107,15 @@ #define MODULE_RXLOS_ALL_ATTR \ "/sys/devices/platform/as9926_24db_sfp/module_rxlos_all" -enum log_reason{ - PRESENT_UNABLE_TO_GET_STATUS, - EEPROM_UNABLE_TO_GET_DATA, - EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - DOM_UNABLE_TO_OPEN_EEPROM_FILE, - DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - DOM_UNABLE_TO_GET_EEPROM_DATA, - TX_DIS_UNABLE_TO_SET_STATUS, - TX_DIS_UNABLE_TO_GET_IDENTIFIER, - TX_DIS_UNABLE_TO_GET_MEM_MODEL, - TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - TX_DIS_UNABLE_TO_GET_CONTROL, - TX_DIS_UNABLE_TO_SET_BANK, - TX_DIS_UNABLE_TO_GET_STATUS, - LP_MODE_UNABLE_TO_GET_IDENTIFIER, - LP_MODE_UNABLE_TO_SET_STATUS, - LP_MODE_UNABLE_TO_GET_STATUS, - RESET_UNABLE_TO_SET_STATUS, - RESET_UNABLE_TO_GET_STATUS, - RX_LOS_UNABLE_TO_GET_STATUS, - TX_FAULT_UNABLE_TO_GET_STATUS, - LOG_REASON_COUNT, -}; - -struct sfp_log_ctrl { - int should_log; -}; - -struct sfp_log_mgmt { - int sfp_present_rec; - struct sfp_log_ctrl log_ctrl[LOG_REASON_COUNT]; -}; - static struct sfp_log_mgmt log_mgmt[MAX_PORT+1] = { [0 ... MAX_PORT] = { - .sfp_present_rec = ONLP_STATUS_E_INTERNAL, + .present_rec = ONLP_STATUS_E_INTERNAL, .log_ctrl = { - [0 ... LOG_REASON_COUNT - 1] = { .should_log = 1 } + [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } } } }; -void syslog_ctrl(struct sfp_log_mgmt *log_mgmt_ptr, int log_reason, const char *fmt, ...) { - char buf[256]; - va_list args; - - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - - if (log_mgmt_ptr->log_ctrl[log_reason].should_log) { - syslog(LOG_ERR, "%s", buf); - - log_mgmt_ptr->log_ctrl[log_reason].should_log = 0; - } -} - -void reset_log_ctrl(struct sfp_log_mgmt *log_mgmt_ptr) -{ - int i; - - for (i = 0; i < LOG_REASON_COUNT; i++) { - log_mgmt_ptr->log_ctrl[i].should_log = 1; - } -} - /************************************************************ * * SFPI Entry Points @@ -209,20 +153,20 @@ int onlp_sfpi_is_present(int port) if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, (port+1)) < 0) { - if (log_mgmt[port].sfp_present_rec != ONLP_STATUS_E_INTERNAL) { - reset_log_ctrl(&log_mgmt[port]); + if (log_mgmt[port].present_rec != ONLP_STATUS_E_INTERNAL) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = ONLP_STATUS_E_INTERNAL; + log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(&log_mgmt[port], PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } - if (present == 1 && present != log_mgmt[port].sfp_present_rec) { - reset_log_ctrl(&log_mgmt[port]); + if (present == 1 && present != log_mgmt[port].present_rec) { + reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); } - log_mgmt[port].sfp_present_rec = present; + log_mgmt[port].present_rec = present; return present; } @@ -346,13 +290,13 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(&log_mgmt[port], EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -368,14 +312,14 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -383,7 +327,7 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(&log_mgmt[port], DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -412,7 +356,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { /* SFP */ if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -423,14 +367,14 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { /* QSFP */ identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Unable to write tx_disable status to port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -440,29 +384,29 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -473,7 +417,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -485,7 +429,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP 28 or QSFP+ */ value = value & 0xf; if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -506,7 +450,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to set reset to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -523,14 +467,14 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if (lpmode_value < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -540,7 +484,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -551,7 +495,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP 28 or QSFP+ */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if (lpmode_value < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -561,7 +505,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_LPMODE; if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -630,7 +574,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -644,7 +588,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -659,7 +603,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -677,7 +621,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { /* SFP */ if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -688,14 +632,14 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP */ identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Unable to read tx_disable status from port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -705,12 +649,12 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to read tx_disable status from port(%d): read support control from eeprom fail", port); rv = support_ctrls; goto restore; @@ -720,17 +664,17 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; goto restore; @@ -738,7 +682,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -752,7 +696,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if (tx_dis < 0) { - syslog_ctrl(&log_mgmt[port], TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -776,7 +720,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -784,7 +728,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4): Low power request sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if (lpmode_value < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -796,7 +740,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if (lpmode_value < 0) { - syslog_ctrl(&log_mgmt[port], LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/common/inc/log_ctrl.h b/packages/platforms/accton/x86-64/common/inc/log_ctrl.h new file mode 100644 index 000000000..aad5b89c4 --- /dev/null +++ b/packages/platforms/accton/x86-64/common/inc/log_ctrl.h @@ -0,0 +1,106 @@ +/************************************************************ + * + * + * Copyright 2026 Accton Technology Corporation. + * + * Licensed under the Eclipse Public License, Version 1.0. + * + * + ************************************************************ + * + * Per-key syslog rate limiting shared by Accton ONLP driver + * modules (sfpi.c, fani.c, sysi.c, ...). + * + * Generic primitive: + * struct log_ctrl { int should_log; }; + * void syslog_ctrl(struct log_ctrl *arr, int reason, + * const char *fmt, ...); + * void reset_log_ctrl(struct log_ctrl *arr, int count); + * + * Each domain (SFP, fan, ...) defines its own reason enum plus a + * bookkeeping struct bundling a last-known state value with a + * per-reason log_ctrl[] array. The SFP domain lives in this header + * to avoid an extra include; new domains (fan, PSU, ...) should be + * appended below in the same style. + * + * Typical driver-side declaration (SFP example): + * + * static struct sfp_log_mgmt log_mgmt[MAX_PORT + 1] = { + * [0 ... MAX_PORT] = { + * .present_rec = ONLP_STATUS_E_INTERNAL, + * .log_ctrl = { + * [0 ... SFP_LOG_REASON_COUNT - 1] = { .should_log = 1 } + * } + * } + * }; + * + * syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + * "fmt %d", arg); + * reset_log_ctrl(log_mgmt[port].log_ctrl, SFP_LOG_REASON_COUNT); + * + ***********************************************************/ +#ifndef __ACCTON_COMMON_LOG_CTRL_H__ +#define __ACCTON_COMMON_LOG_CTRL_H__ + +/* --------------------------------------------------------------- + * Generic throttling primitive + * --------------------------------------------------------------- */ + +struct log_ctrl { + int should_log; +}; + +/* + * Emit one syslog(LOG_ERR, ...) line for arr[reason] if its + * should_log flag is set, then clear the flag. Subsequent calls + * with the same (arr, reason) key are silent until reset_log_ctrl() + * re-arms them. + * + * The caller owns the array and must guarantee 0 <= reason < count, + * where count is the size passed to reset_log_ctrl() below. + */ +void syslog_ctrl(struct log_ctrl *arr, int reason, const char *fmt, ...) + __attribute__((format(printf, 3, 4))); + +/* + * Re-arm every entry in arr[0..count-1] so the next syslog_ctrl() + * for each reason is emitted again. + */ +void reset_log_ctrl(struct log_ctrl *arr, int count); + +/* --------------------------------------------------------------- + * SFP domain + * --------------------------------------------------------------- */ + +enum sfp_log_reason { + SFP_PRESENT_UNABLE_TO_GET_STATUS, + SFP_EEPROM_UNABLE_TO_GET_DATA, + SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + SFP_TX_DIS_UNABLE_TO_SET_STATUS, + SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + SFP_TX_DIS_UNABLE_TO_SET_BANK, + SFP_TX_DIS_UNABLE_TO_GET_STATUS, + SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, + SFP_LP_MODE_UNABLE_TO_SET_STATUS, + SFP_LP_MODE_UNABLE_TO_GET_STATUS, + SFP_RESET_UNABLE_TO_SET_STATUS, + SFP_RESET_UNABLE_TO_GET_STATUS, + SFP_RX_LOS_UNABLE_TO_GET_STATUS, + SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + SFP_MULTIRATE_UNABLE_TO_SET_STATUS, + + SFP_LOG_REASON_COUNT, +}; + +struct sfp_log_mgmt { + int present_rec; + struct log_ctrl log_ctrl[SFP_LOG_REASON_COUNT]; +}; + +#endif /* __ACCTON_COMMON_LOG_CTRL_H__ */ diff --git a/packages/platforms/accton/x86-64/common/src/log_ctrl.c b/packages/platforms/accton/x86-64/common/src/log_ctrl.c new file mode 100644 index 000000000..5ce3e19a8 --- /dev/null +++ b/packages/platforms/accton/x86-64/common/src/log_ctrl.c @@ -0,0 +1,40 @@ +/************************************************************ + * + * + * Copyright 2026 Accton Technology Corporation. + * + * Licensed under the Eclipse Public License, Version 1.0. + * + * + ***********************************************************/ +#include +#include +#include + +#include "log_ctrl.h" + +void +syslog_ctrl(struct log_ctrl *arr, int reason, const char *fmt, ...) +{ + char buf[256]; + va_list ap; + + va_start(ap, fmt); + vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + + if (arr[reason].should_log) { + syslog(LOG_ERR, "%s", buf); + arr[reason].should_log = 0; + } +} + +void +reset_log_ctrl(struct log_ctrl *arr, int count) +{ + int i; + + for (i = 0; i < count; i++) { + arr[i].should_log = 1; + } +} diff --git a/packages/platforms/accton/x86-64/common/src/make.mk b/packages/platforms/accton/x86-64/common/src/make.mk new file mode 100644 index 000000000..47f9039ac --- /dev/null +++ b/packages/platforms/accton/x86-64/common/src/make.mk @@ -0,0 +1,9 @@ +############################################################################### +# +# Common library shared by Accton platform ONLP modules. +# +############################################################################### + +LIBRARY := accton_common +$(LIBRARY)_SUBDIR := $(dir $(lastword $(MAKEFILE_LIST))) +include $(BUILDER)/lib.mk From fcdf16f3863633feee04ce524075e07478d1633d Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Fri, 28 Aug 2026 17:25:16 +0800 Subject: [PATCH 4/6] [Accton] sfpi: consolidate sfp_log_reason categories by access mechanism Platforms: as4625-54t, as4630-54pe, as4630-54te, as5835-54t, as5835-54x, as5915-18x, as5916-54x, as5916-54xks, as5916-54xl, as7326-56x, as7515-24x, as7535-28xb, as7712-32x, as7726-32x, as7816-64x, as7926-40xfb, as7946-30xb, as7946-74xkb, as9716_32d, as9726-32d, as9736-64d, as9737-32db, as9817-64, as9817-64-nb, as9926-24d, as9926-24db. * Collapse the 21 per-control sfp_log_reason values into 8 buckets split by hardware target (CPLD/FPGA attribute vs. optical module EEPROM) crossed with access mechanism (sysfs file via fopen() / onlp_file_* vs. direct i2c via onlp_i2c_*). This reduces the number of independent syslog rate-limiting slots per port from 21 to 8 and gives each remaining slot a clear troubleshooting meaning. * New reason enum: SFP_SYSFS_READ_FAIL CPLD/FPGA attribute file read. SFP_SYSFS_WRITE_FAIL CPLD/FPGA attribute file write. SFP_EEPROM_SYSFS_READ_FAIL EEPROM data file read via sysfs (module_eeprom_%d or at24-style /sys/bus/i2c/devices/-0050/eeprom). SFP_EEPROM_SYSFS_WRITE_FAIL EEPROM data file write via sysfs. SFP_I2C_READ_TARGET_FAIL Direct i2c read of the final byte carrying the requested data (e.g. the QSFP tx_disable byte). SFP_I2C_WRITE_TARGET_FAIL Direct i2c write of the final byte. SFP_I2C_PREP_FAIL Direct i2c access to an auxiliary byte needed to reach a target byte (identifier, status byte, page/bank select, control byte). SFP_INVALID_DATA_SIZE Value-level anomaly where the I/O succeeded but the returned data violates an invariant (currently the eeprom size != 256 check). * Update every platform sfpi.c to emit the new reason values at each syslog_ctrl() call site based on which underlying access path was used. Existing log message strings that carried the sub-step detail (e.g. "read identifier from eeprom fail", "write bank to eeprom fail") are preserved so per-step context stays visible in the log even though the enum key is now coarser. * Refine the eeprom size-mismatch log to report the actual size returned instead of "size is different!", making the check easier to diagnose. Signed-off-by: Eric Yang --- .../module/src/sfpi.c | 20 ++--- .../module/src/sfpi.c | 32 ++++---- .../module/src/sfpi.c | 32 ++++---- .../module/src/sfpi.c | 24 +++--- .../module/src/sfpi.c | 32 ++++---- .../module/src/sfpi.c | 20 ++--- .../module/src/sfpi.c | 32 ++++---- .../module/src/sfpi.c | 38 +++++----- .../module/src/sfpi.c | 44 ++++++----- .../module/src/sfpi.c | 34 ++++----- .../module/src/sfpi.c | 32 ++++---- .../module/src/sfpi.c | 70 ++++++++--------- .../module/src/sfpi.c | 18 ++--- .../module/src/sfpi.c | 34 ++++----- .../module/src/sfpi.c | 18 ++--- .../module/src/sfpi.c | 68 ++++++++--------- .../module/src/sfpi.c | 62 +++++++-------- .../module/src/sfpi.c | 62 +++++++-------- .../module/src/sfpi.c | 76 +++++++++---------- .../module/src/sfpi.c | 66 ++++++++-------- .../module/src/sfpi.c | 66 ++++++++-------- .../module/src/sfpi.c | 64 ++++++++-------- .../module/src/sfpi.c | 64 ++++++++-------- .../x86_64_accton_as9817_64/module/src/sfpi.c | 67 ++++++++-------- .../module/src/sfpi.c | 76 +++++++++---------- .../module/src/sfpi.c | 76 +++++++++---------- .../accton/x86-64/common/inc/log_ctrl.h | 56 +++++++++----- 27 files changed, 651 insertions(+), 632 deletions(-) diff --git a/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c b/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c index 6be05ab6d..5a558d891 100644 --- a/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c @@ -110,7 +110,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -252,13 +252,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!" , port); return ONLP_STATUS_E_INTERNAL; @@ -278,7 +278,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -286,7 +286,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -295,7 +295,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -319,7 +319,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) , (port+1)) < 0) { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT_1 , (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to set tx_disable status to port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -353,7 +353,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) < 0) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT_1, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -369,7 +369,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) < 0) { if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT_1, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -388,7 +388,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) (port+1)) < 0) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT_1, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)" , port); return ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c index d458c5b8a..e79553691 100755 --- a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c @@ -126,7 +126,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -185,12 +185,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -208,14 +208,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -223,7 +223,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -277,7 +277,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port>=48 && port<=51) { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -286,7 +286,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -300,7 +300,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { if(port>=52 && port<=53) { if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -312,7 +312,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { if(port>=52 && port<=53) { if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write lpmode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -341,7 +341,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if(port>=48 && port<=51) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -354,7 +354,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if(port>=48 && port<=51) { if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -372,7 +372,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port>=48 && port<=51) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -381,7 +381,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -396,7 +396,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if(port>=52 && port<=53) { if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -410,7 +410,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if(port>=52 && port<=53) { if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read lpmode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c index 493f3ccc9..1aff77658 100644 --- a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c @@ -122,7 +122,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -235,12 +235,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -258,14 +258,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -273,7 +273,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -323,7 +323,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= 48 && port < 52) { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -332,7 +332,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -346,7 +346,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -357,7 +357,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write lpmode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -382,7 +382,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -393,7 +393,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_FAULT: { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -409,7 +409,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 48 && port < 52) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -418,7 +418,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -433,7 +433,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -444,7 +444,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read lpmode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c index 47e2c754b..516a72cf5 100644 --- a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c @@ -106,7 +106,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -179,12 +179,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -201,14 +201,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -216,7 +216,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -271,7 +271,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -289,7 +289,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -302,7 +302,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_LP_MODE: { if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -340,7 +340,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) tx_dis_val = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis_val < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -358,7 +358,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -371,7 +371,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_LP_MODE: { if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c index fa10eed8e..5ca5180da 100644 --- a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c @@ -135,7 +135,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -303,13 +303,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -326,14 +326,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -341,7 +341,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -395,7 +395,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -407,7 +407,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -426,7 +426,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -440,7 +440,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -474,7 +474,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -488,7 +488,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -505,7 +505,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1){ if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -517,7 +517,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_dis_val = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis_val < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -537,7 +537,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -551,7 +551,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, 3, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c index ced41a887..1e4dbfff4 100644 --- a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c @@ -100,7 +100,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -215,12 +215,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -237,14 +237,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -252,7 +252,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -302,7 +302,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to set tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -333,7 +333,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RX_LOS: { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -346,7 +346,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_FAULT: { if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -359,7 +359,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_DISABLE: { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c index a91640894..48e1a90f3 100644 --- a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c @@ -131,7 +131,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -272,12 +272,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -294,14 +294,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -309,7 +309,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -364,7 +364,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -376,7 +376,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -395,7 +395,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -409,7 +409,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -443,7 +443,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -457,7 +457,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -474,7 +474,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1){ if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -486,7 +486,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_dis_val = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis_val < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -506,7 +506,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -520,7 +520,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c index 3f2dd8857..6f649de85 100755 --- a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c @@ -121,7 +121,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -232,13 +232,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, (port+1)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -339,7 +339,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -351,7 +351,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if (onlp_sfpi_eeprom_writeb(port, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -372,7 +372,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -387,7 +387,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -421,7 +421,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -436,7 +436,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -453,7 +453,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1){ if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -465,7 +465,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_disable = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_TXDIS); if (tx_disable < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -488,7 +488,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -503,7 +503,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -576,7 +576,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin sprintf(file, PORT_EEPROM_FORMAT, (port+1)); fp = fopen(file, "r+"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -588,7 +588,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin seek_off = (port <= SFP_PORT_IDX_END) ? SFP_PAGE_OFFSET : QSFP_PAGE_OFFSET; if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -596,7 +596,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin int ret = fread(&page, 1, 1, fp); if (ret != 1) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -604,7 +604,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin seek_off = onlp_sfpi_dev_get_sysfs_off(port, devaddr, addr, page); if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -614,7 +614,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to write the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -624,7 +624,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c index 21d58d895..0b4ebf2cd 100755 --- a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c @@ -121,7 +121,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -232,13 +232,15 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, (port+1)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - "Unable to read eeprom from port(%d), size is different!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, + "EEPROM read on port(%d) returned unexpected size (%d, expected 256)", + port, size); return ONLP_STATUS_E_INTERNAL; } @@ -338,7 +340,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -350,7 +352,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if (onlp_sfpi_eeprom_writeb(port, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -371,7 +373,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -386,7 +388,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -420,7 +422,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -435,7 +437,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -452,7 +454,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1){ if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -464,7 +466,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_disable = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_TXDIS); if (tx_disable < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -486,7 +488,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -501,7 +503,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -571,10 +573,12 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin return ONLP_STATUS_E_PARAM; } + int io_reason = write_access ? SFP_EEPROM_SYSFS_WRITE_FAIL : SFP_EEPROM_SYSFS_READ_FAIL; + sprintf(file, PORT_EEPROM_FORMAT, (port+1)); fp = fopen(file, "r+"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, io_reason, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -586,7 +590,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin seek_off = (port <= SFP_PORT_IDX_END) ? SFP_PAGE_OFFSET : QSFP_PAGE_OFFSET; if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, io_reason, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -594,7 +598,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin int ret = fread(&page, 1, 1, fp); if (ret != 1) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, io_reason, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -602,7 +606,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin seek_off = onlp_sfpi_dev_get_sysfs_off(port, devaddr, addr, page); if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, io_reason, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -612,7 +616,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, io_reason, "Unable to write the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -622,7 +626,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, io_reason, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c index dc5714c16..59785061c 100644 --- a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c @@ -146,7 +146,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -276,12 +276,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -298,14 +298,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -313,7 +313,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -374,7 +374,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -385,7 +385,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -406,7 +406,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -424,7 +424,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -436,7 +436,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -480,7 +480,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -495,7 +495,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -516,7 +516,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -529,7 +529,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -549,7 +549,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -567,7 +567,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c index d87b3abe5..909612e83 100644 --- a/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c @@ -128,7 +128,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port+1); return ONLP_STATUS_E_INTERNAL; } @@ -264,13 +264,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -288,14 +288,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -303,7 +303,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -354,14 +354,14 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= 0 && port < 4) { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; } else { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, port+1) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -375,7 +375,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, port+1) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -386,7 +386,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, port+1) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write lpmode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -413,7 +413,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, port+1) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -425,7 +425,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, port+1) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -441,7 +441,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port < 4) { if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -449,7 +449,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_OK; } else { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, port+1) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -463,7 +463,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, port+1) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -474,7 +474,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, port+1) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read lpmode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c index 4a1205ea7..c1ad24c45 100644 --- a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c @@ -154,7 +154,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -268,13 +268,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -292,14 +292,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -307,7 +307,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -363,7 +363,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= 0 && port <= 3) { if ((identifier = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0 ) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -371,7 +371,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -379,30 +379,30 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0 ) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0 ) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } @@ -414,7 +414,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -426,7 +426,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -434,7 +434,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } } else { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -448,7 +448,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -458,7 +458,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write LP mode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -477,7 +477,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (value == 0x0) { mbit_value = RESET_RATE_SELECT_BIT(mbit_value,3); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, MULTIRATE_OFFSET, mbit_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_MULTIRATE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write multirate status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -486,7 +486,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else if(value == 0x1) { mbit_value = SET_RATE_SELECT_BIT(mbit_value,3); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, MULTIRATE_OFFSET, mbit_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_MULTIRATE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write multirate status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -499,7 +499,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } } else { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_MULTIRATE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write multirate status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -528,7 +528,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -540,7 +540,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -556,7 +556,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 3) { if ((identifier = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -564,7 +564,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -572,30 +572,30 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; @@ -608,7 +608,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -619,7 +619,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_OK; } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -628,7 +628,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* SFP */ if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -642,7 +642,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -653,7 +653,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read LP mode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c index 27932102d..a49a03936 100644 --- a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c @@ -120,7 +120,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -188,7 +188,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -243,7 +243,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -260,7 +260,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -277,7 +277,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -289,7 +289,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -333,7 +333,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -352,7 +352,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -369,7 +369,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c index eb6331a88..7f34f8bbd 100755 --- a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c @@ -151,7 +151,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -261,12 +261,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -283,14 +283,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -298,7 +298,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -359,7 +359,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -370,7 +370,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -390,7 +390,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -408,7 +408,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -420,7 +420,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -462,7 +462,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -476,7 +476,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -497,7 +497,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -509,7 +509,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -529,7 +529,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -547,7 +547,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c index 03c14221f..2b57e218c 100644 --- a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c @@ -122,7 +122,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -186,7 +186,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) int size = 0; if(onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -247,7 +247,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disabled status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -265,7 +265,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -282,7 +282,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -294,7 +294,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -338,7 +338,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -358,7 +358,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RESET: { if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -375,7 +375,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c index a2eb9a0eb..a79576372 100644 --- a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c @@ -180,7 +180,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -235,12 +235,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) } if (onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Invalid file size(%d)", size); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Invalid file size(%d)", size); return ONLP_STATUS_E_INTERNAL; } @@ -297,7 +297,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -307,14 +307,14 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else{ identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -323,29 +323,29 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Unable to write tx_disable status to port(%d): write page to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -356,7 +356,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -369,7 +369,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0 ){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -405,7 +405,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to reset port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to reset port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -421,14 +421,14 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -438,7 +438,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -450,7 +450,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -462,7 +462,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value)< 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -505,7 +505,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -526,7 +526,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -536,14 +536,14 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -552,11 +552,11 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } @@ -565,17 +565,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; goto restore; @@ -583,7 +583,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -596,7 +596,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -633,7 +633,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -648,7 +648,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -656,7 +656,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4):Low power requset sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -668,7 +668,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c index abe6a29fb..8da3bd6ef 100644 --- a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c @@ -158,7 +158,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -221,12 +221,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) VALIDATE(port); if (onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Invalid file size(%d)", size); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Invalid file size(%d)", size); return ONLP_STATUS_E_INTERNAL; } @@ -243,20 +243,20 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -311,40 +311,40 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if(port >= 0 && port <= 25) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } } else { @@ -355,7 +355,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -366,7 +366,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -375,7 +375,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { path = MODULE_TXDISABLE_MAIN_BOARD_CPLD2_FORMAT; if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to set tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to set tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -400,7 +400,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -420,7 +420,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -463,7 +463,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -478,40 +478,40 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 25) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; } @@ -523,7 +523,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -534,7 +534,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { *value = (tx_dis & 0xf); @@ -544,7 +544,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } else { /* SFP */ path = MODULE_TXDISABLE_MAIN_BOARD_CPLD2_FORMAT; if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -569,7 +569,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -588,7 +588,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c index 84c3cd4c7..78ec2d42a 100644 --- a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c @@ -169,7 +169,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -235,12 +235,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) VALIDATE(port); if (onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, "Invalid file size(%d)", size); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Invalid file size(%d)", size); return ONLP_STATUS_E_INTERNAL; } @@ -257,20 +257,20 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -325,40 +325,40 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if(port >= 0 && port <= 9) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } } else { @@ -369,7 +369,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { rv = (rv == ONLP_STATUS_E_UNSUPPORTED) ? rv : ONLP_STATUS_E_INTERNAL; @@ -379,7 +379,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -400,7 +400,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, "Unable to set tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to set tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -428,7 +428,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, "Unable to write reset status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -445,7 +445,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if (onlp_file_write_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, "Unable to write LP mode status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -490,7 +490,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, "Unable to read rx_loss status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -505,40 +505,40 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 9) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; } @@ -550,7 +550,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -561,7 +561,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { *value = (tx_dis & 0xf); @@ -583,7 +583,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, "Unable to read tx_disabled status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -611,7 +611,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, "Unable to read reset status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; @@ -629,7 +629,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } if (onlp_file_read_int(value, path, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, "Unable to read LP mode status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } break; diff --git a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c index 15632f415..a6d8e3b45 100644 --- a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c @@ -175,7 +175,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -232,12 +232,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -254,14 +254,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -269,7 +269,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -336,7 +336,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -348,7 +348,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -356,7 +356,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -366,13 +366,13 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; @@ -380,19 +380,19 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; @@ -404,7 +404,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -418,7 +418,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0 ){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -438,7 +438,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -454,7 +454,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -463,7 +463,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -474,7 +474,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -489,7 +489,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -502,7 +502,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value)< 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -558,7 +558,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -572,7 +572,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -590,7 +590,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -601,7 +601,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -609,7 +609,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -619,12 +619,12 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; @@ -634,19 +634,19 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; @@ -655,7 +655,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -669,7 +669,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -691,7 +691,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to get reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -708,7 +708,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -717,7 +717,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4):Low power requset sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -730,7 +730,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c index 132ea893e..0ad5406ec 100644 --- a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c @@ -162,7 +162,7 @@ int onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -177,7 +177,7 @@ int onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -306,13 +306,13 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -329,14 +329,14 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if (fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -344,7 +344,7 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -398,7 +398,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if(port >= 0 && port <= 31) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -406,7 +406,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -414,30 +414,30 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } @@ -449,7 +449,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -461,7 +461,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -472,7 +472,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) addr = 62; if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port + 1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to set tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -491,7 +491,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port + 1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to set reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -506,7 +506,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port + 1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to set LP mode to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -543,7 +543,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -558,7 +558,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -573,7 +573,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 31) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -581,7 +581,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -589,30 +589,30 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; @@ -625,7 +625,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -637,7 +637,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -649,7 +649,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) addr = 62; if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -668,7 +668,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port + 1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to get reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -683,7 +683,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, bus, addr, (port + 1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to get LP mode from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { diff --git a/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c index c18455555..59f85fc7c 100644 --- a/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c @@ -173,7 +173,7 @@ int onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -282,14 +282,14 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (port <= 31) { if (onlp_file_read(data, 256, &size, UDB_PORT_EEPROM_FORMAT, port) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } else { if (onlp_file_read(data, 256, &size, LDB_PORT_EEPROM_FORMAT, port-32) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -297,7 +297,7 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; @@ -315,14 +315,14 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if (fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -330,7 +330,7 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -458,7 +458,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port + 1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -470,7 +470,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { //QSFP identifier = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -478,7 +478,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_eeprom_readb(port, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -488,13 +488,13 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_eeprom_readb(port, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; @@ -502,19 +502,19 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; @@ -526,7 +526,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -540,7 +540,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value & 0xf; if (onlp_sfpi_eeprom_writeb(port, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -561,7 +561,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port + 1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -576,7 +576,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, (port + 1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write LP mode status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -610,7 +610,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -624,7 +624,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -641,7 +641,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -653,7 +653,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -661,7 +661,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_eeprom_readb(port, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -671,12 +671,12 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_eeprom_readb(port, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; @@ -686,19 +686,19 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_eeprom_readb(port, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; @@ -707,7 +707,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -721,7 +721,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_TXDIS); if (tx_dis < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -743,7 +743,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port + 1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; @@ -758,7 +758,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, (port + 1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read LP mode status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c index 5a10f94c8..846eb1406 100644 --- a/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c @@ -166,7 +166,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -193,13 +193,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -216,14 +216,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -231,7 +231,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -287,7 +287,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -296,7 +296,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -304,7 +304,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -312,29 +312,29 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -345,7 +345,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -360,7 +360,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) <0 ){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -381,7 +381,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) : MODULE_RESET_CPLD3_FORMAT; if (onlp_file_write_int(value, path, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -395,7 +395,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) : MODULE_LPMODE_CPLD3_FORMAT; if (onlp_file_write_int(value, path, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write LP mode to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -426,7 +426,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) *value = 0; if (port >= 33 && port <= 34) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -439,7 +439,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -455,7 +455,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -463,7 +463,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -471,7 +471,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -479,12 +479,12 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : read support control from eeprom fail", port); rv = support_ctrls; goto restore; @@ -494,17 +494,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); rv = tx_disable; goto restore; @@ -512,7 +512,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -527,7 +527,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -548,7 +548,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) : MODULE_RESET_CPLD3_FORMAT; if (onlp_file_read_int(value, path, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -562,7 +562,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) : MODULE_LPMODE_CPLD3_FORMAT; if (onlp_file_read_int(value, path, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read LP mode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c index d57d81c6a..01a8efc04 100644 --- a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c @@ -156,7 +156,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -182,12 +182,12 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -204,14 +204,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -219,7 +219,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -272,7 +272,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -280,7 +280,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { //QSFP identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -291,7 +291,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -299,29 +299,29 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -332,7 +332,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -347,7 +347,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case QSFP_PLUS_IDENTIFIER:{ value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) <0 ){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -367,7 +367,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_RESET_STATE: { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -376,7 +376,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case ONLP_SFP_CONTROL_LP_MODE: { VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write LP mode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -405,7 +405,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) *value = 0; if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -415,7 +415,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_FAULT: { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -427,7 +427,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -435,7 +435,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -446,7 +446,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -454,12 +454,12 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : read control from eeprom fail", port); rv = support_ctrls; goto restore; @@ -469,17 +469,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); rv = tx_disable; goto restore; @@ -487,7 +487,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -503,7 +503,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case QSFP_PLUS_IDENTIFIER:{ tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -524,7 +524,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_RESET_STATE: { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -533,7 +533,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_LP_MODE: { VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read LP mode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c index aa91e2cea..81ac950b1 100644 --- a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c @@ -158,7 +158,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -184,14 +184,15 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - "Unable to read eeprom from port(%d), size is different!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, + "EEPROM read on port(%d) returned unexpected size (%d, expected 256)", + port, size); return ONLP_STATUS_E_INTERNAL; } @@ -207,14 +208,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -222,7 +223,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -275,7 +276,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -283,7 +284,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { //QSFP identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; @@ -295,7 +296,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -303,30 +304,30 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -337,7 +338,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -353,7 +354,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) <0 ){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; @@ -377,7 +378,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -388,7 +389,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_LPMODE_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write LP mode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -418,7 +419,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) *value = 0; if (port >= 65 && port <= 66) { if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -431,7 +432,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -447,7 +448,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -455,7 +456,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; @@ -467,7 +468,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -475,13 +476,13 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : read control from eeprom fail", port); rv = support_ctrls; @@ -492,19 +493,19 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); rv = tx_disable; @@ -513,7 +514,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -529,7 +530,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case QSFP_PLUS_IDENTIFIER:{ //for as9817-64D tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; @@ -555,7 +556,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -566,7 +567,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_LPMODE_FORMAT, port) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read LP mode status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c index 1043915e1..854af144b 100644 --- a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c @@ -153,7 +153,7 @@ onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -271,13 +271,13 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -294,14 +294,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -309,7 +309,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -367,7 +367,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { //SFP if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, 21, 62, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -379,7 +379,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -387,7 +387,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -398,13 +398,13 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; @@ -412,19 +412,19 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; @@ -436,7 +436,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -450,7 +450,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0 ){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -474,7 +474,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int bus = (port < 16) ? 20 : 21; if (onlp_file_write_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -492,7 +492,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -501,7 +501,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -512,7 +512,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -527,7 +527,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -540,7 +540,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value)< 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -585,7 +585,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, 21, 62, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -599,7 +599,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, 21, 62, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -617,7 +617,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if(present == 1) { if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, 21, 62, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -628,7 +628,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -636,7 +636,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -647,13 +647,13 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): read support control from eeprom fail", port); rv = support_ctrls; @@ -664,19 +664,19 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; @@ -685,7 +685,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -699,7 +699,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -725,7 +725,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int bus = (port < 16) ? 20 : 21; if (onlp_file_read_int(value, MODULE_RESET_FORMAT, bus, addr, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -743,7 +743,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -752,7 +752,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4):Low power requset sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -765,7 +765,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c index 6bd7164d0..26d553475 100644 --- a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c @@ -158,7 +158,7 @@ int onlp_sfpi_is_present(int port) } log_mgmt[port].present_rec = ONLP_STATUS_E_INTERNAL; - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_PRESENT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -290,13 +290,13 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_INVALID_DATA_SIZE, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -312,14 +312,14 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -327,7 +327,7 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -356,7 +356,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { /* SFP */ if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -367,14 +367,14 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { /* QSFP */ identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -384,29 +384,29 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -417,7 +417,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -429,7 +429,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP 28 or QSFP+ */ value = value & 0xf; if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -450,7 +450,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) VALIDATE_QSFP(port); if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, "Unable to set reset to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -467,14 +467,14 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if (lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -484,7 +484,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -495,7 +495,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP 28 or QSFP+ */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if (lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -505,7 +505,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_LPMODE; if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_SET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -574,7 +574,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_QSFP(port); if (onlp_file_read_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RESET_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -588,7 +588,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_RX_LOS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -603,7 +603,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) VALIDATE_SFP(port); if (onlp_file_read_int(value, MODULE_TXFAULT_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_FAULT_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -621,7 +621,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (port >= SFP_PORT_MIN && port <= SFP_PORT_MAX) { /* SFP */ if (onlp_file_read_int(value, MODULE_TXDISABLE_FORMAT, (port+1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -632,14 +632,14 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP */ identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -649,12 +649,12 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_CONTROL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): read support control from eeprom fail", port); rv = support_ctrls; goto restore; @@ -664,17 +664,17 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_BANK, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; goto restore; @@ -682,7 +682,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -696,7 +696,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if (tx_dis < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_TX_DIS_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -720,7 +720,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -728,7 +728,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4): Low power request sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if (lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -740,7 +740,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if (lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_LP_MODE_UNABLE_TO_GET_STATUS, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/common/inc/log_ctrl.h b/packages/platforms/accton/x86-64/common/inc/log_ctrl.h index aad5b89c4..364042fab 100644 --- a/packages/platforms/accton/x86-64/common/inc/log_ctrl.h +++ b/packages/platforms/accton/x86-64/common/inc/log_ctrl.h @@ -72,28 +72,42 @@ void reset_log_ctrl(struct log_ctrl *arr, int count); * SFP domain * --------------------------------------------------------------- */ +/* + * Reason categories are split by *hardware target* (CPLD/FPGA vs. optical + * module EEPROM) crossed with *access mechanism* (sysfs file vs. direct I2C + * ioctl): + * + * *_SYSFS_* : Failure reading/writing a CPLD/FPGA attribute + * file exposed by the platform driver + * (module_present, module_lp_mode, module_tx_disable, + * module_reset, module_rx_los, module_tx_fault, ...). + * *_EEPROM_SYSFS_* : Failure reading/writing an EEPROM data file + * exposed by a driver (module_eeprom_%d, or the + * at24-style /sys/bus/i2c/devices/-0050/eeprom). + * Content is optical module EEPROM data, but the + * access path is sysfs (fopen()+fread()/fwrite() or + * onlp_file_*). + * *_I2C_*_TARGET_* : Failure performing a direct-I2C access + * (onlp_sfpi_dev_readb/writeb -> onlp_i2c_readb/ + * writeb) to the final byte(s) that carry the + * requested data (e.g. the tx_disable byte in a + * QSFP module). + * *_I2C_PREP_* : Failure performing a direct-I2C access to an + * auxiliary byte needed to reach a target byte + * (identifier read, status byte read, page/bank + * select writes, control-byte read). + * *_INVALID_* : Value-level anomalies where the I/O succeeded but + * the returned data violates an invariant. + */ enum sfp_log_reason { - SFP_PRESENT_UNABLE_TO_GET_STATUS, - SFP_EEPROM_UNABLE_TO_GET_DATA, - SFP_EEPROM_UNABLE_TO_GET_DATA_SIZE_DIFF, - SFP_DOM_UNABLE_TO_OPEN_EEPROM_FILE, - SFP_DOM_UNABLE_TO_SET_FILE_POS_INDICATOR, - SFP_DOM_UNABLE_TO_GET_EEPROM_DATA, - SFP_TX_DIS_UNABLE_TO_SET_STATUS, - SFP_TX_DIS_UNABLE_TO_GET_IDENTIFIER, - SFP_TX_DIS_UNABLE_TO_GET_MEM_MODEL, - SFP_TX_DIS_UNABLE_TO_SET_EEPROM_PAGE, - SFP_TX_DIS_UNABLE_TO_GET_CONTROL, - SFP_TX_DIS_UNABLE_TO_SET_BANK, - SFP_TX_DIS_UNABLE_TO_GET_STATUS, - SFP_LP_MODE_UNABLE_TO_GET_IDENTIFIER, - SFP_LP_MODE_UNABLE_TO_SET_STATUS, - SFP_LP_MODE_UNABLE_TO_GET_STATUS, - SFP_RESET_UNABLE_TO_SET_STATUS, - SFP_RESET_UNABLE_TO_GET_STATUS, - SFP_RX_LOS_UNABLE_TO_GET_STATUS, - SFP_TX_FAULT_UNABLE_TO_GET_STATUS, - SFP_MULTIRATE_UNABLE_TO_SET_STATUS, + SFP_SYSFS_READ_FAIL, + SFP_SYSFS_WRITE_FAIL, + SFP_EEPROM_SYSFS_READ_FAIL, + SFP_EEPROM_SYSFS_WRITE_FAIL, + SFP_I2C_READ_TARGET_FAIL, + SFP_I2C_WRITE_TARGET_FAIL, + SFP_I2C_PREP_FAIL, + SFP_INVALID_DATA_SIZE, SFP_LOG_REASON_COUNT, }; From 159f39889cc774f7463113d3c461b9b06223f34f Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Tue, 1 Sep 2026 12:15:12 +0800 Subject: [PATCH 5/6] [Accton] sfpi: split EEPROM reasons into bulk / target-byte / prep Platforms: as4625-54t, as4630-54pe, as4630-54te, as5835-54t, as5835-54x, as5915-18x, as5916-54x, as5916-54xks, as5916-54xl, as7326-56x, as7515-24x, as7535-28xb, as7712-32x, as7726-32x, as7816-64x, as7926-40xfb, as7946-30xb, as7946-74xkb, as9716_32d, as9726-32d, as9736-64d, as9737-32db, as9817-64, as9817-64-nb, as9926-24d, as9926-24db. * Refine the EEPROM sfp_log_reason categories so that the QSFP / QSFP-DD control flows distinguish the auxiliary accesses from the final data access, instead of lumping every EEPROM error into one read/write bucket: SFP_EEPROM_READ_FAIL / SFP_EEPROM_WRITE_FAIL Bulk EEPROM access (full 256-byte page / DOM dump) with no single target-byte concept. SFP_EEPROM_READ_TARGET_BYTE_FAIL / SFP_EEPROM_WRITE_TARGET_BYTE_FAIL Access to the final byte carrying the requested data (e.g. the tx_disable byte). SFP_EEPROM_PREP_FAIL Access to an auxiliary byte needed to reach a target byte (identifier, status byte, page/bank select, control byte). * Drop the earlier sysfs-vs-i2c split in the EEPROM reasons: the access path (sysfs eeprom file vs. direct i2c ioctl) no longer changes the category, since a bad optical module / i2c path presents the same way to an operator regardless of how the driver reaches it. The SFP_EEPROM_SYSFS_* and SFP_I2C_* names are replaced by the unified SFP_EEPROM_* names above. * Fix a few call sites in the sysfs-backed EEPROM platforms (as5916-54xks, as5916-54xl, as9736-64d) that previously tagged single-byte EEPROM accesses with the CPLD-attribute SFP_SYSFS_* reasons; they now use the EEPROM target-byte / prep reasons. Signed-off-by: Eric Yang --- .../module/src/sfpi.c | 8 +-- .../module/src/sfpi.c | 12 ++-- .../module/src/sfpi.c | 12 ++-- .../module/src/sfpi.c | 12 ++-- .../module/src/sfpi.c | 12 ++-- .../module/src/sfpi.c | 8 +-- .../module/src/sfpi.c | 12 ++-- .../module/src/sfpi.c | 20 ++++--- .../module/src/sfpi.c | 8 +-- .../module/src/sfpi.c | 18 +++--- .../module/src/sfpi.c | 12 ++-- .../module/src/sfpi.c | 44 +++++++------- .../module/src/sfpi.c | 12 ++-- .../module/src/sfpi.c | 18 +++--- .../module/src/sfpi.c | 12 ++-- .../module/src/sfpi.c | 54 ++++++++--------- .../module/src/sfpi.c | 44 +++++++------- .../module/src/sfpi.c | 44 +++++++------- .../module/src/sfpi.c | 60 +++++++++---------- .../module/src/sfpi.c | 44 +++++++------- .../module/src/sfpi.c | 46 +++++++------- .../module/src/sfpi.c | 44 +++++++------- .../module/src/sfpi.c | 44 +++++++------- .../x86_64_accton_as9817_64/module/src/sfpi.c | 44 +++++++------- .../module/src/sfpi.c | 60 +++++++++---------- .../module/src/sfpi.c | 60 +++++++++---------- .../accton/x86-64/common/inc/log_ctrl.h | 45 +++++++------- 27 files changed, 405 insertions(+), 404 deletions(-) diff --git a/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c b/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c index 5a558d891..553341433 100644 --- a/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/src/sfpi.c @@ -252,7 +252,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -278,7 +278,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -286,7 +286,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)" , port); return ONLP_STATUS_E_INTERNAL; @@ -295,7 +295,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)" , port); return ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c index e79553691..5c1888381 100755 --- a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c @@ -185,7 +185,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -208,14 +208,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -223,7 +223,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -286,7 +286,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -381,7 +381,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c index 1aff77658..93be1c5a8 100644 --- a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sfpi.c @@ -235,7 +235,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -258,14 +258,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -273,7 +273,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -332,7 +332,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -418,7 +418,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } else { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c index 516a72cf5..bbab3b0af 100644 --- a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sfpi.c @@ -179,7 +179,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -201,14 +201,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -216,7 +216,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -271,7 +271,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -340,7 +340,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) tx_dis_val = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis_val < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c index 5ca5180da..e4d7b474b 100644 --- a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sfpi.c @@ -303,7 +303,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -326,14 +326,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -341,7 +341,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -407,7 +407,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -517,7 +517,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_dis_val = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis_val < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c index 1e4dbfff4..35226faf5 100644 --- a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sfpi.c @@ -215,7 +215,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -237,14 +237,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -252,7 +252,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c index 48e1a90f3..15fa0cc30 100644 --- a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sfpi.c @@ -272,7 +272,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -294,14 +294,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -309,7 +309,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -376,7 +376,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -486,7 +486,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_dis_val = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis_val < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c index 6f649de85..f15c6f85f 100755 --- a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sfpi.c @@ -232,7 +232,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, (port+1)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -351,7 +351,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if (onlp_sfpi_eeprom_writeb(port, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -465,7 +465,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_disable = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_TXDIS); if (tx_disable < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -573,10 +573,12 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin return ONLP_STATUS_E_PARAM; } + int io_reason = write_access ? SFP_EEPROM_WRITE_TARGET_BYTE_FAIL : SFP_EEPROM_READ_TARGET_BYTE_FAIL; + sprintf(file, PORT_EEPROM_FORMAT, (port+1)); fp = fopen(file, "r+"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, io_reason, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -588,7 +590,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin seek_off = (port <= SFP_PORT_IDX_END) ? SFP_PAGE_OFFSET : QSFP_PAGE_OFFSET; if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, io_reason, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -596,7 +598,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin int ret = fread(&page, 1, 1, fp); if (ret != 1) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, io_reason, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -604,7 +606,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin seek_off = onlp_sfpi_dev_get_sysfs_off(port, devaddr, addr, page); if (fseek(fp, seek_off, SEEK_SET) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, io_reason, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -614,7 +616,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, io_reason, "Unable to write the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -624,7 +626,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin fclose(fp); if (ret != size) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, io_reason, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c index 0b4ebf2cd..6b6cd0c14 100755 --- a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sfpi.c @@ -232,7 +232,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, (port+1)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -352,7 +352,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if (onlp_sfpi_eeprom_writeb(port, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -466,7 +466,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ tx_disable = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_TXDIS); if (tx_disable < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -573,7 +573,7 @@ static int onlp_sfpi_dev_read_write(int port, uint8_t devaddr, uint8_t addr, uin return ONLP_STATUS_E_PARAM; } - int io_reason = write_access ? SFP_EEPROM_SYSFS_WRITE_FAIL : SFP_EEPROM_SYSFS_READ_FAIL; + int io_reason = write_access ? SFP_EEPROM_WRITE_TARGET_BYTE_FAIL : SFP_EEPROM_READ_TARGET_BYTE_FAIL; sprintf(file, PORT_EEPROM_FORMAT, (port+1)); fp = fopen(file, "r+"); diff --git a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c index 59785061c..baca7e543 100644 --- a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sfpi.c @@ -276,7 +276,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -298,14 +298,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -313,7 +313,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -374,7 +374,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -424,7 +424,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -436,7 +436,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -516,7 +516,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -567,7 +567,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c index 909612e83..210b408ae 100644 --- a/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/src/sfpi.c @@ -264,7 +264,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -288,14 +288,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -303,7 +303,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -354,7 +354,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (port >= 0 && port < 4) { /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -441,7 +441,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port < 4) { if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c index c1ad24c45..7e43bea17 100644 --- a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sfpi.c @@ -268,7 +268,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -292,14 +292,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -307,7 +307,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -363,7 +363,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if (port >= 0 && port <= 3) { if ((identifier = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0 ) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -371,7 +371,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -379,30 +379,30 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0 ) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0 ) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } @@ -414,7 +414,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -426,7 +426,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -556,7 +556,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 3) { if ((identifier = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -564,7 +564,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -572,30 +572,30 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; @@ -608,7 +608,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -619,7 +619,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_OK; } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, XCVR_PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c index a49a03936..373d46371 100644 --- a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sfpi.c @@ -188,7 +188,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -243,7 +243,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -277,7 +277,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -289,7 +289,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -333,7 +333,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -369,7 +369,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c index 7f34f8bbd..c0620a509 100755 --- a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sfpi.c @@ -261,7 +261,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -283,14 +283,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -298,7 +298,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -359,7 +359,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value & 0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -408,7 +408,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -420,7 +420,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -497,7 +497,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -547,7 +547,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c index 2b57e218c..2577bf6a4 100644 --- a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sfpi.c @@ -186,7 +186,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) int size = 0; if(onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -247,7 +247,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disabled status to port(%d): write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -282,7 +282,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d):read LP mode value fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -294,7 +294,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d):write eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -338,7 +338,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -375,7 +375,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read LP mode status from port(%d): read eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c index a79576372..8ef114f09 100644 --- a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sfpi.c @@ -235,7 +235,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) } if (onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -307,14 +307,14 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else{ identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -323,29 +323,29 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -356,7 +356,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -369,7 +369,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0 ){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -421,14 +421,14 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -438,7 +438,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -450,7 +450,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -462,7 +462,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value)< 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -536,14 +536,14 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; } @@ -552,11 +552,11 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } @@ -565,17 +565,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; goto restore; @@ -583,7 +583,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -596,7 +596,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -648,7 +648,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -656,7 +656,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4):Low power requset sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -668,7 +668,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c index 8da3bd6ef..293b03917 100644 --- a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sfpi.c @@ -221,7 +221,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) VALIDATE(port); if (onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -243,20 +243,20 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -311,40 +311,40 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if(port >= 0 && port <= 25) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } } else { @@ -355,7 +355,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -366,7 +366,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -478,40 +478,40 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 25) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; } @@ -523,7 +523,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -534,7 +534,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { *value = (tx_dis & 0xf); diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c index 78ec2d42a..55b3bb803 100644 --- a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c @@ -235,7 +235,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) VALIDATE(port); if (onlp_file_read(data, 256, &size, PORT_FORMAT, PORT_BUS_INDEX(port), "eeprom") != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -257,20 +257,20 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -325,40 +325,40 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if(port >= 0 && port <= 9) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } } else { @@ -369,7 +369,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { rv = (rv == ONLP_STATUS_E_UNSUPPORTED) ? rv : ONLP_STATUS_E_INTERNAL; @@ -379,7 +379,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, "Unable to write tx_disable status to port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; @@ -505,40 +505,40 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 9) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (status_byte & QSFP_DD_FLAT_MEM) { return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to read Support Control on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; } @@ -550,7 +550,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } if (rv < 0) { @@ -561,7 +561,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, "Unable to read tx_disable status from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { *value = (tx_dis & 0xf); diff --git a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c index a6d8e3b45..5ffa3ee53 100644 --- a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/sfpi.c @@ -232,7 +232,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -254,14 +254,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -269,7 +269,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -348,7 +348,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -356,7 +356,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -366,13 +366,13 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; @@ -380,19 +380,19 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; @@ -404,7 +404,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -418,7 +418,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0 ){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -454,7 +454,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -463,7 +463,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -474,7 +474,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -489,7 +489,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -502,7 +502,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value)< 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -601,7 +601,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -609,7 +609,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -619,12 +619,12 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; @@ -634,19 +634,19 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; @@ -655,7 +655,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -669,7 +669,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -708,7 +708,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -717,7 +717,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4):Low power requset sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -730,7 +730,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c index 0ad5406ec..766e4d533 100644 --- a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sfpi.c @@ -306,7 +306,7 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -329,14 +329,14 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if (fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -344,7 +344,7 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -398,7 +398,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { if(port >= 0 && port <= 31) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Identifier, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -406,7 +406,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -414,30 +414,30 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to set Bank 0, unable to write tx_disable status to port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Failed to write tx_disable value(0x%02x) to Lane Control register on port(%d)", value, port); goto restore; } @@ -449,7 +449,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -461,7 +461,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP */ /* txdis valid bit(bit0-bit3), xxxx 1111 */ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, (value & 0xf)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -573,7 +573,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { if (port >= 0 && port <= 31) { if ((identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Identifier, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -581,7 +581,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (identifier == QSFP_DD_IDENTIFIER) { /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -589,30 +589,30 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to set Bank 0, unable to read tx_disable status from port(%d)", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Failed to read TX_DISABLE value from Lane Control register on port(%d)", port); rv = tx_dis; goto restore; @@ -625,7 +625,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if ((onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -637,7 +637,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } else { /* QSFP */ if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { diff --git a/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c index 59f85fc7c..d2de7d95c 100644 --- a/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/src/sfpi.c @@ -282,14 +282,14 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if (port <= 31) { if (onlp_file_read(data, 256, &size, UDB_PORT_EEPROM_FORMAT, port) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } else { if (onlp_file_read(data, 256, &size, LDB_PORT_EEPROM_FORMAT, port-32) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -315,14 +315,14 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, onlp_sfpi_map_bus_index(port)); fp = fopen(file, "r"); if (fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -330,7 +330,7 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -470,7 +470,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { //QSFP identifier = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -478,7 +478,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_eeprom_readb(port, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -488,13 +488,13 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_eeprom_readb(port, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; @@ -502,19 +502,19 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; @@ -526,7 +526,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -540,7 +540,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value & 0xf; if (onlp_sfpi_eeprom_writeb(port, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_WRITE_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -653,7 +653,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -661,7 +661,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_eeprom_readb(port, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -671,12 +671,12 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Advertising Page on port(%d)", port); goto restore; } if ((support_ctrls = onlp_sfpi_eeprom_readb(port, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Support Control on port(%d)", port); rv = support_ctrls; goto restore; @@ -686,19 +686,19 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); goto restore; } if ((tx_dis = onlp_sfpi_eeprom_readb(port, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; @@ -707,7 +707,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_eeprom_writeb(port, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_WRITE_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -721,7 +721,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_eeprom_readb(port, QSFP_EEPROM_OFFSET_TXDIS); if (tx_dis < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c index 846eb1406..726c939b1 100644 --- a/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/src/sfpi.c @@ -193,7 +193,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -216,14 +216,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -231,7 +231,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -296,7 +296,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -304,7 +304,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -312,29 +312,29 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -345,7 +345,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -360,7 +360,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) <0 ){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -463,7 +463,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -471,7 +471,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to read tx_disabled status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -479,12 +479,12 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : read support control from eeprom fail", port); rv = support_ctrls; goto restore; @@ -494,17 +494,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); rv = tx_disable; goto restore; @@ -512,7 +512,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -527,7 +527,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c index 01a8efc04..dff550469 100644 --- a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sfpi.c @@ -182,7 +182,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, "Unable to read eeprom from port(%d)", port); + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -204,14 +204,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -219,7 +219,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -280,7 +280,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { //QSFP identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -291,7 +291,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -299,29 +299,29 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -332,7 +332,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -347,7 +347,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case QSFP_PLUS_IDENTIFIER:{ value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) <0 ){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -435,7 +435,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -446,7 +446,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -454,12 +454,12 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : read control from eeprom fail", port); rv = support_ctrls; goto restore; @@ -469,17 +469,17 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); rv = tx_disable; goto restore; @@ -487,7 +487,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -503,7 +503,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case QSFP_PLUS_IDENTIFIER:{ tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c index 81ac950b1..c92f55f29 100644 --- a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sfpi.c @@ -184,7 +184,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -208,14 +208,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, MODULE_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -223,7 +223,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -284,7 +284,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { //QSFP identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; @@ -296,7 +296,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -304,30 +304,30 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -338,7 +338,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -354,7 +354,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* txdis valid bit(bit0-bit3), xxxx 1111 */ value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) <0 ){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; @@ -456,7 +456,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; @@ -468,7 +468,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int rv = ONLP_STATUS_OK; /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -476,13 +476,13 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_UNSUPPORTED; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : read control from eeprom fail", port); rv = support_ctrls; @@ -493,19 +493,19 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); goto restore; } if ((tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); rv = tx_disable; @@ -514,7 +514,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -530,7 +530,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case QSFP_PLUS_IDENTIFIER:{ //for as9817-64D tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_disable < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c index 854af144b..8dac23762 100644 --- a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sfpi.c @@ -271,7 +271,7 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) memset(data, 0, 256); if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -294,14 +294,14 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -309,7 +309,7 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -379,7 +379,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -387,7 +387,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -398,13 +398,13 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; @@ -412,19 +412,19 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; @@ -436,7 +436,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -450,7 +450,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) value = value&0xf; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0 ){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -492,7 +492,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -501,7 +501,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -512,7 +512,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -527,7 +527,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -540,7 +540,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value)< 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -628,7 +628,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -636,7 +636,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -647,13 +647,13 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): read support control from eeprom fail", port); rv = support_ctrls; @@ -664,19 +664,19 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; @@ -685,7 +685,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -699,7 +699,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if(tx_dis < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -743,7 +743,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if(identifier < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -752,7 +752,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4):Low power requset sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; @@ -765,7 +765,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if(lpmode_value < 0){ - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; diff --git a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c index 26d553475..24f988e65 100644 --- a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c +++ b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sfpi.c @@ -290,7 +290,7 @@ int onlp_sfpi_eeprom_read(int port, uint8_t data[256]) if(onlp_file_read(data, 256, &size, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)) != ONLP_STATUS_OK) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -312,14 +312,14 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) sprintf(file, PORT_EEPROM_FORMAT, PORT_BUS_INDEX(port)); fp = fopen(file, "r"); if(fp == NULL) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to open the eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (fseek(fp, 256, SEEK_CUR) != 0) { fclose(fp); - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to set the file position indicator of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -327,7 +327,7 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) int ret = fread(data, 1, 256, fp); fclose(fp); if (ret != 256) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_SYSFS_READ_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_FAIL, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -367,14 +367,14 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else { /* QSFP */ identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -384,29 +384,29 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = eeprom_control; goto restore; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, (value & 0xff))) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); goto restore; } @@ -417,7 +417,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -429,7 +429,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP 28 or QSFP+ */ value = value & 0xf; if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS, value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -467,14 +467,14 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if (lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -484,7 +484,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_DD_LPMODE; if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW, lpmode_value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -495,7 +495,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } else { /* QSFP 28 or QSFP+ */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if (lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -505,7 +505,7 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) else lpmode_value &= ~QSFP_LPMODE; if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE, lpmode_value) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_WRITE_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -632,14 +632,14 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP */ identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ /* Flat-memory CMIS modules do not implement page 01h/10h */ if ((status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; break; @@ -649,12 +649,12 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) break; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): read support control from eeprom fail", port); rv = support_ctrls; goto restore; @@ -664,17 +664,17 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); goto restore; } if ((rv = onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); goto restore; } if ((tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX)) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = tx_dis; goto restore; @@ -682,7 +682,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) restore: if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Failed to restore Page Select to Admin Info on port(%d)!", port); } @@ -696,7 +696,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) else { /* QSFP 28 or QSFP+ */ tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_TXDIS); if (tx_dis < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -720,7 +720,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (present == 1) { identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); if (identifier < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_PREP_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_PREP_FAIL, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -728,7 +728,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit4): Low power request sw */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW); if (lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -740,7 +740,7 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* lpmode valid bit(bit0):set LP/txdis mode bit(bit1):set low/high power mode */ lpmode_value = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_LPMODE); if (lpmode_value < 0) { - syslog_ctrl(log_mgmt[port].log_ctrl, SFP_I2C_READ_TARGET_FAIL, + syslog_ctrl(log_mgmt[port].log_ctrl, SFP_EEPROM_READ_TARGET_BYTE_FAIL, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } diff --git a/packages/platforms/accton/x86-64/common/inc/log_ctrl.h b/packages/platforms/accton/x86-64/common/inc/log_ctrl.h index 364042fab..8c200003f 100644 --- a/packages/platforms/accton/x86-64/common/inc/log_ctrl.h +++ b/packages/platforms/accton/x86-64/common/inc/log_ctrl.h @@ -73,40 +73,39 @@ void reset_log_ctrl(struct log_ctrl *arr, int count); * --------------------------------------------------------------- */ /* - * Reason categories are split by *hardware target* (CPLD/FPGA vs. optical - * module EEPROM) crossed with *access mechanism* (sysfs file vs. direct I2C - * ioctl): + * Reason categories: * * *_SYSFS_* : Failure reading/writing a CPLD/FPGA attribute * file exposed by the platform driver * (module_present, module_lp_mode, module_tx_disable, * module_reset, module_rx_los, module_tx_fault, ...). - * *_EEPROM_SYSFS_* : Failure reading/writing an EEPROM data file - * exposed by a driver (module_eeprom_%d, or the - * at24-style /sys/bus/i2c/devices/-0050/eeprom). - * Content is optical module EEPROM data, but the - * access path is sysfs (fopen()+fread()/fwrite() or - * onlp_file_*). - * *_I2C_*_TARGET_* : Failure performing a direct-I2C access - * (onlp_sfpi_dev_readb/writeb -> onlp_i2c_readb/ - * writeb) to the final byte(s) that carry the - * requested data (e.g. the tx_disable byte in a - * QSFP module). - * *_I2C_PREP_* : Failure performing a direct-I2C access to an - * auxiliary byte needed to reach a target byte - * (identifier read, status byte read, page/bank - * select writes, control-byte read). + * *_EEPROM_READ/WRITE_FAIL + * : Failure on a *bulk* EEPROM access - i.e. the full + * 256-byte page / DOM dump, where there is no single + * "target byte" concept. The access path may be a + * sysfs data file (module_eeprom_%d, at24-style + * /sys/bus/i2c/devices/-0050/eeprom) or direct + * i2c; the category does not distinguish them. + * *_EEPROM_*_TARGET_BYTE_* + * : Failure accessing the final byte(s) that carry the + * requested data (e.g. the tx_disable byte in a QSFP + * module), regardless of whether the path is a sysfs + * eeprom file or direct i2c. + * *_EEPROM_PREP_* : Failure accessing an auxiliary byte needed to + * reach a target byte (identifier, status byte, + * page/bank select, control byte), regardless of + * sysfs-vs-i2c access path. * *_INVALID_* : Value-level anomalies where the I/O succeeded but * the returned data violates an invariant. */ enum sfp_log_reason { SFP_SYSFS_READ_FAIL, SFP_SYSFS_WRITE_FAIL, - SFP_EEPROM_SYSFS_READ_FAIL, - SFP_EEPROM_SYSFS_WRITE_FAIL, - SFP_I2C_READ_TARGET_FAIL, - SFP_I2C_WRITE_TARGET_FAIL, - SFP_I2C_PREP_FAIL, + SFP_EEPROM_READ_FAIL, + SFP_EEPROM_WRITE_FAIL, + SFP_EEPROM_READ_TARGET_BYTE_FAIL, + SFP_EEPROM_WRITE_TARGET_BYTE_FAIL, + SFP_EEPROM_PREP_FAIL, SFP_INVALID_DATA_SIZE, SFP_LOG_REASON_COUNT, From d0e4c5eb44663b86176449464c4577bc115f439d Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Wed, 2 Sep 2026 15:37:52 +0800 Subject: [PATCH 6/6] [Accton] sfpi: move shared helper dir into common_lib/onlp_lib Platforms: as4625-54t, as4630-54pe, as4630-54te, as5835-54t, as5835-54x, as5915-18x, as5916-54x, as5916-54xks, as5916-54xl, as7326-56x, as7515-24x, as7535-28xb, as7712-32x, as7726-32x, as7816-64x, as7926-40xfb, as7946-30xb, as7946-74xkb, as9716_32d, as9726-32d, as9736-64d, as9737-32db, as9817-64, as9817-64-nb, as9926-24d, as9926-24db. * Move packages/platforms/accton/x86-64/common -> packages/platforms/accton/x86-64/common_lib/onlp_lib. The old "common" name was ambiguous next to the sibling directory "modules" (which holds shared *kernel* modules). The new layout makes room for a common_lib/ parent that groups all cross-platform helper code, with onlp_lib/ carrying ONLP userspace helpers and future siblings (e.g. kernel_lib/) able to sit next to it. * Update the ACCTON_COMMON path in each platform's module/make.mk to point at the new directory. The Make variable name (ACCTON_COMMON) and the produced library name (accton_common) are kept so no additional call-site changes are needed. Signed-off-by: Eric Yang --- .../onlp/builds/x86_64_accton_as4625_54t/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as4630_54pe/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as4630_54pe/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as5835_54t/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as5835_54x/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as5915_18x/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as5916_54x/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as5916_54xks/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as5916_54xl/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as7326_56x/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as7515_24x/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as7535_28xb/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as7712_32x/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as7726_32x/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as7816_64x/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as7926_40xfb/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as7946_30xb/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as7946_74xkb/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as9716_32d/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as9726_32d/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as9736_64d/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as9737_32db/module/make.mk | 2 +- .../as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/make.mk | 2 +- .../x86-64/as9817-64/src/x86_64_accton_as9817_64/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as9926_24d/module/make.mk | 2 +- .../onlp/builds/x86_64_accton_as9926_24db/module/make.mk | 2 +- .../x86-64/{common => common_lib/onlp_lib}/inc/log_ctrl.h | 0 .../x86-64/{common => common_lib/onlp_lib}/src/log_ctrl.c | 0 .../accton/x86-64/{common => common_lib/onlp_lib}/src/make.mk | 0 29 files changed, 26 insertions(+), 26 deletions(-) rename packages/platforms/accton/x86-64/{common => common_lib/onlp_lib}/inc/log_ctrl.h (100%) rename packages/platforms/accton/x86-64/{common => common_lib/onlp_lib}/src/log_ctrl.c (100%) rename packages/platforms/accton/x86-64/{common => common_lib/onlp_lib}/src/make.mk (100%) diff --git a/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/make.mk b/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/make.mk index 15a7c0235..824dc5b85 100644 --- a/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/make.mk +++ b/packages/platforms/accton/x86-64/as4625-54t/onlp/builds/x86_64_accton_as4625_54t/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as4625_54t_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as4625_54t_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as4625_54t_DEPENDMODULE_ENTRIES := init:x86_64_accton_as4625_54t ucli:x86_64_accton_as4625_54t diff --git a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk index 40d49e007..ef443766e 100755 --- a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk +++ b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as4630_54pe_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as4630_54pe_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as4630_54pe_DEPENDMODULE_ENTRIES := init:x86_64_accton_as4630_54pe ucli:x86_64_accton_as4630_54pe diff --git a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk index 16821a110..22954141d 100644 --- a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk +++ b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as4630_54te_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as4630_54te_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as4630_54te_DEPENDMODULE_ENTRIES := init:x86_64_accton_as4630_54te ucli:x86_64_accton_as4630_54te diff --git a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/make.mk b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/make.mk index 8e90f959f..88f0ddd76 100644 --- a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/make.mk +++ b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as5835_54t_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as5835_54t_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as5835_54t_DEPENDMODULE_ENTRIES := init:x86_64_accton_as5835_54t ucli:x86_64_accton_as5835_54t diff --git a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/make.mk b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/make.mk index d92127b0a..590b8fbc8 100644 --- a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/make.mk +++ b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as5835_54x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as5835_54x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as5835_54x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as5835_54x ucli:x86_64_accton_as5835_54x diff --git a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/make.mk b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/make.mk index 14ca3f80e..bf8e43aae 100644 --- a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/make.mk +++ b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/make.mk @@ -5,7 +5,7 @@ ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) # module -> x86_64_accton_as5915_18x -> builds -> onlp -> as5915-18x -> x86-64 -> accton -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as5915_18x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as5915_18x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc diff --git a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/make.mk b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/make.mk index 1e83929b3..82440dcf7 100644 --- a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/make.mk +++ b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as5916_54x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as5916_54x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as5916_54x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as5916_54x ucli:x86_64_accton_as5916_54x diff --git a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/make.mk b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/make.mk index 72263d1f4..77233d82c 100755 --- a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/make.mk +++ b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as5916_54xks_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as5916_54xks_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as5916_54xks_DEPENDMODULE_ENTRIES := init:x86_64_accton_as5916_54xks ucli:x86_64_accton_as5916_54xks diff --git a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/make.mk b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/make.mk index a7f1010bf..55ba7d93f 100755 --- a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/make.mk +++ b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as5916_54xl_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as5916_54xl_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as5916_54xl_DEPENDMODULE_ENTRIES := init:x86_64_accton_as5916_54xl ucli:x86_64_accton_as5916_54xl diff --git a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/make.mk b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/make.mk index e6e0a5415..beb32c064 100644 --- a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/make.mk +++ b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as7326_56x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as7326_56x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7326_56x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7326_56x ucli:x86_64_accton_as7326_56x diff --git a/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/make.mk b/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/make.mk index df8a7ed4e..d816eeb16 100644 --- a/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/make.mk +++ b/packages/platforms/accton/x86-64/as7515-24x/onlp/builds/x86_64_accton_as7515_24x/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as7515_24x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as7515_24x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7515_24x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7515_24x ucli:x86_64_accton_as7515_24x diff --git a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/make.mk b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/make.mk index dac890b9e..38848275b 100644 --- a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/make.mk +++ b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as7535_28xb_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as7535_28xb_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7535_28xb_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7535_28xb ucli:x86_64_accton_as7535_28xb diff --git a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/make.mk b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/make.mk index dadb09094..435f4fdf7 100644 --- a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/make.mk +++ b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as7712_32x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as7712_32x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7712_32x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7712_32x ucli:x86_64_accton_as7712_32x diff --git a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/make.mk b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/make.mk index 12395d011..bcea56666 100644 --- a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/make.mk +++ b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as7726_32x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as7726_32x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7726_32x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7726_32x ucli:x86_64_accton_as7726_32x diff --git a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/make.mk b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/make.mk index 778feee9c..0538187b9 100644 --- a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/make.mk +++ b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as7816_64x_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as7816_64x_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7816_64x_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7816_64x ucli:x86_64_accton_as7816_64x diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/make.mk b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/make.mk index 2f10e2c1c..addb40e32 100644 --- a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/make.mk +++ b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as7926_40xfb_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as7926_40xfb_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7926_40xfb_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7926_40xfb ucli:x86_64_accton_as7926_40xfb diff --git a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/make.mk b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/make.mk index c69d3b055..bdc6a9a79 100644 --- a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/make.mk +++ b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as7946_30xb_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as7946_30xb_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7946_30xb_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7946_30xb ucli:x86_64_accton_as7946_30xb diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/make.mk b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/make.mk index e6ee8e529..3139ffb56 100644 --- a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/make.mk +++ b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as7946_74xkb_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as7946_74xkb_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as7946_74xkb_DEPENDMODULE_ENTRIES := init:x86_64_accton_as7946_74xkb ucli:x86_64_accton_as7946_74xkb diff --git a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/make.mk b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/make.mk index c318df5a4..b285b0874 100755 --- a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/make.mk +++ b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as9716_32d_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as9716_32d_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9716_32d_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9716_32d ucli:x86_64_accton_as9716_32d diff --git a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/make.mk b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/make.mk index 28614ac77..4d476b3dd 100644 --- a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/make.mk +++ b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as9726_32d_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as9726_32d_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9726_32d_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9726_32d ucli:x86_64_accton_as9726_32d diff --git a/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/make.mk b/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/make.mk index 9747c76ef..6abc082b4 100644 --- a/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/make.mk +++ b/packages/platforms/accton/x86-64/as9736-64d/onlp/builds/x86_64_accton_as9736_64d/module/make.mk @@ -5,7 +5,7 @@ ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) # module -> x86_64_accton_as9736_64d -> builds -> onlp -> as9736-64d -> x86-64 -> accton -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as9736_64d_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as9736_64d_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc diff --git a/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/make.mk b/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/make.mk index 8fe0814b5..97d428f9e 100644 --- a/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/make.mk +++ b/packages/platforms/accton/x86-64/as9737-32db/onlp/builds/x86_64_accton_as9737_32db/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as9737_32db_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as9737_32db_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9737_32db_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9737_32db ucli:x86_64_accton_as9737_32db diff --git a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/make.mk b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/make.mk index 9a5b00178..fea6ea3a7 100644 --- a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/make.mk +++ b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../common_lib/onlp_lib x86_64_accton_as9817_64_nb_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as9817_64_nb_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9817_64_nb_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9817_64_nb ucli:x86_64_accton_as9817_64_nb diff --git a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/make.mk b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/make.mk index 5d1f26f6b..a7802af15 100644 --- a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/make.mk +++ b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/make.mk @@ -5,7 +5,7 @@ ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) # module -> x86_64_accton_as9817_64 -> src -> as9817-64 -> x86-64 -> accton -ACCTON_COMMON := $(THIS_DIR)../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../common_lib/onlp_lib x86_64_accton_as9817_64_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as9817_64_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc diff --git a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/make.mk b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/make.mk index 468bc12ad..f1cde2ee4 100644 --- a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/make.mk +++ b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as9926_24d_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as9926_24d_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9926_24d_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9926_24d ucli:x86_64_accton_as9926_24d diff --git a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/make.mk b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/make.mk index 6a20d5fae..a178063da 100644 --- a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/make.mk +++ b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/make.mk @@ -4,7 +4,7 @@ # ############################################################################### THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -ACCTON_COMMON := $(THIS_DIR)../../../../../common +ACCTON_COMMON := $(THIS_DIR)../../../../../common_lib/onlp_lib x86_64_accton_as9926_24db_INCLUDES := -I $(THIS_DIR)inc -I $(ACCTON_COMMON)/inc x86_64_accton_as9926_24db_INTERNAL_INCLUDES := -I $(THIS_DIR)src -I $(ACCTON_COMMON)/inc x86_64_accton_as9926_24db_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9926_24db ucli:x86_64_accton_as9926_24db diff --git a/packages/platforms/accton/x86-64/common/inc/log_ctrl.h b/packages/platforms/accton/x86-64/common_lib/onlp_lib/inc/log_ctrl.h similarity index 100% rename from packages/platforms/accton/x86-64/common/inc/log_ctrl.h rename to packages/platforms/accton/x86-64/common_lib/onlp_lib/inc/log_ctrl.h diff --git a/packages/platforms/accton/x86-64/common/src/log_ctrl.c b/packages/platforms/accton/x86-64/common_lib/onlp_lib/src/log_ctrl.c similarity index 100% rename from packages/platforms/accton/x86-64/common/src/log_ctrl.c rename to packages/platforms/accton/x86-64/common_lib/onlp_lib/src/log_ctrl.c diff --git a/packages/platforms/accton/x86-64/common/src/make.mk b/packages/platforms/accton/x86-64/common_lib/onlp_lib/src/make.mk similarity index 100% rename from packages/platforms/accton/x86-64/common/src/make.mk rename to packages/platforms/accton/x86-64/common_lib/onlp_lib/src/make.mk