From dcf7c85e1d64cc4015be5d47a6c5522e2ab815ae Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Fri, 12 Jun 2026 14:24:56 +0800 Subject: [PATCH 1/5] [Accton] Check TX_DISABLE support before access in onlp_sfpi_control_get/set platform: as7926-40xfb as9716_32d as9817-64nb as9817-64 as9926-24 merge from [Accton][as9726-32d] Check TX_DISABLE support before access in onlp_sfpi_control_get/set (#191) 1. Flat-memory CMIS modules (typically passive DACs / simple AOCs) only have lower memory + page 00h. The page select register is silently discarded, so a request for page 01h or 10h actually still reads page 00h vendor info, returning plausible-looking but meaningless bytes. 2. control_get previously did not check the TX Disable Supported advertising bit at all; it walked straight to page 10h and read byte 0x82. control_set checked the advertising bit but missed the flat-memory case. Both paths now: - Read lower-memory byte 0x02 bit 7 (Flat_mem) first. Flat-memory modules return ONLP_STATUS_E_UNSUPPORTED immediately, without touching the page select registers. - For paged modules, check the TX Disable Supported advertising bit on page 01h byte 0x9B bit 1, mirroring the existing set path. - control_get's restore block preserves E_UNSUPPORTED instead of overwriting it with E_INTERNAL. Verified on a real switch via libonlp.onlp_sfp_control_get(): an unsupported / flat-memory module now returns -10 (E_UNSUPPORTED) instead of a stale lane-mask byte. Signed-off-by: Eric Yang --- .../module/src/sfpi.c | 51 ++++++++++-- .../module/src/sfpi.c | 51 ++++++++++-- .../module/src/sfpi.c | 59 ++++++++++++-- .../x86_64_accton_as9817_64/module/src/sfpi.c | 70 +++++++++++++++-- .../module/src/sfpi.c | 77 +++++++++++++++---- 5 files changed, 267 insertions(+), 41 deletions(-) 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 3062f05ad..37f76d12c 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 @@ -99,6 +99,8 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define QSFP_DD_PAGE_ADMIN_INFO 0x0 #define QSFP_DD_PAGE_ADVERTISING 0x1 #define QSFP_DD_PAGE_LANE_CTRL 0x10 +#define QSFP_DD_LOWER_OFFSET_STATUS 0x02 +#define QSFP_DD_FLAT_MEM 0x80 /* byte 0x02 bit 7 */ #define QSFP_DD_P01H_TX_DISABLE_SUPPORT 0x2 #define QSFP_DD_LPMODE 0x10 @@ -260,6 +262,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int present = 0; int lpmode_value = 0; int identifier = 0; + int status_byte = 0; int eeprom_control; VALIDATE_PORT(port); @@ -287,7 +290,16 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ - if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ + /* 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) { + AIM_LOG_ERROR("Failed to read Status byte, unable to write tx_disable status to port(%d)\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (status_byte & QSFP_DD_FLAT_MEM) { + AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -458,6 +470,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int present = 0; int lpmode_value = 0; int identifier = 0; + int status_byte = 0; + int support_ctrls = 0; int tx_dis = 0; VALIDATE_PORT(port); @@ -503,14 +517,39 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ - if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + /* 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) { + AIM_LOG_ERROR("Failed to read Status byte, unable to read tx_disable status from port(%d)\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (status_byte & QSFP_DD_FLAT_MEM) { + AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; } - else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0 ){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", - port); + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0){ + AIM_LOG_ERROR("Failed to switch to Advertising Page on port(%d)\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0){ + AIM_LOG_ERROR("Failed to read Support Control on port(%d)\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (!(support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT)) { + AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Failed to set Bank 0 on port(%d)\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0){ + AIM_LOG_ERROR("Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)\r\n", + QSFP_DD_PAGE_LANE_CTRL, port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -521,7 +560,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) rv = ONLP_STATUS_E_INTERNAL; } else{ - *value = tx_dis; + *value = (tx_dis & 0xff); rv = ONLP_STATUS_OK; } } 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 e1c0736cf..7607512be 100755 --- 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 @@ -85,6 +85,8 @@ #define QSFP_DD_PAGE_ADMIN_INFO 0x0 #define QSFP_DD_PAGE_ADVERTISING 0x1 #define QSFP_DD_PAGE_LANE_CTRL 0x10 +#define QSFP_DD_LOWER_OFFSET_STATUS 0x02 +#define QSFP_DD_FLAT_MEM 0x80 /* byte 0x02 bit 7 */ #define QSFP_DD_P01H_TX_DISABLE_SUPPORT 0x2 #define QSFP_DD_LPMODE 0x10 @@ -287,6 +289,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int present = 0; int lpmode_value = 0; int identifier = 0; + int status_byte = 0; int eeprom_control; VALIDATE_PORT(port); @@ -324,7 +327,16 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ - if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ + /* 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) { + AIM_LOG_ERROR("Failed to read Status byte, unable to write tx_disable status to port(%d)\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (status_byte & QSFP_DD_FLAT_MEM) { + AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -482,6 +494,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int present = 0; int lpmode_value = 0; int identifier = 0; + int status_byte = 0; + int support_ctrls = 0; int tx_dis = 0; VALIDATE_PORT(port); @@ -546,14 +560,39 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ - if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + /* 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) { + AIM_LOG_ERROR("Failed to read Status byte, unable to read tx_disable status from port(%d)\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (status_byte & QSFP_DD_FLAT_MEM) { + AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; } - else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0 ){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", - port); + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0){ + AIM_LOG_ERROR("Failed to switch to Advertising Page on port(%d)\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0){ + AIM_LOG_ERROR("Failed to read Support Control on port(%d)\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (!(support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT)) { + AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Failed to set Bank 0 on port(%d)\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0){ + AIM_LOG_ERROR("Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)\r\n", + QSFP_DD_PAGE_LANE_CTRL, port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -564,7 +603,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) rv = ONLP_STATUS_E_INTERNAL; } else{ - *value = tx_dis; + *value = (tx_dis & 0xff); rv = ONLP_STATUS_OK; } } 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 9da75efe1..6703721e1 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 @@ -81,6 +81,8 @@ #define QSFP_DD_PAGE_ADMIN_INFO 0x0 #define QSFP_DD_PAGE_ADVERTISING 0x1 #define QSFP_DD_PAGE_LANE_CTRL 0x10 +#define QSFP_DD_LOWER_OFFSET_STATUS 0x02 +#define QSFP_DD_FLAT_MEM 0x80 /* byte 0x02 bit 7 */ #define QSFP_DD_P01H_TX_DISABLE_SUPPORT 0x2 /* OSFP IDENTIFIER Specific*/ @@ -232,6 +234,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { int present = 0; int identifier = 0; + int status_byte = 0; int eeprom_control; VALIDATE_PORT(port); @@ -257,6 +260,15 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) switch(identifier) { case QSFP_DD_IDENTIFIER: case OSFP_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) { + AIM_LOG_ERROR("Failed to read Status byte, unable to write tx_disable status to port(%d)\r\n", port); + return ONLP_STATUS_E_INTERNAL; + } + if (status_byte & QSFP_DD_FLAT_MEM) { + AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); + return ONLP_STATUS_E_UNSUPPORTED; + } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); return ONLP_STATUS_E_INTERNAL; @@ -352,6 +364,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { int present = 0; int identifier = 0; + int status_byte = 0; + int support_ctrls = 0; int tx_disable; VALIDATE_PORT(port); @@ -395,23 +409,58 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) switch(identifier) { case QSFP_DD_IDENTIFIER: case OSFP_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) { + AIM_LOG_ERROR("Failed to read Status byte, unable to read tx_disable status from port(%d)\r\n", port); + return ONLP_STATUS_E_INTERNAL; + } + if (status_byte & QSFP_DD_FLAT_MEM) { + AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); + return ONLP_STATUS_E_UNSUPPORTED; + } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write bank to eeprom fail\r\n", port); return ONLP_STATUS_E_INTERNAL; } - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0) { AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + } return ONLP_STATUS_E_INTERNAL; } - tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); - if(tx_disable < 0){ + support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); + if(support_ctrls < 0){ + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read control from eeprom fail\r\n", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); } - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail\r\n", port); return ONLP_STATUS_E_INTERNAL; } - *value = tx_disable; + if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + } + return ONLP_STATUS_E_INTERNAL; + } + tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); + if(tx_disable < 0){ + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + } + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail\r\n", port); + return ONLP_STATUS_E_INTERNAL; + } + *value = tx_disable; + } else { + AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + } + return ONLP_STATUS_E_UNSUPPORTED; + } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", 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 034639c6f..769c903ff 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 @@ -92,6 +92,8 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = { #define QSFP_DD_PAGE_ADMIN_INFO 0x0 #define QSFP_DD_PAGE_ADVERTISING 0x1 #define QSFP_DD_PAGE_LANE_CTRL 0x10 +#define QSFP_DD_LOWER_OFFSET_STATUS 0x02 +#define QSFP_DD_FLAT_MEM 0x80 /* byte 0x02 bit 7 */ #define QSFP_DD_P01H_TX_DISABLE_SUPPORT 0x2 @@ -234,6 +236,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { int present = 0; int identifier = 0; + int status_byte = 0; int eeprom_control; VALIDATE_PORT(port); @@ -260,6 +263,15 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) switch(identifier) { case QSFP_DD_IDENTIFIER: //for as9817-64D case OSFP_IDENTIFIER: { //for as9817-64O + /* 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) { + AIM_LOG_ERROR("Failed to read Status byte, unable to write tx_disable status to port(%d)\r\n", port); + return ONLP_STATUS_E_INTERNAL; + } + if (status_byte & QSFP_DD_FLAT_MEM) { + AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); + return ONLP_STATUS_E_UNSUPPORTED; + } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); @@ -379,6 +391,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { int present = 0; int identifier = 0; + int status_byte = 0; + int support_ctrls = 0; int tx_disable; VALIDATE_PORT(port); @@ -430,31 +444,71 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) switch(identifier) { case QSFP_DD_IDENTIFIER: //for as9817-64D case OSFP_IDENTIFIER: { //for as9817-64O + /* 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) { + AIM_LOG_ERROR("Failed to read Status byte, unable to read tx_disable status from port(%d)\r\n", port); + return ONLP_STATUS_E_INTERNAL; + } + if (status_byte & QSFP_DD_FLAT_MEM) { + AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); + return ONLP_STATUS_E_UNSUPPORTED; + } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write bank to eeprom fail\r\n", port); return ONLP_STATUS_E_INTERNAL; } - - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0) { AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + port); + } return ONLP_STATUS_E_INTERNAL; } - - tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); - if(tx_disable < 0){ + support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); + if(support_ctrls < 0){ + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read control from eeprom fail\r\n", + port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); } - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail\r\n", - port); return ONLP_STATUS_E_INTERNAL; } - *value = tx_disable; + if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + port); + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + port); + } + return ONLP_STATUS_E_INTERNAL; + } + tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); + if(tx_disable < 0){ + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + port); + } + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail\r\n", + port); + return ONLP_STATUS_E_INTERNAL; + } + *value = tx_disable; + } else { + AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + port); + } + return ONLP_STATUS_E_UNSUPPORTED; + } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); 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 dca56b114..9408ba934 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 @@ -89,6 +89,8 @@ #define QSFP_DD_PAGE_ADMIN_INFO 0x0 #define QSFP_DD_PAGE_ADVERTISING 0x1 #define QSFP_DD_PAGE_LANE_CTRL 0x10 +#define QSFP_DD_LOWER_OFFSET_STATUS 0x02 +#define QSFP_DD_FLAT_MEM 0x80 /* byte 0x02 bit 7 */ #define QSFP_DD_P01H_TX_DISABLE_SUPPORT 0x2 #define QSFP_DD_LPMODE 0x10 @@ -323,6 +325,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) int present = 0; int lpmode_value = 0; int identifier = 0; + int status_byte = 0; int eeprom_control; VALIDATE_PORT(port); @@ -353,7 +356,18 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) { /*QSFP DD*/ - if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ + /* Flat-memory CMIS modules do not implement page 01h/10h */ + status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS); + if (status_byte < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read status byte from eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (status_byte & QSFP_DD_FLAT_MEM) { + AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -515,6 +529,8 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) int present = 0; int lpmode_value = 0; int identifier = 0; + int status_byte = 0; + int support_ctrls = 0; int tx_dis = 0; VALIDATE_PORT(port); @@ -570,32 +586,61 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) rv = ONLP_STATUS_E_INTERNAL; } else if (identifier == QSFP_DD_IDENTIFIER) {/* QSFP DD */ - if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", + /* Flat-memory CMIS modules do not implement page 01h/10h */ + status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS); + if (status_byte < 0) { + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read status byte from eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; } - else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0 ){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", + else if (status_byte & QSFP_DD_FLAT_MEM) { + AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0){ + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; } else { - tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); - if(tx_dis < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", + support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); + if (support_ctrls < 0) { + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read support control from eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; } - else{ - *value = tx_dis; - rv = ONLP_STATUS_OK; + else if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0 ){ + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); + if(tx_dis < 0){ + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } + else{ + *value = tx_dis; + rv = ONLP_STATUS_OK; + } + } + } else { + AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0){ + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; } - } - if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", - port); - rv = ONLP_STATUS_E_INTERNAL; } } else { /* QSFP 28 or QSFP+ */ From 6394e8151f3366bf45d76c5449cdb0bcb034e233 Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Mon, 15 Jun 2026 06:08:03 +0000 Subject: [PATCH 2/5] [Accton] remove redundant CMIS bank setting in control_get/set platform: as7926-40xfb as9716_32d as9817-64nb as9817-64 as9926-24 --- .../module/src/sfpi.c | 16 +++++-------- .../module/src/sfpi.c | 16 +++++-------- .../module/src/sfpi.c | 11 ++++----- .../x86_64_accton_as9817_64/module/src/sfpi.c | 16 ++++--------- .../module/src/sfpi.c | 24 +++++++++---------- 5 files changed, 33 insertions(+), 50 deletions(-) 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 37f76d12c..8ff70af72 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 @@ -299,6 +299,11 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); @@ -312,12 +317,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_E_INTERNAL; } else if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", - port); - rv = ONLP_STATUS_E_INTERNAL; - } - else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -543,10 +543,6 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } - else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Failed to set Bank 0 on port(%d)\r\n", port); - rv = ONLP_STATUS_E_INTERNAL; - } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0){ AIM_LOG_ERROR("Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)\r\n", QSFP_DD_PAGE_LANE_CTRL, port); 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 7607512be..35a6e7989 100755 --- 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 @@ -336,6 +336,11 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); @@ -349,12 +354,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_E_INTERNAL; } else if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", - port); - rv = ONLP_STATUS_E_INTERNAL; - } - else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -586,10 +586,6 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } - else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Failed to set Bank 0 on port(%d)\r\n", port); - rv = ONLP_STATUS_E_INTERNAL; - } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0){ AIM_LOG_ERROR("Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)\r\n", QSFP_DD_PAGE_LANE_CTRL, port); 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 6703721e1..50e404174 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 @@ -269,6 +269,10 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); return ONLP_STATUS_E_UNSUPPORTED; } + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", port); + return ONLP_STATUS_E_INTERNAL; + } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); return ONLP_STATUS_E_INTERNAL; @@ -282,13 +286,6 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_INTERNAL; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", port); - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); - } - return ONLP_STATUS_E_INTERNAL; - } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { 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 769c903ff..43555d76a 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 @@ -272,6 +272,11 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); return ONLP_STATUS_E_UNSUPPORTED; } + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", + port); + return ONLP_STATUS_E_INTERNAL; + } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); @@ -290,17 +295,6 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", port); - - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); - } - - return ONLP_STATUS_E_INTERNAL; - } - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); 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 9408ba934..9ad54fbbd 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 @@ -367,6 +367,11 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); @@ -380,12 +385,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_E_INTERNAL; } else if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", - port); - rv = ONLP_STATUS_E_INTERNAL; - } - else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -597,6 +597,11 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0){ AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", port); @@ -610,12 +615,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) rv = ONLP_STATUS_E_INTERNAL; } else if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { - if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", - port); - rv = ONLP_STATUS_E_INTERNAL; - } - else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0 ){ + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0 ){ AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; From 6911d747360841c3f84ef567f668438e61da0ee1 Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Mon, 15 Jun 2026 07:29:02 +0000 Subject: [PATCH 3/5] [Accton]Add SFP functionality (LP mode, reset, TX disable) platform: as9926-24db Signed-off-by: Eric Yang --- .../module/src/sfpi.c | 392 +++++++++++++++--- 1 file changed, 341 insertions(+), 51 deletions(-) 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 54e81348b..b2a58500d 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 @@ -31,6 +31,63 @@ #define PORT_BUS_INDEX(port) (port+9) +#define SFP_PORT_MIN 24 +#define SFP_PORT_MAX 25 +#define QSFP_PORT_MIN 0 +#define QSFP_PORT_MAX 23 +#define MIN_PORT QSFP_PORT_MIN +#define MAX_PORT SFP_PORT_MAX + +#define VALIDATE_SFP(_port) \ + do { \ + if (_port < SFP_PORT_MIN || _port > SFP_PORT_MAX) \ + return ONLP_STATUS_E_UNSUPPORTED; \ + } while(0) + +#define VALIDATE_QSFP(_port) \ + do { \ + if (_port < QSFP_PORT_MIN || _port > QSFP_PORT_MAX) \ + return ONLP_STATUS_E_UNSUPPORTED; \ + } while(0) + +#define VALIDATE_PORT(_port) \ + do { \ + if (_port < MIN_PORT || _port > MAX_PORT) \ + return ONLP_STATUS_E_UNSUPPORTED; \ + } while(0) + +/* QSFP device address of eeprom */ +#define PORT_EEPROM_DEVADDR 0x50 + +/*QSFP identify offsets*/ +#define QSFP_EEPROM_OFFSET_IDENTIFIER 0x0 + +/* QSFP eeprom offsets*/ +#define QSFP_EEPROM_OFFSET_TXDIS 0x56 + +/* QSFP DD eeprom offsets*/ +#define QSFP_DD_EEPROM_OFFSET_BANK_SELECT 0x7E +#define QSFP_DD_EEPROM_OFFSET_PAGE_SELECT 0x7F +#define QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1 0x9B +#define QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX 0x82 +#define QSFP_DD_EEPROM_OFFSET_LOWPWR_REQUEST_SW 0x1A + +/*QSFP Specific*/ +#define QSFP_EEPROM_OFFSET_LPMODE 0x5D +#define QSFP_LPMODE 0x3 + +/* QSFP DD Specific*/ +#define QSFP_DD_PAGE_ADMIN_INFO 0x0 +#define QSFP_DD_PAGE_ADVERTISING 0x1 +#define QSFP_DD_PAGE_LANE_CTRL 0x10 +#define QSFP_DD_LOWER_OFFSET_STATUS 0x02 +#define QSFP_DD_FLAT_MEM 0x80 /* byte 0x02 bit 7 */ +#define QSFP_DD_P01H_TX_DISABLE_SUPPORT 0x2 +#define QSFP_DD_LPMODE 0x10 + +/* OSFP IDENTIFIER Specific*/ +#define QSFP_DD_IDENTIFIER 0x18 + #define PORT_EEPROM_FORMAT \ "/sys/bus/i2c/devices/%d-0050/eeprom" #define MODULE_PRESENT_FORMAT \ @@ -258,16 +315,108 @@ int onlp_sfpi_dom_read(int port, uint8_t data[256]) int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { - int rv; + int rv = ONLP_STATUS_E_INTERNAL; + int present = 0; + int lpmode_value = 0; + int identifier = 0; + int status_byte = 0; + int eeprom_control; + + VALIDATE_PORT(port); switch(control) { case ONLP_SFP_CONTROL_TX_DISABLE: + case ONLP_SFP_CONTROL_TX_DISABLE_CHANNEL: + { + present = onlp_sfpi_is_present(port); + if (present == 1) { + 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); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + rv = ONLP_STATUS_OK; + } + } + else { /* QSFP */ + identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); + if (identifier < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read identifier from eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ + /* Flat-memory CMIS modules do not implement page 01h/10h */ + status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS); + if (status_byte < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read status byte from eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (status_byte & QSFP_DD_FLAT_MEM) { + AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); + if (eeprom_control < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read control from eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, value) < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + rv = ONLP_STATUS_OK; + } + } else { + AIM_LOG_ERROR("Setting tx disable to port(%d) is not supported\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + } + } else { /* QSFP 28 or QSFP+ */ + 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 TX disable to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + rv = ONLP_STATUS_OK; + } + } + } + } + else { + rv = ONLP_STATUS_E_INTERNAL; + } + break; + } + + case ONLP_SFP_CONTROL_RESET: { - if (onlp_file_write_int(value, MODULE_TXDISABLE_FORMAT, + VALIDATE_QSFP(port); + if (onlp_file_write_int(value, MODULE_RESET_FORMAT, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to set tx_disable status to \ - port(%d)\r\n", port); + AIM_LOG_ERROR("Unable to set reset to port(%d)\r\n", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -276,22 +425,58 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) break; } - case ONLP_SFP_CONTROL_RESET: + case ONLP_SFP_CONTROL_LP_MODE: { - if(port <= 23) - { - if (onlp_file_write_int(value, MODULE_RESET_FORMAT, - (port+1)) < 0) { - AIM_LOG_ERROR("Unable to set reset to \ - port(%d)\r\n", port); + VALIDATE_QSFP(port); + present = onlp_sfpi_is_present(port); + if (present == 1) { + identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); + if (identifier < 0) { + AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read identifier from eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; } - else { - rv = ONLP_STATUS_OK; + 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) { + AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read LP mode value from eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + if (value) + lpmode_value |= QSFP_DD_LPMODE; + 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) { + AIM_LOG_ERROR("Unable to write LP mode status to port(%d): write LP mode value to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + rv = ONLP_STATUS_OK; + } + } + } else { /* QSFP 28 or QSFP+ */ + 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 from eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + if (value) + lpmode_value |= QSFP_LPMODE; + else + lpmode_value &= ~QSFP_LPMODE; + 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 LP mode value to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + rv = ONLP_STATUS_OK; + } + } } } else { - return ONLP_STATUS_E_UNSUPPORTED; + rv = ONLP_STATUS_E_INTERNAL; } break; } @@ -332,43 +517,37 @@ onlp_sfpi_dev_writew(int port, uint8_t devaddr, uint8_t addr, uint16_t value) int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { - int rv; + int rv = ONLP_STATUS_E_INTERNAL; + int present = 0; + int lpmode_value = 0; + int identifier = 0; + int status_byte = 0; + int support_ctrls = 0; + int tx_dis = 0; - if (port < 0) { - return ONLP_STATUS_E_UNSUPPORTED; - } + VALIDATE_PORT(port); switch(control) { case ONLP_SFP_CONTROL_RESET: { - if(port <= 23) - { - 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); - rv = ONLP_STATUS_E_INTERNAL; - } - else { - rv = ONLP_STATUS_OK; - } + 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); + rv = ONLP_STATUS_E_INTERNAL; } else { - return ONLP_STATUS_E_UNSUPPORTED; + rv = ONLP_STATUS_OK; } break; - } case ONLP_SFP_CONTROL_RX_LOS: { - if (port <= 23) - return ONLP_STATUS_E_UNSUPPORTED; - - if (onlp_file_read_int(value, MODULE_RXLOS_FORMAT, + 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); + AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -379,13 +558,10 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case ONLP_SFP_CONTROL_TX_FAULT: { - if (port <= 23) - return ONLP_STATUS_E_UNSUPPORTED; - + 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); + AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -395,25 +571,139 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } case ONLP_SFP_CONTROL_TX_DISABLE: + case ONLP_SFP_CONTROL_TX_DISABLE_CHANNEL: { - if(port <= 23) - return ONLP_STATUS_E_UNSUPPORTED; - - 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); + present = onlp_sfpi_is_present(port); + 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); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + rv = ONLP_STATUS_OK; + } + } + else { /* QSFP */ + identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); + if (identifier < 0) { + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d): read identifier from eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (identifier == QSFP_DD_IDENTIFIER) { /* QSFP DD */ + /* Flat-memory CMIS modules do not implement page 01h/10h */ + status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS); + if (status_byte < 0) { + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read status byte from eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (status_byte & QSFP_DD_FLAT_MEM) { + AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0) { + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); + if (support_ctrls < 0) { + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read support control from eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); + if (tx_dis < 0) { + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + *value = tx_dis; + rv = ONLP_STATUS_OK; + } + } + } else { + AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); + rv = ONLP_STATUS_E_UNSUPPORTED; + } + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + } + } + else { /* QSFP 28 or QSFP+ */ + 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_disable status from port(%d): read TX disable from eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + *value = tx_dis; + rv = ONLP_STATUS_OK; + } + } + } + } + else { rv = ONLP_STATUS_E_INTERNAL; } + break; + } + + case ONLP_SFP_CONTROL_LP_MODE: + { + VALIDATE_QSFP(port); + present = onlp_sfpi_is_present(port); + if (present == 1) { + identifier = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_EEPROM_OFFSET_IDENTIFIER); + if (identifier < 0) { + AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read identifier from eeprom fail\r\n", 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) { + AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read LP mode value from eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + *value = !!(lpmode_value & QSFP_DD_LPMODE); + rv = ONLP_STATUS_OK; + } + } else { /* QSFP 28 or QSFP+ */ + /* 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 LP mode value from eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else { + *value = ((lpmode_value & QSFP_LPMODE) == QSFP_LPMODE); + rv = ONLP_STATUS_OK; + } + } + } else { - rv = ONLP_STATUS_OK; + rv = ONLP_STATUS_E_INTERNAL; } break; } default: rv = ONLP_STATUS_E_UNSUPPORTED; - } + } return rv; } From 79d596aeee79fd411b838b39f66c6608581c5d7a Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Tue, 23 Jun 2026 17:37:21 +0800 Subject: [PATCH 4/5] [Accton] Move QSFP-DD bank-select to before page 10h switch Page 01h (Advertising) is unbanked, so writing the bank-select register before switching to it has no effect. Page 10h (Lane Control) is banked, so the bank-select must be set before switching to it. Move the QSFP_DD_EEPROM_OFFSET_BANK_SELECT write into the TX_DISABLE-supported branch, immediately before the page-select to QSFP_DD_PAGE_LANE_CTRL, in both the set and get paths. platform: as7926-40xfb as9716_32d as9817-64 as9817-64-nb as9926-24d as9926-24db Signed-off-by: Eric Yang --- .../module/src/sfpi.c | 22 ++++++------- .../module/src/sfpi.c | 22 ++++++------- .../module/src/sfpi.c | 22 ++++++++----- .../x86_64_accton_as9817_64/module/src/sfpi.c | 31 ++++++++++++------- .../module/src/sfpi.c | 26 ++++++++-------- .../module/src/sfpi.c | 20 ++++++------ 6 files changed, 79 insertions(+), 64 deletions(-) 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 8ff70af72..472454611 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 @@ -299,11 +299,6 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } - else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", - port); - rv = ONLP_STATUS_E_INTERNAL; - } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); @@ -317,7 +312,12 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_E_INTERNAL; } else if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -526,11 +526,6 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } - else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", - port); - rv = ONLP_STATUS_E_INTERNAL; - } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0){ AIM_LOG_ERROR("Failed to switch to Advertising Page on port(%d)\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -543,6 +538,11 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0){ AIM_LOG_ERROR("Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)\r\n", QSFP_DD_PAGE_LANE_CTRL, port); 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 35a6e7989..ac2def6ed 100755 --- 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 @@ -336,11 +336,6 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } - else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", - port); - rv = ONLP_STATUS_E_INTERNAL; - } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); @@ -354,7 +349,12 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_E_INTERNAL; } else if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -569,11 +569,6 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } - else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", - port); - rv = ONLP_STATUS_E_INTERNAL; - } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0){ AIM_LOG_ERROR("Failed to switch to Advertising Page on port(%d)\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -586,6 +581,11 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0){ AIM_LOG_ERROR("Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)\r\n", QSFP_DD_PAGE_LANE_CTRL, port); 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 50e404174..e7e681d6e 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 @@ -269,10 +269,6 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); return ONLP_STATUS_E_UNSUPPORTED; } - if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", port); - return ONLP_STATUS_E_INTERNAL; - } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); return ONLP_STATUS_E_INTERNAL; @@ -286,6 +282,13 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) return ONLP_STATUS_E_INTERNAL; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", port); + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + } + return ONLP_STATUS_E_INTERNAL; + } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { @@ -415,10 +418,6 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); return ONLP_STATUS_E_UNSUPPORTED; } - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write bank to eeprom fail\r\n", port); - return ONLP_STATUS_E_INTERNAL; - } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0) { AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ @@ -435,6 +434,13 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_INTERNAL; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write bank to eeprom fail\r\n", port); + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + } + return ONLP_STATUS_E_INTERNAL; + } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ 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 43555d76a..91782af3c 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 @@ -272,11 +272,6 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); return ONLP_STATUS_E_UNSUPPORTED; } - if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", - port); - return ONLP_STATUS_E_INTERNAL; - } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); @@ -295,6 +290,16 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", port); + + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + } + + return ONLP_STATUS_E_INTERNAL; + } + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); @@ -447,12 +452,6 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); return ONLP_STATUS_E_UNSUPPORTED; } - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write bank to eeprom fail\r\n", - port); - return ONLP_STATUS_E_INTERNAL; - } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0) { AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", @@ -474,6 +473,16 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) return ONLP_STATUS_E_INTERNAL; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { + + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write bank to eeprom fail\r\n", + port); + if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ + AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + port); + } + return ONLP_STATUS_E_INTERNAL; + } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", 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 9ad54fbbd..90024e1c0 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 @@ -367,16 +367,11 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } - else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", - port); - rv = ONLP_STATUS_E_INTERNAL; - } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; - } + } else { eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); if(eeprom_control < 0){ @@ -385,7 +380,12 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_E_INTERNAL; } else if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -597,11 +597,6 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } - else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", - port); - rv = ONLP_STATUS_E_INTERNAL; - } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0){ AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", port); @@ -615,7 +610,12 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) rv = ONLP_STATUS_E_INTERNAL; } else if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { - if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0 ){ + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", + port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0 ){ AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", 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 b2a58500d..fddde0c9e 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 @@ -358,10 +358,6 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } - else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", port); - rv = ONLP_STATUS_E_INTERNAL; - } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0) { AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -373,7 +369,11 @@ int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_E_INTERNAL; } else if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { + AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -602,10 +602,6 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } - else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", port); - rv = ONLP_STATUS_E_INTERNAL; - } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0) { AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; @@ -617,7 +613,11 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) rv = ONLP_STATUS_E_INTERNAL; } else if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { - if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { + if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { + AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", port); + rv = ONLP_STATUS_E_INTERNAL; + } + else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", port); rv = ONLP_STATUS_E_INTERNAL; } From b33c1ee3b5dbbda6b3f3bb14628f8e8024002333 Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Fri, 3 Jul 2026 15:18:59 +0800 Subject: [PATCH 5/5] [Accton] sfpi.c: replace AIM_LOG_ERROR with syslog and remove unnecessary error logs merge from [Accton][as9726-32d] Route SFP errors to syslog, drop unsupported-state logs #197 platform: as7926-40xfb as9716_32d as9817-64-nb as9817-64 as9926-24d as9926-24db Changes: - Replace AIM_LOG_ERROR with syslog(LOG_ERR, ...) for consistent logging - Remove flat-memory module unsupported log messages - Remove tx_disable not supported log messages - Add #include Signed-off-by: Eric Yang --- .../module/src/sfpi.c | 77 ++++++++-------- .../module/src/sfpi.c | 81 ++++++++--------- .../module/src/sfpi.c | 91 +++++++++---------- .../x86_64_accton_as9817_64/module/src/sfpi.c | 91 +++++++++---------- .../module/src/sfpi.c | 89 +++++++++--------- .../module/src/sfpi.c | 91 +++++++++---------- 6 files changed, 251 insertions(+), 269 deletions(-) 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 472454611..932b8e670 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 @@ -27,6 +27,7 @@ #include #include #include "platform_lib.h" +#include #define NUM_OF_SFP_PORT 55 @@ -164,7 +165,7 @@ onlp_sfpi_is_present(int port) } if (onlp_file_read_int(&present, path, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -181,7 +182,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) if ((i >= 53) && (i <= 54)) { if (onlp_file_read_int(&val, MODULE_RXLOS_FORMAT, 12, 62, i+1) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", i); + syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", i); } if (val) @@ -208,17 +209,17 @@ onlp_sfpi_eeprom_read(int port, uint8_t data[256]) */ int size = 0; if (port < 0 || port >= NUM_OF_SFP_PORT) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } 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(LOG_ERR, "Unable to read eeprom from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } if (size != 256) { - AIM_LOG_ERROR("Invalid file size(%d)\r\n", size); + syslog(LOG_ERR, "Invalid file size(%d)", size); 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, bus, addr, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -285,45 +286,44 @@ 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){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "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) { - AIM_LOG_ERROR("Failed to read Status byte, unable to write tx_disable status to port(%d)\r\n", port); + syslog(LOG_ERR, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else if (status_byte & QSFP_DD_FLAT_MEM) { - AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); if(eeprom_control < 0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read control from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -331,11 +331,10 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_OK; } } else { - AIM_LOG_ERROR("Setting tx disable to port(%d) is not supported\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -345,7 +344,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 ){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -381,7 +380,7 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) } if (onlp_file_write_int(value, path, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to reset port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to reset port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -397,14 +396,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read LP mode value from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -414,7 +413,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): write LP mode value to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -426,7 +425,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): write LP mode value to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -438,7 +437,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): write LP mode value to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -481,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) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -502,7 +501,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) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -512,46 +511,44 @@ 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){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "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) { - AIM_LOG_ERROR("Failed to read Status byte, unable to read tx_disable status from port(%d)\r\n", port); + syslog(LOG_ERR, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else if (status_byte & QSFP_DD_FLAT_MEM) { - AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0){ - AIM_LOG_ERROR("Failed to switch to Advertising Page on port(%d)\r\n", port); + syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else if((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0){ - AIM_LOG_ERROR("Failed to read Support Control on port(%d)\r\n", port); + syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else if (!(support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT)) { - AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0){ - AIM_LOG_ERROR("Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)\r\n", + syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); rv = ONLP_STATUS_E_INTERNAL; } else { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); if(tx_dis < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -561,7 +558,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -569,7 +566,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){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -606,7 +603,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } if (onlp_file_read_int(value, path, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -621,7 +618,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){ - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -629,7 +626,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){ - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): set LP mode value to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read LP mode status from port(%d): set LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -641,7 +638,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){ - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): set LP mode value to eeprom fail\r\n", + syslog(LOG_ERR, "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/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 ac2def6ed..82ebd152c 100755 --- 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 @@ -28,6 +28,7 @@ #include #include "x86_64_accton_as9716_32d_int.h" #include "x86_64_accton_as9716_32d_log.h" +#include #define SFP_PORT_MIN 32 #define SFP_PORT_MAX 33 @@ -159,7 +160,7 @@ onlp_sfpi_is_present(int port) } 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); + syslog(LOG_ERR, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -211,12 +212,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) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog(LOG_ERR, "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(LOG_ERR, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -232,20 +233,20 @@ 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(LOG_ERR, "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(LOG_ERR, "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(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -311,7 +312,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) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -322,45 +323,44 @@ 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){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "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) { - AIM_LOG_ERROR("Failed to read Status byte, unable to write tx_disable status to port(%d)\r\n", port); + syslog(LOG_ERR, "Failed to read Status byte, unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else if (status_byte & QSFP_DD_FLAT_MEM) { - AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); if(eeprom_control < 0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read control from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -368,11 +368,10 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_OK; } } else { - AIM_LOG_ERROR("Setting tx disable to port(%d) is not supported\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -382,7 +381,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 ){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -401,7 +400,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) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -416,7 +415,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -424,7 +423,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read LP mode value from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -434,7 +433,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): write LP mode value to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -448,7 +447,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read LP mode value from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -460,7 +459,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): write LP mode value to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -515,7 +514,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) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -528,7 +527,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) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -545,7 +544,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) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -555,46 +554,44 @@ 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){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "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) { - AIM_LOG_ERROR("Failed to read Status byte, unable to read tx_disable status from port(%d)\r\n", port); + syslog(LOG_ERR, "Failed to read Status byte, unable to read tx_disable status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else if (status_byte & QSFP_DD_FLAT_MEM) { - AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0){ - AIM_LOG_ERROR("Failed to switch to Advertising Page on port(%d)\r\n", port); + syslog(LOG_ERR, "Failed to switch to Advertising Page on port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else if((support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1)) < 0){ - AIM_LOG_ERROR("Failed to read Support Control on port(%d)\r\n", port); + syslog(LOG_ERR, "Failed to read Support Control on port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else if (!(support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT)) { - AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0){ - AIM_LOG_ERROR("Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)\r\n", + syslog(LOG_ERR, "Failed to switch to Lane Control Page (Page 0x%02x) on port(%d)", QSFP_DD_PAGE_LANE_CTRL, port); rv = ONLP_STATUS_E_INTERNAL; } else { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); if(tx_dis < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -604,7 +601,7 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -612,7 +609,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){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -633,7 +630,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) { - AIM_LOG_ERROR("Unable to get reset status to port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to get reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -649,7 +646,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){ - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -657,7 +654,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){ - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read LP mode value from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -669,7 +666,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){ - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read LP mode value from eeprom fail\r\n", + syslog(LOG_ERR, "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/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 e7e681d6e..bd4b0df6b 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 @@ -28,6 +28,7 @@ #include #include "x86_64_accton_as9817_64_nb_int.h" #include "x86_64_accton_as9817_64_nb_log.h" +#include #define SFP_PORT_MIN 65 #define SFP_PORT_MAX 66 @@ -140,7 +141,7 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, port) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -160,12 +161,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) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog(LOG_ERR, "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(LOG_ERR, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -181,20 +182,20 @@ 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(LOG_ERR, "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(LOG_ERR, "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(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -246,14 +247,14 @@ 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) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog(LOG_ERR, "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){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read identifier from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } else { @@ -262,56 +263,54 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case OSFP_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) { - AIM_LOG_ERROR("Failed to read Status byte, unable to write tx_disable status to port(%d)\r\n", port); + syslog(LOG_ERR, "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) { - AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); return ONLP_STATUS_E_UNSUPPORTED; } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); if(eeprom_control < 0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read control from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } } else { if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); } - AIM_LOG_ERROR("Setting tx disable to port(%d) is not supported\r\n", port); return ONLP_STATUS_E_UNSUPPORTED; } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } break; @@ -320,7 +319,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 ){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } break; @@ -339,7 +338,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) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -347,7 +346,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) { - AIM_LOG_ERROR("Unable to write LP mode status to port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to write LP mode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -375,7 +374,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) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } @@ -384,7 +383,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) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -395,14 +394,14 @@ 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) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog(LOG_ERR, "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){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } else { @@ -411,61 +410,59 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case OSFP_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) { - AIM_LOG_ERROR("Failed to read Status byte, unable to read tx_disable status from port(%d)\r\n", port); + syslog(LOG_ERR, "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) { - AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); return ONLP_STATUS_E_UNSUPPORTED; } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); if(support_ctrls < 0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read control from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read control from eeprom fail", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write bank to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); if(tx_disable < 0){ if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); } - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } *value = tx_disable; } else { - AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); } return ONLP_STATUS_E_UNSUPPORTED; } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } break; @@ -474,7 +471,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){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } *value = tx_disable; @@ -494,7 +491,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) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; @@ -502,7 +499,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) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d)\r\n", port); + syslog(LOG_ERR, "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 91782af3c..6454d9fa3 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 @@ -28,6 +28,7 @@ #include #include "x86_64_accton_as9817_64_int.h" #include "x86_64_accton_as9817_64_log.h" +#include #define SFP_PORT_MIN 65 #define SFP_PORT_MAX 66 @@ -142,7 +143,7 @@ onlp_sfpi_is_present(int port) int present; if (onlp_file_read_int(&present, MODULE_PRESENT_FORMAT, port) < 0) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -162,12 +163,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) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog(LOG_ERR, "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(LOG_ERR, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -183,20 +184,20 @@ 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(LOG_ERR, "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(LOG_ERR, "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(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -248,14 +249,14 @@ 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) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog(LOG_ERR, "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){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -265,24 +266,23 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) case OSFP_IDENTIFIER: { //for as9817-64O /* 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) { - AIM_LOG_ERROR("Failed to read Status byte, unable to write tx_disable status to port(%d)\r\n", port); + syslog(LOG_ERR, "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) { - AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); return ONLP_STATUS_E_UNSUPPORTED; } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); if(eeprom_control < 0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read control from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); } @@ -291,45 +291,44 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } } else { if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); } - AIM_LOG_ERROR("Setting tx disable to port(%d) is not supported\r\n", port); return ONLP_STATUS_E_UNSUPPORTED; } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } break; @@ -339,7 +338,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 ){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -362,7 +361,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) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to write reset status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -372,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_LPMODE_FORMAT, port) < 0) { - AIM_LOG_ERROR("Unable to write LP mode status to port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to write LP mode status to port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -401,7 +400,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) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } } @@ -413,7 +412,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) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -428,14 +427,14 @@ 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) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog(LOG_ERR, "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){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read identifier from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -445,29 +444,28 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) case OSFP_IDENTIFIER: { //for as9817-64O /* 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) { - AIM_LOG_ERROR("Failed to read Status byte, unable to read tx_disable status from port(%d)\r\n", port); + syslog(LOG_ERR, "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) { - AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); return ONLP_STATUS_E_UNSUPPORTED; } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); if(support_ctrls < 0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read control from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read control from eeprom fail", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; @@ -475,20 +473,20 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write bank to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write bank to eeprom fail", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); } return ONLP_STATUS_E_INTERNAL; @@ -496,24 +494,23 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) tx_disable = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); if(tx_disable < 0){ if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); } - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } *value = tx_disable; } else { - AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); } return ONLP_STATUS_E_UNSUPPORTED; } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : write page to eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -523,7 +520,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){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d) : read TX disable from eeprom fail", port); return ONLP_STATUS_E_INTERNAL; } @@ -548,7 +545,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) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -558,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_LPMODE_FORMAT, port) < 0) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d)\r\n", port); + syslog(LOG_ERR, "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 90024e1c0..5ef3577b4 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 @@ -28,6 +28,7 @@ #include #include "x86_64_accton_as9926_24d_int.h" #include "x86_64_accton_as9926_24d_log.h" +#include #define SFP_PORT_MIN 24 #define SFP_PORT_MAX 25 @@ -137,7 +138,7 @@ 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) { - AIM_LOG_ERROR("Unable to read present status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -162,7 +163,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."); + syslog(LOG_ERR, "Unable to open the module_present_all device file of CPLD."); return ONLP_STATUS_E_INTERNAL; } @@ -171,7 +172,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; } @@ -209,7 +210,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fp = fopen(MODULE_RXLOS_ALL_ATTR_CPLD3, "r"); if(fp == NULL) { - AIM_LOG_ERROR("Unable to open the module_rx_los_all device file of CPLD(0x62)"); + syslog(LOG_ERR, "Unable to open the module_rx_los_all device file of CPLD(0x62)"); return ONLP_STATUS_E_INTERNAL; } @@ -217,7 +218,7 @@ onlp_sfpi_rx_los_bitmap_get(onlp_sfp_bitmap_t* dst) fclose(fp); if(count != 1) { /* 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; } @@ -249,12 +250,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) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog(LOG_ERR, "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(LOG_ERR, "Unable to read eeprom from port(%d), size is different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -270,20 +271,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) { - AIM_LOG_ERROR("Unable to open the eeprom device file of port(%d)", port); + syslog(LOG_ERR, "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(LOG_ERR, "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(LOG_ERR, "Unable to read the module_eeprom device file of port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -340,7 +341,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) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -351,7 +352,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){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -359,39 +360,38 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) /* Flat-memory CMIS modules do not implement page 01h/10h */ status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS); if (status_byte < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read status byte from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (status_byte & QSFP_DD_FLAT_MEM) { - AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) <0 ){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); if(eeprom_control < 0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read control from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT){ if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -399,11 +399,10 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) rv = ONLP_STATUS_OK; } } else { - AIM_LOG_ERROR("Setting tx disable to port(%d) is not supported\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) <0){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -413,7 +412,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 ){ - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -436,7 +435,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) { - AIM_LOG_ERROR("Unable to write reset status to port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to write reset status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -453,7 +452,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -461,7 +460,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read LP mode value from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -471,7 +470,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): write LP mode value to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -485,7 +484,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read LP mode value from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -497,7 +496,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){ - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): write LP mode value to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -541,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_RXLOS_FORMAT, 21, 62, (port+1)) < 0) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -554,7 +553,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) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -571,7 +570,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) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -581,7 +580,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){ - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -589,41 +588,40 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) /* Flat-memory CMIS modules do not implement page 01h/10h */ status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS); if (status_byte < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read status byte from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (status_byte & QSFP_DD_FLAT_MEM) { - AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); if (support_ctrls < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read support control from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read support control from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0 ){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); if(tx_dis < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -633,11 +631,10 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } } else { - AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } if(onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -646,7 +643,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){ - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -671,7 +668,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) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -688,7 +685,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){ - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read identifier from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read identifier from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -696,7 +693,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){ - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read LP mode value from eeprom fail\r\n", + syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } @@ -708,7 +705,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){ - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read LP mode value from eeprom fail\r\n", + syslog(LOG_ERR, "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 fddde0c9e..a7e89057e 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 @@ -28,6 +28,7 @@ #include #include "x86_64_accton_as9926_24db_int.h" #include "x86_64_accton_as9926_24db_log.h" +#include #define PORT_BUS_INDEX(port) (port+9) @@ -142,7 +143,7 @@ int onlp_sfpi_is_present(int 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", + syslog(LOG_ERR, "Unable to read present status from port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -160,7 +161,7 @@ int 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 \ + syslog(LOG_ERR, "Unable to open the module_present_all \ device file from (%s).", MODULE_PRESENT_ALL_ATTR); return ONLP_STATUS_E_INTERNAL; @@ -173,7 +174,7 @@ int onlp_sfpi_presence_bitmap_get(onlp_sfp_bitmap_t* dst) if(count != 4) { /* Likely a CPLD read timeout. */ - AIM_LOG_ERROR("Unable to read all fields the \ + 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; @@ -214,7 +215,7 @@ int 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 \ + syslog(LOG_ERR, "Unable to open the module_rxlos_all \ device file from (%s).", MODULE_RXLOS_ALL_ATTR); @@ -227,7 +228,7 @@ int 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 all fields the module_rxlos_all \ + 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; @@ -269,13 +270,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) { - AIM_LOG_ERROR("Unable to read eeprom from port(%d)\r\n", port); + syslog(LOG_ERR, "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(LOG_ERR, "Unable to read eeprom from port(%d), size is \ + different!", port); return ONLP_STATUS_E_INTERNAL; } @@ -290,14 +291,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) { - AIM_LOG_ERROR("Unable to open the eeprom device file of \ + syslog(LOG_ERR, "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 \ + syslog(LOG_ERR, "Unable to set the file position indicator of \ port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -305,7 +306,7 @@ int 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 \ + syslog(LOG_ERR, "Unable to read the module_eeprom device file of \ port(%d)", port); return ONLP_STATUS_E_INTERNAL; } @@ -334,7 +335,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) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -344,59 +345,57 @@ 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) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read identifier from eeprom fail\r\n", port); + syslog(LOG_ERR, "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 */ status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS); if (status_byte < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read status byte from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (status_byte & QSFP_DD_FLAT_MEM) { - AIM_LOG_ERROR("Setting tx_disable to port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { eeprom_control = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); if (eeprom_control < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): read control from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): read control from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (eeprom_control & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write bank to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write bank to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX, value) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write TX disable to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { rv = ONLP_STATUS_OK; } } else { - AIM_LOG_ERROR("Setting tx disable to port(%d) is not supported\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - AIM_LOG_ERROR("Unable to write tx_disable status to port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } } } else { /* QSFP 28 or QSFP+ */ 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 TX disable to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write tx_disable status to port(%d): write TX disable to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -416,7 +415,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) { - AIM_LOG_ERROR("Unable to set reset to port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to set reset to port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -432,13 +431,13 @@ 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) { - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read identifier from eeprom fail\r\n", port); + syslog(LOG_ERR, "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) { - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read LP mode value from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -447,7 +446,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) { - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): write LP mode value to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -457,7 +456,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) { - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): read LP mode value from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -466,7 +465,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) { - AIM_LOG_ERROR("Unable to write LP mode status to port(%d): write LP mode value to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to write LP mode status to port(%d): write LP mode value to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -534,7 +533,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) { - AIM_LOG_ERROR("Unable to read reset status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read reset status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -547,7 +546,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) { - AIM_LOG_ERROR("Unable to read rx_loss status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read rx_loss status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -561,7 +560,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) { - AIM_LOG_ERROR("Unable to read tx_fault status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read tx_fault status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -578,7 +577,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) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d)\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disabled status from port(%d)", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -588,43 +587,42 @@ 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) { - AIM_LOG_ERROR("Unable to read tx_disabled status from port(%d): read identifier from eeprom fail\r\n", port); + syslog(LOG_ERR, "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 */ status_byte = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_LOWER_OFFSET_STATUS); if (status_byte < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read status byte from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read status byte from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (status_byte & QSFP_DD_FLAT_MEM) { - AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported (flat-memory module)\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADVERTISING) < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { support_ctrls = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P01H_OFFSET_CONTROL_1); if (support_ctrls < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read support control from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read support control from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (support_ctrls & QSFP_DD_P01H_TX_DISABLE_SUPPORT) { if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_BANK_SELECT, 0) < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write bank to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write bank to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_LANE_CTRL) < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { tx_dis = onlp_sfpi_dev_readb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_P10H_OFFSET_OUTPUT_DISABLE_TX); if (tx_dis < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -633,11 +631,10 @@ int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) } } } else { - AIM_LOG_ERROR("Getting tx_disable from port(%d) is not supported\r\n", port); rv = ONLP_STATUS_E_UNSUPPORTED; } if (onlp_sfpi_dev_writeb(port, PORT_EEPROM_DEVADDR, QSFP_DD_EEPROM_OFFSET_PAGE_SELECT, QSFP_DD_PAGE_ADMIN_INFO) < 0) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): write page to eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): write page to eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } } @@ -645,7 +642,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) { - AIM_LOG_ERROR("Unable to read tx_disable status from port(%d): read TX disable from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read tx_disable status from port(%d): read TX disable from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -668,14 +665,14 @@ 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) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read identifier from eeprom fail\r\n", port); + syslog(LOG_ERR, "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) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read LP mode value from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else { @@ -686,7 +683,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) { - AIM_LOG_ERROR("Unable to read LP mode status from port(%d): read LP mode value from eeprom fail\r\n", port); + syslog(LOG_ERR, "Unable to read LP mode status from port(%d): read LP mode value from eeprom fail", port); rv = ONLP_STATUS_E_INTERNAL; } else {