Requirement
Derived from #149 (REQ-F-PTP-001) acceptance criterion §4:
Get Clock Configuration (IOCTL_AVB_GET_CLOCK_CONFIG):
- Return clock capabilities (resolution, range, supported features)
- Return current clock configuration (base frequency, adjustment)
Test Objective
Verify that IOCTL_AVB_GET_CLOCK_CONFIG returns a fully populated AVB_CLOCK_CONFIG
structure with valid, non-zero values for all mandatory fields. This ensures the driver
exposes the PHC capabilities that gPTP stacks need to configure themselves.
Test Cases
TC-CLOCKCFG-001a: All mandatory fields populated
Preconditions: Driver loaded, handle open.
Steps:
- Call
DeviceIoControl(IOCTL_AVB_GET_CLOCK_CONFIG, ...) into AVB_CLOCK_CONFIG cfg
- Assert
status == 0 (NDIS_STATUS_SUCCESS)
- Assert
cfg.systim != 0 (PHC running)
- Assert
cfg.timinca != 0 (clock increment configured)
- Assert
cfg.clock_rate_mhz != 0 (base clock rate known)
Acceptance Criterion: All 3 fields non-zero, status == 0
TC-CLOCKCFG-001b: SYSTIM increments between two calls
Steps:
- Call
GET_CLOCK_CONFIG → cfg1
- Sleep 10 ms
- Call
GET_CLOCK_CONFIG → cfg2
- Assert
cfg2.systim > cfg1.systim
Acceptance Criterion: cfg2.systim > cfg1.systim (clock is running)
TC-CLOCKCFG-001c: clock_rate_mhz is a known valid value
The Intel I210/I219/I226 family uses: 125 MHz, 156 MHz, 200 MHz, or 250 MHz.
Steps:
- Call
GET_CLOCK_CONFIG
- Assert
clock_rate_mhz ∈ {125, 156, 200, 250}
Acceptance Criterion: clock_rate_mhz is one of the known Intel PHC clock rates
Expected Status: ⚠️ May fail for I219 (clock topology differs) — treat as WARNING if I219 detected.
TC-CLOCKCFG-001d: TIMINCA matches adapter type (sanity check)
Steps:
- Read
cfg.timinca
- If
(timinca >> 24) == 2 && (timinca & 0xFFFFFF) > 0 → I219 detected; verify (timinca & 0xFFFFFF) == 16000000 (hardware nominal)
- Else → verify
(timinca >> 24) ∈ {1..63} (reasonable increment_ns range for I210/I226)
Acceptance Criterion: TIMINCA encodes a recognisable adapter configuration
Acceptance Criteria Summary
- ✅
GET_CLOCK_CONFIG returns status == 0
- ✅
systim non-zero and incrementing between calls
- ✅
timinca non-zero with recognisable encoding
- ✅
clock_rate_mhz non-zero (ideally 125, 156, 200, or 250)
Implementation
- New test file:
tests/integration/ptp/ptp_ioctl_latency_test.c (same binary as TEST-PTP-IOCTL-LAT-001)
Traceability
Requirement
Derived from #149 (REQ-F-PTP-001) acceptance criterion §4:
Test Objective
Verify that
IOCTL_AVB_GET_CLOCK_CONFIGreturns a fully populatedAVB_CLOCK_CONFIGstructure with valid, non-zero values for all mandatory fields. This ensures the driver
exposes the PHC capabilities that gPTP stacks need to configure themselves.
Test Cases
TC-CLOCKCFG-001a: All mandatory fields populated
Preconditions: Driver loaded, handle open.
Steps:
DeviceIoControl(IOCTL_AVB_GET_CLOCK_CONFIG, ...)intoAVB_CLOCK_CONFIG cfgstatus == 0(NDIS_STATUS_SUCCESS)cfg.systim != 0(PHC running)cfg.timinca != 0(clock increment configured)cfg.clock_rate_mhz != 0(base clock rate known)Acceptance Criterion: All 3 fields non-zero, status == 0
TC-CLOCKCFG-001b: SYSTIM increments between two calls
Steps:
GET_CLOCK_CONFIG→cfg1GET_CLOCK_CONFIG→cfg2cfg2.systim > cfg1.systimAcceptance Criterion:
cfg2.systim > cfg1.systim(clock is running)TC-CLOCKCFG-001c: clock_rate_mhz is a known valid value
The Intel I210/I219/I226 family uses: 125 MHz, 156 MHz, 200 MHz, or 250 MHz.
Steps:
GET_CLOCK_CONFIGclock_rate_mhz∈ {125, 156, 200, 250}Acceptance Criterion:
clock_rate_mhzis one of the known Intel PHC clock ratesExpected Status:⚠️ May fail for I219 (clock topology differs) — treat as WARNING if I219 detected.
TC-CLOCKCFG-001d: TIMINCA matches adapter type (sanity check)
Steps:
cfg.timinca(timinca >> 24) == 2 && (timinca & 0xFFFFFF) > 0→ I219 detected; verify(timinca & 0xFFFFFF) == 16000000(hardware nominal)(timinca >> 24)∈ {1..63} (reasonable increment_ns range for I210/I226)Acceptance Criterion: TIMINCA encodes a recognisable adapter configuration
Acceptance Criteria Summary
GET_CLOCK_CONFIGreturnsstatus == 0systimnon-zero and incrementing between callstimincanon-zero with recognisable encodingclock_rate_mhznon-zero (ideally 125, 156, 200, or 250)Implementation
tests/integration/ptp/ptp_ioctl_latency_test.c(same binary as TEST-PTP-IOCTL-LAT-001)Traceability