)]}'
{
  "commit": "87c101f9516935a88f4c3f01c743d206bfb3bf65",
  "tree": "9b13f5b49728ac9d2f0a24a6879dc9276993bf0c",
  "parents": [
    "b4abde028e1eb1bad3ba4bf6caffde6b66d11613"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Fri Feb 16 07:26:03 2024 -1000"
  },
  "committer": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Fri Feb 16 07:26:03 2024 -1000"
  },
  "message": "r8152: Convert from tasklet to BH workqueue\n\ntasklet is being replaced by BH workqueue. No noticeable behavior or\nperformance changes are expected. The following is how the two APIs map:\n\n- tasklet_setup/init()\t\t-\u003e INIT_WORK()\n- tasklet_schedule()\t\t-\u003e queue_work(system_bh_wq, ...)\n- tasklet_hi_schedule()\t\t-\u003e queue_work(system_bh_highpri_wq, ...)\n- tasklet_disable_nosync()\t-\u003e disable_work()\n- tasklet_disable[_in_atomic]()\t-\u003e disable_work_sync()\n- tasklet_enable()\t\t-\u003e enable_work() + queue_work()\n- tasklet_kill()\t\t-\u003e cancel_work_sync()\n\nNote that unlike tasklet_enable(), enable_work() doesn\u0027t queue the work item\nautomatically according to whether the work item was queued while disabled.\nWhile the caller can track this separately, unconditionally scheduling the\nwork item after enable_work() returns %true should work for most users.\n\nr8152 conversion has been tested by repeatedly forcing the device to go\nthrough resets using usbreset under iperf3 generated traffic.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9bf2140fd0a1f4dc97a0553854c83cca184d574b",
      "old_mode": 33188,
      "old_path": "drivers/net/usb/r8152.c",
      "new_id": "24e284b9eb381b49ae07b18e6144fb66215cc911",
      "new_mode": 33188,
      "new_path": "drivers/net/usb/r8152.c"
    }
  ]
}
