Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: F-Stack/f-stack
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: dev
Choose a base ref
...
head repository: F-Stack/f-stack
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: feature/1.26
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 15 commits
  • 38 files changed
  • 1 contributor

Commits on Jun 18, 2026

  1. docs: add ff_rss_check optimization spec (zh, spec stage)

    Spec for three ff_rss_check optimizations: port-range kernel hook migration to FreeBSD 15.0, IPv6 hash support, and rte_thash_adjust_tuple dynamic-path optimization. Spec stage only (Chinese), no code changes.
    jfb8856606 committed Jun 18, 2026
    Configuration menu
    Copy the full SHA
    e5389cb View commit details
    Browse the repository at this point in the history
  2. feat(rss): migrate IPv4 RSS port-range selection hooks to FreeBSD 15.0

    Restore the FSTACK RSS local-port selection logic in in_pcb_lport_dest and the ff_in_pcbladdr hook in in_pcbconnect (dropped during the 13.0->15.0 upgrade), adapted to 15.0 (const inpcb, merged in_pcbconnect, RT_ALL_FIBS lookups). INPLOOKUP_LPORT_RSS_CHECK is cleared at entry. Adds 0.1 unit tests and fixes a pre-existing test_ff_dpdk_if link gap (no-op ff_tcp_hpts_softclock stub).
    jfb8856606 committed Jun 18, 2026
    Configuration menu
    Copy the full SHA
    22462f5 View commit details
    Browse the repository at this point in the history
  3. feat(rss): optimize dynamic ff_rss_check via rte_thash_adjust_tuple (…

    …IPv4)
    
    Add per-port thash ctx (ff_rss_thash_ctx_init) and ff_rss_adjust_sport that reverse-calcs a source port landing on the local queue, with a mandatory ff_rss_check re-verification (zero tolerance for wrong queue) and soft-scan fallback. Wire it as a fast path in in_pcb_lport_dest's table-miss branch, keeping the static-table hit path and macro-off native path byte-identical. Adds 0.3 unit tests incl. an EAL-backed toeplitz/softrss equivalence hit-rate probe (full-loop 100% landing).
    jfb8856606 committed Jun 18, 2026
    Configuration menu
    Copy the full SHA
    39f61e0 View commit details
    Browse the repository at this point in the history
  4. feat(rss): add IPv6 RSS hash/port-range support (scheme A, independen…

    …t v6 path)
    
    Add ff_rss_check6/ff_rss_tbl6_*/ff_rss_adjust_sport6 with an independent v6 static table and thash ctx (36B tuple, sport@256bit), plus IPv6 rule parsing in rss_tbl config. Wire v6 into in_pcb_lport_dest as a parallel sa_family branch and into in6_pcbconnect/in6_pcbladdr, keeping the v4 RSS path byte-identical (diff +98/-0). Mandatory ff_rss_check6 re-verification; adds v6 unit tests + hit-rate probe (full-loop 100% landing).
    jfb8856606 committed Jun 18, 2026
    Configuration menu
    Copy the full SHA
    fe7d190 View commit details
    Browse the repository at this point in the history
  5. test(rss): add rss_ct connect harness + ff_rss_self_queue_info for on…

    …-machine queue verification
    
    rss_ct issues N connects and prints the kernel-selected source ports per process/queue; ff_rss_self_queue_info exposes proc/queueid/nb_queues/reta_size (read-only). Used to verify on real NIC that selected sports land on the owning RSS queue.
    jfb8856606 committed Jun 18, 2026
    Configuration menu
    Copy the full SHA
    80f6391 View commit details
    Browse the repository at this point in the history
  6. docs(rss): add ff_rss_check optimization impl/verification report; up…

    …date layer3 RSS notes
    
    Records R-A/R-B/R-C implementation (commits, functions, line numbers), 31 unit tests with v4/v6 full-loop 100% queue landing, and on-machine verification (q0/q1 200/200 land on owning queue). Notes virtio reta_size=0 thash soft-fallback and no-IPv6-net real-machine limits, both covered by unit tests.
    jfb8856606 committed Jun 18, 2026
    Configuration menu
    Copy the full SHA
    9fe2cc2 View commit details
    Browse the repository at this point in the history

