This is the follow-up of the RFC, for 27.03. The SFF module EEPROM decoders do not depend on any device or driver, and they are also useful for ports which are not ethdev ports, such as kernel ports read with the ethtool ioctls. This series moves them from ethdev to a new transceiver library with the rte_transceiver_decode() API. ethdev depends on the library for its telemetry command.
Changes since the RFC, as discussed with Thomas: - rte_eth_module_eeprom_parse(), added as experimental in 26.11, is removed instead of being kept as a wrapper. - testpmd calls rte_transceiver_decode() directly. - The tests no longer depend on ethdev. - The ethdev guide links to the library guide instead of duplicating the example. The library name is still "transceiver", as it reads better than "xcvr". It can be renamed if preferred. Release notes will be added when the 27.03 release notes exist. The dpdk-proc-info module EEPROM decoding (series 39575) will be sent as a v2 on top of this series. Tested with gcc, and clang with ASan and UBSan: every patch builds without warnings, transceiver_autotest passes, the documentation builds without warnings, and the testpmd command decodes a module. RFC: https://mails.dpdk.org/archives/dev/2026-October/348542.html Roman Khromenok (4): transceiver: introduce module EEPROM decoding library test/transceiver: move module EEPROM decoding tests app/testpmd: decode module EEPROM with transceiver library ethdev: remove module EEPROM decoding wrapper MAINTAINERS | 7 + app/test-pmd/config.c | 3 +- app/test-pmd/meson.build | 2 +- app/test/meson.build | 2 +- ...dev_module_eeprom.c => test_transceiver.c} | 132 +++++++++--------- doc/api/doxy-api-index.md | 1 + doc/api/doxy-api.conf.in | 1 + doc/guides/prog_guide/ethdev/ethdev.rst | 39 +----- doc/guides/prog_guide/index.rst | 1 + doc/guides/prog_guide/transceiver_lib.rst | 86 ++++++++++++ lib/ethdev/meson.build | 6 +- lib/ethdev/rte_ethdev.c | 21 --- lib/ethdev/rte_ethdev.h | 57 -------- lib/ethdev/sff_telemetry.c | 13 +- lib/meson.build | 2 + lib/transceiver/meson.build | 11 ++ lib/transceiver/rte_transceiver.c | 24 ++++ lib/transceiver/rte_transceiver.h | 102 ++++++++++++++ lib/{ethdev => transceiver}/sff_8079.c | 2 +- lib/{ethdev => transceiver}/sff_8472.c | 0 lib/{ethdev => transceiver}/sff_8636.c | 4 +- lib/{ethdev => transceiver}/sff_8636.h | 0 lib/{ethdev => transceiver}/sff_common.c | 28 ++-- lib/{ethdev => transceiver}/sff_common.h | 10 +- 24 files changed, 341 insertions(+), 213 deletions(-) rename app/test/{test_ethdev_module_eeprom.c => test_transceiver.c} (83%) create mode 100644 doc/guides/prog_guide/transceiver_lib.rst create mode 100644 lib/transceiver/meson.build create mode 100644 lib/transceiver/rte_transceiver.c create mode 100644 lib/transceiver/rte_transceiver.h rename lib/{ethdev => transceiver}/sff_8079.c (99%) rename lib/{ethdev => transceiver}/sff_8472.c (100%) rename lib/{ethdev => transceiver}/sff_8636.c (99%) rename lib/{ethdev => transceiver}/sff_8636.h (100%) rename lib/{ethdev => transceiver}/sff_common.c (95%) rename lib/{ethdev => transceiver}/sff_common.h (96%) -- 2.47.3

