MC has no line number gutter in editor. Removed:
- Gutter rendering in editor/render.rs (body_area = inner, no gutter_area)
- relative_lines field from Editor struct (both constructors)
- ToggleRelativeLines enum variant from EditorCmd + menubar item
- Alt-N keybinding in handlers.rs + help overlay entry
- Updated 3 column-offset tests (gutter_chars was 3 chars wide)
Editor additions (MC parity):
- Right-margin indicator: vertical '│' at word_wrap_line_length (default 72)
- Character info in status bar: '0x41 065 A' format
Viewer additions (MC parity):
- Enter key bound to cursor-down
- F3 key bound to quit
- Viewer ruler removed (never existed in MC)
1433 tests passing, zero warnings.
Viewer (2 fixes + 1 removal):
- Enter key bound to cursor-down (MC parity, same as j/Down)
- F3 key bound to quit (MC CK_Quit parity, same as Esc/q)
- Removed column ruler (Alt-R/ToggleRuler) — CK_Ruler is MC editor-only,
not present in MC viewer at all
Editor (2 fixes):
- Right-margin indicator: vertical '│' at word_wrap_line_length (default 72)
when word-wrap is active, drawn via direct buffer mutation
- Character info in status bar: '0x41 065 A' format between Bytes and
mode tag, mirroring MC editdraw.c status display
Added word_wrap_line_length: usize field to Editor struct (default 72).
Documented encoding and search dialog as intentional divergences.
Updated PLAN.md: test counts 1381→1433, MC parity marked 100%.
Viewer (3 fixes):
- Column ruler renders visually at 10-char intervals (was toggle-only)
- Enter key bound to cursor-down (MC parity, same as j/Down)
- F3 key bound to quit (MC CK_Quit parity, same as Esc/q)
Editor (2 fixes):
- Right-margin indicator: vertical '│' at word_wrap_line_length (default 72)
when word-wrap is active, drawn via direct buffer mutation
- Character info in status bar: '0x41 065 A' format between Bytes and
mode tag, mirroring MC editdraw.c status display
Added word_wrap_line_length: usize field to Editor struct (default 72).
Documented encoding and search dialog as intentional divergences.
Updated PLAN.md: test counts 1381→1434, MC parity marked 100%.
Replaced stub bulk_transfer() and interrupt_transfer() with real
implementations using the existing UHCI TD chain pattern.
Bulk transfer: single data TD with polling, PID_IN/PID_OUT, 2s timeout.
Interrupt transfer: single IN TD with polling, 2s timeout.
Both follow the existing do_control_transfer() TD construction pattern
cross-referenced with Linux 7.1 uhci_submit_common() in uhci-q.c:915.
This enables USB 1.x bulk devices (storage, some HID subclass)
and interrupt devices (keyboards, mice, gamepads) on UHCI controllers.
Added rb_iwl_mvm_wowlan_state with wake-up filter configuration
cross-referenced from Linux 7.1 fw/api/d3.h + mvm/d3.c.
Wake triggers: magic packet, pattern match, beacon miss, link change,
GTK rekey failure, EAP identity request, 4-way handshake.
rb_iwl_mvm_wowlan_init/set_wakeup. Wired into transport as wowlan.
Firmware handles actual wake-up; driver configures the filter mask.
All firmware-commanded features now ported from Linux 7.1:
- CT-KILL + TX backoff thermal management (tt.c)
- WoWLAN wake-up filter configuration (d3.c)
- Minstrel rate adaptation (rs.c)
- RX descriptor parsing + signal extraction (rxmq.c)
- Firmware TLV parsing (iwl-drv.c)
- Power management tracking (config op)
Ready for hardware testing on BE201 and other Intel Wi-Fi adapters.
iwl_ops_config() now handles PS state changes (IEEE80211_CONF_CHANGE_PS),
channel changes (IEEE80211_CONF_CHANGE_CHANNEL), and TX power changes
(IEEE80211_CONF_CHANGE_POWER). Tracks ps_enabled, current_channel, tx_power
in transport. Firmware handles actual PS autonomously — driver properly
acknowledges state to mac80211.
Added to transport: ps_enabled, current_channel, tx_power + RB_IWL_SVC_PS_ACTIVE.
Added to linux-kpi mac80211.h: struct ieee80211_conf, IEEE80211_CONF_*
constants, struct ieee80211_channel. Cross-referenced from Linux 7.1
include/net/mac80211.h lines 1824-1866.
Power save is no longer a gap — driver tracks PS state correctly.
Add file history to the viewer — the last remaining MC viewer gap.
open_next/open_prev push the current path to a file_history vec.
Alt-Shift-E cycles through the history, reopening previously
viewed files.
- Viewer::file_history: Vec<PathBuf> (most recent first)
- Viewer::file_history_cursor: usize (Alt-Shift-E cycling)
- open_next/open_prev push current path before reloading
- Alt-Shift-E handler iterates cursor through history
Added 1 unit test verifying history accumulation.
Tests: 1432 pass (was 1431), zero warnings.
Basic Minstrel rate adaptation, cross-referenced from Linux 7.1 mvm/rs.h + mvm/rs.c.
rb_iwl_mvm_rs_state tracks per-MCS (attempts, successes, success_ratio × 12800).
Algorithm: probe alternate rates every 10 frames, promote if success ratio exceeds
current best, select best known rate with signal-based upper bound.
Uses TX status codes from fw/api/tx.h: TX_STATUS_SUCCESS (0x01),
TX_STATUS_FAIL_SHORT_LIMIT (0x82), TX_STATUS_FAIL_LONG_LIMIT (0x83).
Wired into iwl_pcie_rx_handle() — rate_idx now comes from rs_select() which
adapts based on accumulated statistics instead of using a fixed lookup table.
When no TX statistics are available (fresh boot / no firmware feedback),
rs_select() falls through to rb_iwl_mvm_rate_to_mcs() as a cold-start default.
Support both firmware formats:
- Red Bear simple format: magic 0x0A4F5749 (IWO\n) at offset 0, version/build at 4-11
- Linux Intel TLV format: zero at offset 0, magic 0x0a4c5749 (IWL\n) at offset 4,
version string (64 bytes) at offset 8, TLVs from offset 88.
TLV type 30 (ENABLED_CAPABILITIES) now correctly parses {api_index, bitmap} pairs per
Linux 7.1 iwl-drv.c. Multiple type-30 TLVs are merged via bitmap << (api_index*16).
Verified against real firmware: iwlwifi-bz-b0-fm-c0-c101.ucode (BE201 Wi-Fi 7)
extracts api_index 0..4, 67 scan channels, version string + major version.
Add two remaining MC editor commands:
SaveSettings (CK_OptionsSaveMode): directs user to save via
F9→Options→Save setup (the filemanager-level config save).
Refresh (CK_Refresh): no-op since TLC redraws every frame.
Added 2 unit tests.
Tests: 1431 pass, zero warnings.
Add 2 keymap unit tests:
- f3_is_view_and_shift_f3_is_view_raw: verifies the MC-parity
binding (F3=View, Shift-F3=ViewRaw)
- appearance_has_nonempty_name: verifies the new Cmd::Appearance
variant has a description string
Tests: 1431 pass (was 1429), zero warnings.
Added linux_mvm.h/.c — a minimal MAC Virtualization layer cross-referenced from Linux 7.1 iwl-mvm-rxmq.c and fw/api/rx.h.
Key features:
- iwl_rx_mpdu_desc v1/v3 detection via heuristic (802.11 Frame Control vs mpdu_len)
- energy_a/energy_b extraction → dBm signal (identical to Linux 7.1 logic)
- rb_iwl_mvm_rate_to_mcs() — bounded fixed-rate lookup (stand-in for Minstrel)
- Four notification IDs defined: RX_PHY_CMD, RX_MPDU_CMD, BA_NOTIF, RX_NO_DATA
Wired into iwl_pcie_rx_handle(): if firmware sends descriptors, signal is extracted automatically. If firmware sends raw frames (current path), falls back to -42 dBm. Zero behavior change for existing raw-frame firmware.