)]}'
{
  "commit": "e8f9e3ec17a2425f4c0bf1ca6cae84835aca2d30",
  "tree": "7a679f87ced34c64cff8b2c8820fc312b618f73e",
  "parents": [
    "b82cc442aa533fc594c1a076653182f606099d12"
  ],
  "author": {
    "name": "Joshua Hay",
    "email": "joshua.a.hay@intel.com",
    "time": "Mon Dec 15 13:42:42 2025 -0800"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@linuxfoundation.org",
    "time": "Thu Jan 08 10:15:02 2026 +0100"
  },
  "message": "idpf: add support for Tx refillqs in flow scheduling mode\n\n[ Upstream commit cb83b559bea39f207ee214ee2972657e8576ed18 ]\n\nChanges from original commit:\n- Adjusted idpf_tx_queue assert size to align with 6.12 struct definition\n\nIn certain production environments, it is possible for completion tags\nto collide, meaning N packets with the same completion tag are in flight\nat the same time. In this environment, any given Tx queue is effectively\nused to send both slower traffic and higher throughput traffic\nsimultaneously. This is the result of a customer\u0027s specific\nconfiguration in the device pipeline, the details of which Intel cannot\nprovide. This configuration results in a small number of out-of-order\ncompletions, i.e., a small number of packets in flight. The existing\nguardrails in the driver only protect against a large number of packets\nin flight. The slower flow completions are delayed which causes the\nout-of-order completions. The fast flow will continue sending traffic\nand generating tags. Because tags are generated on the fly, the fast\nflow eventually uses the same tag for a packet that is still in flight\nfrom the slower flow. The driver has no idea which packet it should\nclean when it processes the completion with that tag, but it will look\nfor the packet on the buffer ring before the hash table.  If the slower\nflow packet completion is processed first, it will end up cleaning the\nfast flow packet on the ring prematurely. This leaves the descriptor\nring in a bad state resulting in a crash or Tx timeout.\n\nIn summary, generating a tag when a packet is sent can lead to the same\ntag being associated with multiple packets. This can lead to resource\nleaks, crashes, and/or Tx timeouts.\n\nBefore we can replace the tag generation, we need a new mechanism for\nthe send path to know what tag to use next. The driver will allocate and\ninitialize a refillq for each TxQ with all of the possible free tag\nvalues. During send, the driver grabs the next free tag from the refillq\nfrom next_to_clean. While cleaning the packet, the clean routine posts\nthe tag back to the refillq\u0027s next_to_use to indicate that it is now\nfree to use.\n\nThis mechanism works exactly the same way as the existing Rx refill\nqueues, which post the cleaned buffer IDs back to the buffer queue to be\nreposted to HW. Since we\u0027re using the refillqs for both Rx and Tx now,\ngenericize some of the existing refillq support.\n\nNote: the refillqs will not be used yet. This is only demonstrating how\nthey will be used to pass free tags back to the send path.\n\nSigned-off-by: Joshua Hay \u003cjoshua.a.hay@intel.com\u003e\nReviewed-by: Madhu Chittim \u003cmadhu.chittim@intel.com\u003e\nTested-by: Samuel Salin \u003cSamuel.salin@intel.com\u003e\nSigned-off-by: Tony Nguyen \u003canthony.l.nguyen@intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e03b6ac72894e04836236cc14da06ad1b3bb028c",
      "old_mode": 33188,
      "old_path": "drivers/net/ethernet/intel/idpf/idpf_txrx.c",
      "new_id": "bbcedb31dfee0004799644e750663446f0f83dbc",
      "new_mode": 33188,
      "new_path": "drivers/net/ethernet/intel/idpf/idpf_txrx.c"
    },
    {
      "type": "modify",
      "old_id": "77389653f66648143602d80b9ea9a44055e96dec",
      "old_mode": 33188,
      "old_path": "drivers/net/ethernet/intel/idpf/idpf_txrx.h",
      "new_id": "510c6e95af3a5729c38197a391c855e09cf5b63b",
      "new_mode": 33188,
      "new_path": "drivers/net/ethernet/intel/idpf/idpf_txrx.h"
    }
  ]
}
