)]}'
{
  "commit": "bbd7e97c15e1d493ee10fc6d1d59ec05e9b6bfd6",
  "tree": "29bcd745b70bac44d8e24adbd70aa5934181af68",
  "parents": [
    "cc9fb409777230d49bebd2452edc6f4da253dd4d"
  ],
  "author": {
    "name": "Per K",
    "email": "perkj@webrtc.org",
    "time": "Fri Oct 09 13:57:44 2026"
  },
  "committer": {
    "name": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Oct 09 15:01:43 2026"
  },
  "message": "DualPi2: Fix L4S double marking and backlog guard\n\nAligns DualPi2NetworkQueue marking and dropping behavior with RFC 9332\nand Linux sch_dualpi2 (!drop_early):\n\n1. Single L4S marking on dequeue: Previously, ShouldTakeAction() rolled\n   the random PI2 marking probability for ECT(1) packets in both\n   EnqueuePacket() and DequeuePacket(), resulting in an effective\n   marking probability of 2*p - p^2 instead of p. L4S packets are now\n   only evaluated for marking on dequeue.\n2. Time-based step_threshold: Replaces the byte-based step_threshold_\n   (which required Config::link_rate to be set and dropped classic\n   packets on enqueue) with Config::step_threshold as a TimeDelta\n   (defaulting to PlusInfinity) checked against L4S packet sojourn time\n   on dequeue.\n3. Standing-queue backlog guard: Adds Config::min_backlog_packets\n   (defaulting to 2) so that small 1-packet bursts are not marked or\n   dropped when there is no standing queue backlog.\n\nBug: webrtc:447037083, webrtc:42225697\nChange-Id: I2f75a159f895c6b994e2665ce9f77d0fb6f6cb45\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/508160\nReviewed-by: Rasmus Brandt \u003cbrandtr@webrtc.org\u003e\nCommit-Queue: Per Kjellander \u003cperkj@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#48841}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "200343090e64d805ad5237bbbfa090b39bb2d35c",
      "old_mode": 33188,
      "old_path": "api/test/network_emulation/BUILD.gn",
      "new_id": "3cdee50e10d7ec6be41a41fbfb229769e02013a2",
      "new_mode": 33188,
      "new_path": "api/test/network_emulation/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "a05e49cbe18bd3675817c776efaeaf358157c98f",
      "old_mode": 33188,
      "old_path": "api/test/network_emulation/dual_pi2_network_queue.cc",
      "new_id": "098fa4d68bdf0e4cfcdb345423e83aa178b99d4c",
      "new_mode": 33188,
      "new_path": "api/test/network_emulation/dual_pi2_network_queue.cc"
    },
    {
      "type": "modify",
      "old_id": "6d50684b21579a7ea5d930dc530fb1c9b6e1f62d",
      "old_mode": 33188,
      "old_path": "api/test/network_emulation/dual_pi2_network_queue.h",
      "new_id": "ce64ac558013ac67acaf27834062ccb5c823bf9b",
      "new_mode": 33188,
      "new_path": "api/test/network_emulation/dual_pi2_network_queue.h"
    },
    {
      "type": "modify",
      "old_id": "d7a429d2032912cf5c1003e4fed16e436374da0b",
      "old_mode": 33188,
      "old_path": "api/test/network_emulation/dual_pi2_network_queue_unittest.cc",
      "new_id": "c169ff5ad1fb586d9360f360e60bd3189ea3f327",
      "new_mode": 33188,
      "new_path": "api/test/network_emulation/dual_pi2_network_queue_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "2e4b966ac7eb80d69ee198a0eb6c23a7cb0854b8",
      "old_mode": 33188,
      "old_path": "test/peer_scenario/bwe_integration_tests/scream_test.cc",
      "new_id": "07ac792da03eee4e7d319cb98aa7fb92f42e13f0",
      "new_mode": 33188,
      "new_path": "test/peer_scenario/bwe_integration_tests/scream_test.cc"
    }
  ]
}
