)]}'
{
  "commit": "26de78d42bc29bd6de7511c6244b17d4a7f36724",
  "tree": "2296234e8ec963d5a2a7ae4f992c8958bbeb18e5",
  "parents": [
    "ace6b56ac070d02e7920bdad33644185a6af26ab"
  ],
  "author": {
    "name": "ripere",
    "email": "ripere@google.com",
    "time": "Wed Nov 11 08:47:00 2026 -0800"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Nov 11 08:48:05 2026 -0800"
  },
  "message": "Add an opt-in UDP GRO mode to QuicPacketReader.\n\nWith GRO, the kernel can hand a socket\nback-to-back datagrams of the same size from the same peer as one GRO train,\nwhich a single read returns.\n\nSupporting UDP GRO on the QUIC socket requires to configure the reader and the socket at QUIC client creation time.\n\nFor the reader case, `QuicPacketReader` cannot read GRO trains today because its packet buffers can only hold\none datagram, and it would treat a train as one packet. This change adds `QuicPacketReader::Options::enable_gro`. When it is set, the reader uses packet\nbuffers large enough for a whole train (64 KB per slot instead of 1,472 bytes,\nabout 1 MB per reader), asks for the GRO segment size on each read, and\ndispatches each packet of a train separately, with the train\u0027s addresses,\nreceipt time, and other per-datagram metadata.\n\nFor the socket case, this adds\n`QuicUdpSocketApi::EnableUdpGro` to set the UDP_GRO socket option.\n\nReaders will only allocate the GRO-sized buffers when explicitly passing the option at creation time, so behavior is unchanged for existing users.\n\nPiperOrigin-RevId: 1019227871\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1d4515c5b52d464b78fe4ecd8ab28b7e35ed7978",
      "old_mode": 33188,
      "old_path": "build/source_list.bzl",
      "new_id": "808b5cd62be5c86f203edb121dae2e28c2954789",
      "new_mode": 33188,
      "new_path": "build/source_list.bzl"
    },
    {
      "type": "modify",
      "old_id": "ecbc2d38a16ce4131393ad57e45b3aea82923e1a",
      "old_mode": 33188,
      "old_path": "build/source_list.gni",
      "new_id": "d87c967117d82d6b8f1dd83b322b306e1a255e36",
      "new_mode": 33188,
      "new_path": "build/source_list.gni"
    },
    {
      "type": "modify",
      "old_id": "1945c17c2d664a108dbd77a7807d01cccb93c66b",
      "old_mode": 33188,
      "old_path": "build/source_list.json",
      "new_id": "9be762b6361406067e65706777ffaaa397d0e191",
      "new_mode": 33188,
      "new_path": "build/source_list.json"
    },
    {
      "type": "modify",
      "old_id": "96b9a6613221d1358a29d74b6acb976995c7b5b2",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_packet_reader.cc",
      "new_id": "3dea5d683f31427b28b2bdb23223d452d7856916",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_packet_reader.cc"
    },
    {
      "type": "modify",
      "old_id": "34c171b42768f4b151f4fe9b2ae70eb75b706f47",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_packet_reader.h",
      "new_id": "94a5d17e4100a2bdfd526c56861efa14f7b91b1f",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_packet_reader.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "494dffadac6d5c790c6896641647a016f96cb403",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_packet_reader_test.cc"
    },
    {
      "type": "modify",
      "old_id": "145c24ae782341650edb195bf353116ca03315bb",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_udp_socket.cc",
      "new_id": "280cbf714ee2e244cbd8384ad821f875fc564d11",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_udp_socket.cc"
    },
    {
      "type": "modify",
      "old_id": "750d9cafc57a364b8d4cf0a729f258eb14ec69ba",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_udp_socket.h",
      "new_id": "3fa3d8f3eb3f3c771fe32f0d6ba2d3bda91f4b97",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_udp_socket.h"
    },
    {
      "type": "modify",
      "old_id": "0635c3f0c3cab28abfa661ee9a7ab6d726c1ae93",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_udp_socket_posix.inc",
      "new_id": "2dbe5ddb9965e899208e8fb4c4292cc66f8bac09",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_udp_socket_posix.inc"
    }
  ]
}