Commits on Jun 22, 2026

  1. feat(rss): make ff_rss_check re-verify in adjust_sport[6] runtime-gat…

    …ed, off by default
    
    Add config.ini [rss_check] recheck=0/1 switch. recheck=0 (default) skips the secondary ff_rss_check after rte_thash_adjust_tuple success, realizing ~100 ns/call saving (3 runs: 0.30 vs 99.4 ns/call, ~300x ratio). recheck=1 keeps R-B/R-C zero-tolerance re-verify for debug. Unit tests: 5 new cases + 04-06 enforce recheck=1 on existing hitrate; 36 run, 35 PASSED, 1 SKIPPED (microbench, ctx-unready).
    
    Spec: docs/ff_rss_check_opt_spec/zh_cn/ 01-08 R-D sections + 10 §5-bis report. Layer3 §2.4 updated.
    jfb8856606 committed Jun 22, 2026
    Configuration menu
    Copy the full SHA
    f7fd3b6 View commit details
    Browse the repository at this point in the history
  2. docs: add R-E (IP_BIND_ADDRESS_NO_PORT) spec and gap-scan checklist

    Two spec deliverables (docs only, no code changes):
    
    1. ff_rss_check_opt_spec: add requirement 0.5 / milestone R-E for porting upstream commit cb9b4d4 (IP_BIND_ADDRESS_NO_PORT) to FreeBSD 15.0. 15.0 already has the connect-time RSS path (in_pcb_lport_dest with INPLOOKUP_LPORT_RSS_CHECK), so only the bind-side gates are needed: hunk1 in in_pcbbind to skip in_pcbinshash when inp_lport==0, hunk2 in in_pcbbind_setup to skip the early in_pcb_lport call. IPv6 sync is added as recommended (in6_pcbbind delayed allocation + in6_pcbconnect L515 condition relaxation). Covers 10 chapters: overview, requirement, current-state-gap, external-research, design, interface, milestone, test, baseline, review-gate.
    
    2. freebsd_13_to_15_upgrade_spec/04 §11: add gap-scan checklist of 13.0 FSTACK customizations vs current 15.0 tree (10 items, evidence-based with file:line). Final classification: (a) port: #1 IP_BIND v4, #2 v6 sync, #6 ng_socket kldload; (b) already ported via stub: #7/#8 ipfw; (c) not applicable: #3/#4 mcast (15.0 two trees strictly layered, no out-of-bound), #5 require_unique_port (path removed), #9 if_spppsubr.c (file does not exist), #10 namei.h NDFREE (macros refactored). All line numbers verified by grep/read_file.
    jfb8856606 committed Jun 22, 2026
    Configuration menu
    Copy the full SHA
    35aa958 View commit details
    Browse the repository at this point in the history
  3. feat(rss): port IP_BIND_ADDRESS_NO_PORT (bind-then-connect) from upst…

    …ream cb9b4d4 to FreeBSD 15.0
    
    Defer source port allocation in in_pcbbind/in6_pcbbind when port==0 so
    connect() can pick an RSS-aware source port via the R-A
    INPLOOKUP_LPORT_RSS_CHECK path. v6 connect outer condition is relaxed
    under FSTACK to (in6p_laddr unspec || inp_lport==0) so bind-then-connect
    actually enters the RSS branch; the inner in6p_laddr overwrite is now
    guarded by IN6_IS_ADDR_UNSPECIFIED to preserve a user-bound v6 address.
    All hunks gated by #ifdef/#ifndef FSTACK; FSTACK off retains native
    FreeBSD 15.0 semantics (REUSEPORT_LB MPASS at L740 unaffected).
    Baseline 13.0 contains none of these three hunks; this is a fresh
    addition rather than a missed-port migration.
    jfb8856606 committed Jun 22, 2026
    Configuration menu
    Copy the full SHA
    ff9e3c4 View commit details
    Browse the repository at this point in the history
  4. docs(rss): backfill R-E (IP_BIND_ADDRESS_NO_PORT) impl/verification r…

    …eport; update layer3 RSS notes
    
    Add §6 R-E to ff_rss_check_opt_spec/zh_cn/10-实施与验证报告.md with landing
    points, build/lint, unit-test zero-regression, static call-chain trace
    (v4 8 steps + v6 7 steps), on-machine limitations, and 8-gate audit.
    Rename existing §6 conclusion to §7 and extend it to cover all five
    optimizations (0.1/0.3/0.2/0.4/0.5). Append one-liner R-E note to
    docs/03-LAYER3-FUNCTIONS.md RSS section.
    jfb8856606 committed Jun 22, 2026
    Configuration menu
    Copy the full SHA
    23e5459 View commit details
    Browse the repository at this point in the history

Commits on Jun 23, 2026

  1. Configuration menu
    Copy the full SHA
    ae5a9f6 View commit details
    Browse the repository at this point in the history
  2. fix(rack): use static inline for tcp_hw_highest_rate to fix -O0 link …

    …failure
    
    Upstream FreeBSD 15.0 declares tcp_hw_highest_rate with GNU89 `inline`
    (no `static`); under -O2 it is inlined away, but under -O0 (DEBUG) it
    emits external references with no out-of-line definition in libfstack.a,
    breaking example/ and app/nginx linking. Align with the same header's
    other inline helpers which all use `static inline`.
    jfb8856606 committed Jun 23, 2026
    Configuration menu
    Copy the full SHA
    1f29590 View commit details
    Browse the repository at this point in the history

Commits on Jun 24, 2026

  1. Configuration menu
    Copy the full SHA
    c42340d View commit details
    Browse the repository at this point in the history

Commits on Jun 25, 2026

  1. Configuration menu
    Copy the full SHA
    8feb4a9 View commit details
    Browse the repository at this point in the history
  2. Modify rss doc.

    jfb8856606 committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    183054d View commit details
    Browse the repository at this point in the history
Loading