Commit Graph

  • 6a1a860548 Panel cleanup: chip padding up a step and a tighter chip line gap, corrected/SNR numbers neutral until amber or red, dB margin casing, compound elapsed units (1m39s) ending the minutes/metres m collision, noise chip shows presence only main flamingcow 2026-08-14 23:47:45 -07:00
  • 9f2b074c4a Mixed FS+Wiitek test pair: modules dispatched by EEPROM PN to a BCM or Go RollBall client (whitelist panics outside the wiitek proven-safe set), SNR now solely the wiitek's IEEE margins (BCM handler SNR dropped as unactionable), ECD-clears-AN-enable trap found and fixed (7.0 |= 0x1200 on every restart, explicit restart after each diag), mixed roles FS-slave/wiitek-auto-master, window re-arms at taken edge so the one CMD write per window sits far from the poll; X710 rejects the honest FS EEPROM so the noise pair runs Fibergaga+Wiitek flamingcow 2026-08-14 23:35:19 -07:00
  • c0f3d0d61a Wiitek vendor doc converted to English markdown: A2 Table 3 I2C-to-MDIO mailbox spec (official RollBall protocol confirmation) plus A2.250 part number and A2.120 link rate; embedded Visio register-map figure transcribed via libvisio flamingcow 2026-08-14 08:51:34 -07:00
  • 9301348850 Re-lock the mailbox window on lost phase instead of anchoring blind: one loop goroutine per module owns all transport, windows edge-locked from first touch, bringup verifies both modules before either AN restart; corrected charges and link-down reads print raw registers; harness -fuzz repeats lifecycles judging by exit status (30/30 module-clean) flamingcow 2026-08-13 16:32:14 -07:00
  • fef6b52b74 Force master/slave roles at bringup (A master / B slave, IEEE 7.32): the AN role lottery plus per-training DSP convergence moves per-pair SNR up to ~3.6 dB, so sessions are pinned to identical conditions; launch power documented firmware-pinned (1.130), single-training SNR documented as a weak qualification number flamingcow 2026-08-13 14:23:57 -07:00
  • a9f10d3055 Windowed module protocol: every op admitted inside a 3.4s window after the firmware's observed temp poll (cadence 3.5-4.2s measured, stuck-at-last-fetch stale mechanism proven and avoided), acquire/window with panic on dead heartbeat; noise column shows green on/off cycle phase, cable-missing state unchanged flamingcow 2026-08-13 14:04:16 -07:00
  • d81594ffbf Temp-warning disable proven not to silence the firmware's internal temp poll; corrected-error channel stays untrustworthy, register-docs ask is the remaining path (open-questions §5) flamingcow 2026-08-13 11:03:47 -07:00
  • a3de66f746 Document the stale-read poisoning of the corrected-error channel: every burst decodes as a neighbor register, channel untrustworthy until stale reads are solved flamingcow 2026-08-13 10:57:54 -07:00
  • f9140ff8d9 Bringup waits for nothing (no sleeps, no link waits, SETs fire cable-or-not with advert readback), errors held off the display while a measure is in flight, status poll is a deadline not a retry count, ghost signals (implausible SNR, undefined ECD verdict) panic outright; persistent stale-pipeline bridge fact documented flamingcow 2026-08-13 10:49:01 -07:00
  • f2891886f3 Strip canaries, double-reads, retries and floors from the module protocol; every bcm method holds the per-module lock for its whole operation; facts stay in docs with internal-client contention marked unresolved flamingcow 2026-08-13 10:32:24 -07:00
  • 9d1f15045f Shared-mailbox reality: module firmware is its own handler client (internal GET_CURRENT_TEMP ~3.5s, proven idle-watch), handler writes wedge the uC in busy windows; quiet-window writes, bare GETs double-read with CMD-readback tripwire, SNR floor, SETs verified externally; sentinel handshake and wire-probe jumbo check removed flamingcow 2026-08-13 10:19:32 -07:00
  • e99c7121e7 Bridged MDIO reads verify freshness: a late async fetch serves the previous response as the wrong register (observed STATUS 0x0004 as 0.4dB SNR); unchanged-or-zero results re-read bare without re-arming until stable, first read always verified, identify retries against the constant PHY ID flamingcow 2026-08-13 08:26:22 -07:00
  • bba1fa5e02 Jumbo in the size mix (MTU 9000 + module jumbo pinned), check-first module config trusting GET reads, cable diag async at startup through the reset path, MODULES table dissolved into SETTINGS/LINKS, per-driver NIC counter sets, comment cleanup flamingcow 2026-08-13 08:04:26 -07:00
  • 979dc7a772 BCM module diagnostics replace timestamp probes: bringup forces EEE off and runs ECD (re-run on every reset, re-baselining past its blip), 1 Hz SNR margin + corrected counters on panel and console; X520 bench divergences bypassed and tracked in open-questions flamingcow 2026-08-13 07:10:39 -07:00
  • a00f2216b7 BCM bridge tolerates MCIA offset-write-then-read framing, proven on hardware via bcm_mcia_emu.py; MCIA question narrows to firmware acceptance of 0x56 and offset/framing details flamingcow 2026-08-12 21:39:46 -07:00
  • 4e5ba0bccf Sharpen MCIA open question from mlx5_ifc.h register format; drop offline-rig and instrumentation-flow framing flamingcow 2026-08-12 21:37:02 -07:00
  • 65b1e18004 Dissolve resolved analyses into standalone device docs; open-questions.md keeps only the four live problems; discard NIC-timestamp length path (BCM ECD is proven) and Aquantia length trivia (30m part, oracle-only) flamingcow 2026-08-12 21:30:16 -07:00
  • 8b021d186b Add full transcription of Marvell Alaska 88E151x public datasheet (168pp, 89 register tables) as CUX3610 family reference flamingcow 2026-08-12 21:15:05 -07:00
  • 1afe36a3c8 Remove WX1820: never had the hardware, evaluation was paper-only flamingcow 2026-08-12 21:10:38 -07:00
  • b6e0fe8978 Add NIC datasheets: 82599 rev3.5, 710-series v4.1, E810 full datasheet, ConnectX-5 user manual + mlx5 PRM flamingcow 2026-08-12 21:09:08 -07:00
  • 9cb82ca3fa Re-transcribe BCM84891L MDIO command and SFP register excerpts in full (all 45 commands, complete serial-ID table); scrub doc-provenance attribution and label all our interjections as field notes flamingcow 2026-08-12 21:02:30 -07:00
  • 5588ebec6f Resolve X520 open questions on hardware: ETQF raw-L2 steering and single-hold compound I2C proven; 82599 has no all-packet exact-timestamp path so it is disqualified as product NIC (diagnostics-only), counter route rejected for a cable tester flamingcow 2026-08-12 20:36:31 -07:00
  • 910379e614 Correct Wiitek danger analysis: whole 3.0x8000+/31.0xF000+ window is lethal, not just *.??64 -- 88Q2220 recipe is IN the danger zone; record live baseline and no-safe-VCT-path finding flamingcow 2026-08-12 19:50:15 -07:00
  • ad9bc9fae4 BCM ECD recovered from OpenBCM SDK and proven: 1E.4006 start, 1.A896 verdicts, 1.A897-9A per-pair meters -- meter-accurate on a 45m cable, healthy pairs report length flamingcow 2026-08-12 19:37:54 -07:00
  • c57816345f Restructure docs: per-device directories under modules/ and nics/ with co-located datasheets, state centralized in state.md, prose tightened into lists and tables flamingcow 2026-08-12 19:23:02 -07:00
  • dc1fa6538d Record FS probe sweep: AutogrEEEn found and forced off (defensive at bringup), identity pair map, FR count as metric, firmware DATA1 reliability caveat flamingcow 2026-08-12 18:41:32 -07:00
  • ff64b59fe0 Transcribe BCM PDFs to markdown visually (tables intact); catalog probe candidates: EEE advertised in reference bringup, EMI cmds are fast-retrain enables, 1588/loopback/ECD chapters missing flamingcow 2026-08-12 18:33:10 -07:00
  • 4023d7ccf0 Add FS/BCM capability inventory; drop SNR/power-backoff length proxies -- length is PHY features or NIC timestamps only flamingcow 2026-08-12 18:23:28 -07:00
  • 01e00dfffe BCM path proven on X520: fix multi-byte i2c read (SDA release), GET_SNR is 0x8030 invoked bare, IEEE SNR regs dead on BCM, module pause forced off flamingcow 2026-08-12 17:50:14 -07:00
  • 6f787c0873 Record X520 install: FS+Wiitek seated and linked, FS's honest EEPROM is what trips ixgbe qualification, uplink moved to enp88s0 flamingcow 2026-08-12 17:35:25 -07:00
  • 5f4a8ceb57 Vendor AQR datasheet, correct timestamp model (hw rx stamps are a hard requirement), order ConnectX-5, map 82599 bucket-timestamp routes flamingcow 2026-08-10 12:50:57 -07:00
  • 73074040e0 Answer open questions from desk analysis: ETQF steering, E820 is post-FEC, compound I2C op, forced co-location flamingcow 2026-08-10 11:51:39 -07:00
  • 8c8e0c7d32 Add open-questions doc for pre-hardware deep-dive flamingcow 2026-08-10 11:31:19 -07:00
  • 44e010caa9 Note Wiitek ixgbe RollBall client and flag ixgbe RX-steering as open investigation flamingcow 2026-08-10 11:29:05 -07:00
  • 3f1bb03e52 Record X520 ixgbe raw-i2c patch and BCM client prep in state doc flamingcow 2026-08-10 11:21:49 -07:00
  • 6597a11c33 Add in-repo project docs: goals, state, hardware, module-PHY transports, module diagnostics, and measurement lessons flamingcow 2026-08-10 10:34:26 -07:00
  • 6d73221123 Hold a fatal error on the framebuffer and reboot in five minutes rather than exiting, since init's death drops the kernel's panic screen over the cause flamingcow 2026-08-05 21:46:15 -07:00
  • cd259556d4 Build i40e into the appliance kernel, whose forbidden list predated the noise pair that needs it flamingcow 2026-08-05 21:46:15 -07:00
  • e7c73ca0a9 Reveal the build's commit hash in place of the reset label while a finger holds the top-right corner, and dev where go run left no stamp flamingcow 2026-08-05 16:13:20 -07:00
  • 2fcab83756 Drive a noise cable on the i40e pair, cycling its link down and up since the module PHYs ignore everything softer, and flag its absence beside the error columns flamingcow 2026-08-05 10:49:23 -07:00
  • 88f4f7da80 Poll the nic on the sampler's cadence, and reboot rather than exit when a clean return reaches PID 1 flamingcow 2026-08-05 08:18:44 -07:00
  • ab60cc1cfc Cap cpu idle exit latency for the life of the run, deep enough to keep C1 and shallow enough to block the rest flamingcow 2026-08-04 22:50:22 -07:00
  • 49eaa8a8a8 Take the rate epoch from the slowest stream's frontier, since reading a bucket claims every stream has delivered through it flamingcow 2026-08-04 22:38:10 -07:00
  • 7b2601a02e Fail loudly on a touch read, stop the workers before their sockets close, and file down the small edges flamingcow 2026-08-04 22:26:07 -07:00
  • 12cef6a89b Fold the shutdown flags into one, take the smallest frame to the wire minimum, drop the speed column flamingcow 2026-08-04 22:12:07 -07:00
  • 19b0f1d2ea Refuse a filter location something else holds, and the driver's word on how many it wrote flamingcow 2026-08-04 22:12:03 -07:00
  • f5d05d1fc5 Fail loudly on a drm read instead of leaving the panel frozen on its last frame flamingcow 2026-08-04 22:11:58 -07:00
  • dd94f4cab5 Set the socket buffers through the force options alone instead of falling back to the capped ones flamingcow 2026-08-04 22:01:10 -07:00
  • 4c7062d600 Take the line rate as a constant so nothing has to be plugged in, and drop the config box flamingcow 2026-08-04 21:58:52 -07:00
  • 01d673dc83 Check the header version on arrival and say what the error window actually spans flamingcow 2026-08-04 21:29:03 -07:00
  • 49de171ad0 Commit the receive counters once per batch instead of once per frame flamingcow 2026-08-04 21:25:04 -07:00
  • 21788fdd4f Judge a frame against the stream its socket receives rather than the one its header claims flamingcow 2026-08-04 21:19:08 -07:00
  • 51467231ee Fill what a rounded rectangle contains outright as spans instead of pixel by pixel flamingcow 2026-08-04 21:09:12 -07:00
  • ce44fe9866 Walk the control buffer by hand instead of allocating a message list per frame flamingcow 2026-08-04 20:48:17 -07:00
  • 1d54a1a1f6 Checksum the header and refuse sequence numbers the sender never sent flamingcow 2026-08-04 20:41:16 -07:00
  • 703039587b Bucket received frames by their mac receive stamp and read one bucket back flamingcow 2026-08-04 20:04:30 -07:00
  • 8db5c29882 Cover the loss window, rate window, error taxonomy and formatters with tests flamingcow 2026-08-04 15:46:12 -07:00
  • 63196eb691 Mirror the panel in the console table as one summed row in two sections flamingcow 2026-08-04 14:02:53 -07:00
  • fbfcabda7e Draw every panel figure from the latest sample instead of holding the totals flamingcow 2026-08-04 13:49:21 -07:00
  • 4e60757937 Rate from the newest bucket, stamped when the counters are actually read flamingcow 2026-08-04 13:45:16 -07:00
  • 2035d42734 Fold the leftover formatters into the SI ones and stop reallocating the draw scratch flamingcow 2026-08-04 13:37:19 -07:00
  • f5a6420cfa Drop the fatal flag now that every failed check is fatal flamingcow 2026-08-04 13:33:08 -07:00
  • 39c27166dc Hardcode the settled sizes, streams and batch instead of carrying flags for them flamingcow 2026-08-04 13:31:14 -07:00
  • 05e1958710 Cut the drm package comments back to what is not evident from the code flamingcow 2026-08-04 13:23:41 -07:00
  • 4fd3abaf25 Move the shared drm ioctl abi into internal/drm flamingcow 2026-08-04 13:21:50 -07:00
  • 66bfb88dd7 Make every failed check and unreadable counter fatal instead of degrading flamingcow 2026-08-04 13:03:07 -07:00
  • fb6a0d2c1b Push the new origin into the sample ring so a reset cannot underflow the totals flamingcow 2026-08-04 12:59:50 -07:00
  • a285b8999c Drop the counter padding that was never buying a cache line flamingcow 2026-08-04 12:53:53 -07:00
  • 06592cbc81 Stop counting a partly filled send vector as a failure flamingcow 2026-08-04 12:45:12 -07:00
  • 1f9b5ea62e Look the expected checksum up instead of carrying it in the frame flamingcow 2026-08-04 12:45:04 -07:00
  • 03b7ff4954 Drop the write-only direction fields and the unused pattern names flamingcow 2026-08-04 12:26:10 -07:00
  • 21b20d0071 Scale integer counts on the panel like every other figure flamingcow 2026-08-04 11:27:35 -07:00
  • 49a1a2f829 Read rx errors from the driver stats array and add the pcs counters flamingcow 2026-08-04 11:27:30 -07:00
  • 5eea6856fb Cut the comments back to the genuinely subtle ones flamingcow 2026-08-01 16:14:12 -07:00
  • 726c4c2445 Rework the panel onto SI figures, labelled chips and one spacing scale flamingcow 2026-08-01 16:07:44 -07:00
  • de2ff13eb6 Collapse errors into lost, corrupt, link and internal flamingcow 2026-07-31 17:10:25 -07:00
  • 3c8637f931 Show recent errors as labelled chips and rebuild the reset button to match flamingcow 2026-07-31 17:05:31 -07:00
  • f512391ee4 Capture the panel by reading the displayed drm buffer instead of fbdev flamingcow 2026-07-31 16:46:11 -07:00
  • 1c5bda37bf Drive the panel through drm and page flip between four scanout buffers flamingcow 2026-07-31 16:46:11 -07:00
  • 57d7c91df1 Sample the rate buckets on their own clock instead of the display refresh flamingcow 2026-07-31 16:15:16 -07:00
  • 5d2dbffb4a Add a harness that runs cabletest on a timer and captures the panel to png flamingcow 2026-07-31 16:15:16 -07:00
  • c94b7ae33d Show median bucket rates, slide the error window, and poll sysfs off the draw loop flamingcow 2026-07-31 15:45:03 -07:00
  • cf204f5a23 Add mkimage to build and install the image from the latest signed kernel tag flamingcow 2026-07-26 17:07:09 -07:00
  • ab0a8c8759 Take ns/m to 4.85, measured against a 6m cable flamingcow 2026-07-26 15:51:52 -07:00
  • 5676b2b581 Detect mounts by mount root, wait for the touchscreen, and default to eth0/eth1 flamingcow 2026-07-26 15:50:55 -07:00
  • 832a2b42d6 Mount the filesystems we need so this can run as PID 1 flamingcow 2026-07-26 10:54:19 -07:00
  • 5e2b36bdaa Clear staticcheck, gopls and go.mod warnings flamingcow 2026-07-26 10:33:38 -07:00
  • 102d53fb9b Turn the display portrait and split it into live and since-reset panels flamingcow 2026-07-26 10:27:41 -07:00
  • 4d102f377e Take the cable zero from the shortest delay seen rather than a flag flamingcow 2026-07-26 09:43:03 -07:00
  • e77574712d Cycle every payload pattern per packet and always run both directions flamingcow 2026-07-25 23:03:31 -07:00
  • 0f16edfe61 Count link and syscall failures instead of printing them flamingcow 2026-07-25 22:54:04 -07:00
  • 1b322bb32b Measure cable length from hardware transmit and receive timestamps flamingcow 2026-07-25 22:38:52 -07:00
  • 09411aebdf Reset everything from a held on-screen button or space flamingcow 2026-07-25 21:41:21 -07:00
  • b2441ba64a Redraw at 60Hz with adaptive rate smoothing, console output at 1Hz flamingcow 2026-07-25 21:30:37 -07:00
  • 12958ced56 Take the console into graphics mode while drawing flamingcow 2026-07-25 21:30:37 -07:00
  • 892e855207 Group the display into instant and cumulative sections on a shared grid flamingcow 2026-07-25 19:48:15 -07:00
  • 7a9567da55 Clear the framebuffer on exit flamingcow 2026-07-25 19:42:45 -07:00
  • 419bdc4bb7 Render the live status to the framebuffer in Atkinson Hyperlegible Mono flamingcow 2026-07-25 19:41:53 -07:00
  • 16416bc1b0 Draw the counter reset as a labelled rule across the table flamingcow 2026-07-25 19:31:03 -07:00
  • 269199366d Reset cumulative error counts on space flamingcow 2026-07-25 19:29:00 -07:00