Skip to content

Commit

Permalink
qsfpinfo: only include printing qsfp information (include source from…
Browse files Browse the repository at this point in the history
… ethertool) if OPAE-SDK is compiled with option OPAE_WITH_QSFPINFO_QSFPPRINT

Signed-off-by: Roger Christensen <rc@silicom.dk>
  • Loading branch information
rchriste1 committed Apr 26, 2024
1 parent d2ea7f5 commit 2aa78ea
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 42 deletions.
3 changes: 3 additions & 0 deletions CMakeLists.txt
Expand Up @@ -74,6 +74,9 @@ mark_as_advanced(OPAE_MINIMAL_BUILD)
option(OPAE_BUILD_TESTS "Enable building of OPAE unit tests" OFF)
mark_as_advanced(OPAE_BUILD_TESTS)

option(OPAE_WITH_QSFPINFO_QSFPPRINT "Enable qsfpinfo print qsfp" OFF)
mark_as_advanced(OPAE_WITH_QSFPINFO_QSFPPRINT)

############################################################################
## Python Interpreter/Build Env ###########################################
############################################################################
Expand Down
99 changes: 59 additions & 40 deletions binaries/qsfpinfo/CMakeLists.txt
Expand Up @@ -24,50 +24,69 @@
## ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
## POSSIBILITY OF SUCH DAMAGE.

opae_add_executable(TARGET qsfpinfo
SOURCE
main.c
cmis_wrap.c
sff-common_wrap.c
LIBS
argsfilter
opae-c
m
COMPONENT toolqsfpinfo
)
if (OPAE_WITH_QSFPINFO_QSFPPRINT)

target_include_directories(qsfpinfo
PRIVATE
${OPAE_LIB_SOURCE}/argsfilter
)
opae_add_executable(TARGET qsfpinfo
SOURCE
main.c
cmis_wrap.c
sff-common_wrap.c
LIBS
argsfilter
opae-c
m
COMPONENT toolqsfpinfo
)

include(ExternalProject)
include(ExternalProject)

ExternalProject_Add(
ethtool_project
GIT_REPOSITORY "https://git.kernel.org/pub/scm/network/ethtool/ethtool.git"
GIT_TAG "v6.7"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
UPDATE_COMMAND ""
)
ExternalProject_Add(
ethtool_project
GIT_REPOSITORY "https://git.kernel.org/pub/scm/network/ethtool/ethtool.git"
GIT_TAG "v6.7"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
UPDATE_COMMAND ""
)

ExternalProject_Get_Property(ethtool_project SOURCE_DIR)
ExternalProject_Get_Property(ethtool_project SOURCE_DIR)

add_custom_target(get-ethtool-files
DEPENDS ethtool_project
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${SOURCE_DIR}/cmis.c"
"${SOURCE_DIR}/cmis.h"
"${SOURCE_DIR}/qsfp.c"
"${SOURCE_DIR}/qsfp.h"
"${SOURCE_DIR}/sff-common.c"
"${SOURCE_DIR}/sff-common.h"
"${SOURCE_DIR}/internal.h"
"${SOURCE_DIR}/json_print.h"
"${SOURCE_DIR}/json_writer.h" "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SOURCE_DIR}/netlink/extapi.h" "${CMAKE_CURRENT_SOURCE_DIR}/netlink/extapi.h"
)

add_custom_target(get-ethtool-files
DEPENDS ethtool_project
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${SOURCE_DIR}/cmis.c"
"${SOURCE_DIR}/cmis.h"
"${SOURCE_DIR}/qsfp.c"
"${SOURCE_DIR}/qsfp.h"
"${SOURCE_DIR}/sff-common.c"
"${SOURCE_DIR}/sff-common.h"
"${SOURCE_DIR}/internal.h"
"${SOURCE_DIR}/json_print.h"
"${SOURCE_DIR}/json_writer.h" "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SOURCE_DIR}/netlink/extapi.h" "${CMAKE_CURRENT_SOURCE_DIR}/netlink/extapi.h"
target_compile_options(qsfpinfo PUBLIC
-D_QSFPPRINT
)

add_dependencies(qsfpinfo get-ethtool-files)
else(OPAE_WITH_QSFPINFO_QSFPPRINT)

opae_add_executable(TARGET qsfpinfo
SOURCE
main.c
LIBS
argsfilter
opae-c
m
COMPONENT toolqsfpinfo
)

endif(OPAE_WITH_QSFPINFO_QSFPPRINT)

target_include_directories(qsfpinfo
PRIVATE
${OPAE_LIB_SOURCE}/argsfilter
)

7 changes: 6 additions & 1 deletion binaries/qsfpinfo/main.c
Expand Up @@ -40,6 +40,7 @@
#include <sys/stat.h>
#include <fcntl.h>

#ifdef QSFPPRINT
// From ethtool
#undef HAVE_CONFIG_H
#include "qsfp.c"
Expand Down Expand Up @@ -92,6 +93,7 @@ static int sff8636_show(const char * regmap_path)
fclose (fp);
return 0;
}
#endif

// Define the function to be called when ctrl-c (SIGINT) signal is sent to
// process
Expand Down Expand Up @@ -168,7 +170,6 @@ fpga_result qsfp_cable_status(const fpga_token token, const size_t port)
uint64_t value = 0;
size_t i = 0;
char qsfp_path[LPATH_MAX] = { 0 };
char regmap_path[LPATH_MAX] = { 0 };
int retval = 0;
size_t qsfp_count = 0;

Expand Down Expand Up @@ -201,13 +202,17 @@ fpga_result qsfp_cable_status(const fpga_token token, const size_t port)
break;
case 1:
printf("QSFP%-45ld : %s \n", qsfp_count, "Connected");

#ifdef QSFPPRINT
char regmap_path[LPATH_MAX] = { 0 };
retval = snprintf(regmap_path, sizeof(regmap_path),
REGMAP_PATH, i);
if (retval < 0) {
OPAE_MSG("error in formatting qsfp regmap");
return FPGA_EXCEPTION;
}
sff8636_show(regmap_path);
#endif
break;
default:
printf("QSFP%-28ld : %s \n", qsfp_count, "N/A");
Expand Down
3 changes: 2 additions & 1 deletion doc/src/fpga_tools/qsfpinfo/qsfpinfo.md
Expand Up @@ -9,6 +9,7 @@

qsfpinfo prints QSFP EEPROM information for QSFP modules present in cards with qsfp feature (id 0x13) e.g. N6010, N6011, using the qsfp-mem driver.

qsfpinfo only prints QSFP EEPROM information if OPAE_SDK is compiled with "-DOPAE_WITH_QSFPINFO_QSFPPRINT=ON".
## EXAMPLES ##

```sh
Expand Down Expand Up @@ -92,5 +93,5 @@ FPGA function number.

| Date | Intel Acceleration Stack Version | Changes Made |
|:------|----------------------------|:--------------|
|2024.04.15| IOFS EA | Initial release. |
|2024.04.26| IOFS EA | Initial release. |

0 comments on commit 2aa78ea

Please sign in to comment.