Original version of the pcilmr utility used values from the Table 8-11 of the PCIe Base Spec Rev 5.0 to evaluate lanes. But it seems that these values relate only to the margining equipment and are not relevant to evaluating the quality of connections. Patch set improves grading from two sides: * The PCIe Base Spec Rev 5.0 sets the minimum values for the eye in the section 8.4.2. Change default grading values in the utility according to this section. Keep in mind that the Spec uses full eye width and height terms and that reference values depend on the current Link speed; * Manufacturers can provide criteria for their devices that differ from the standard ones. Usually this information falls under the NDA, so add an option to the utility that will allow the user to set necessary criteria for evaluating the quality of lanes. At the same time, fix the known limitations associated with arguments parsing. With the new changes made, the logic responsible for arguments parsing has become too large, so put it in a separate file. Nikita Proshkin (6): pcilmr: Ensure that utility can accept either Downstream or Upstream link port pcilmr: Move most of pcilmr arguments parsing logic to the separate file pcilmr: Add new grading option pcilmr: Add option to configure margining dwell time pcilmr: Apply grading quirk for Ice Lake RC ports pcilmr: Update usage and man: new arguments format and grading Makefile | 2 +- lmr/lmr.h | 103 +++++++++---- lmr/margin.c | 72 ++++----- lmr/margin_args.c | 302 ++++++++++++++++++++++++++++++++++++ lmr/margin_hw.c | 57 ++++++- lmr/margin_log.c | 23 ++- lmr/margin_results.c | 322 +++++++++++++++++++++++++-------------- pcilmr.c | 353 ++++++------------------------------------- pcilmr.man | 138 +++++++++++++---- 9 files changed, 841 insertions(+), 531 deletions(-) create mode 100644 lmr/margin_args.c -- 2.34.1