)]}'
{
  "commit": "f633dda3283bceb4927bb39aded249a7a2478ac1",
  "tree": "0b029305c73bb1486919a07fda2cedb29a6b9356",
  "parents": [
    "fd0191d9375d3f9a775b1e77c1864c28dea5f097"
  ],
  "author": {
    "name": "Valentin Kindschi",
    "email": "valentin.kindschi@fiveco.ch",
    "time": "Tue Oct 20 12:51:49 2026 +0200"
  },
  "committer": {
    "name": "Luiz Augusto von Dentz",
    "email": "luiz.von.dentz@intel.com",
    "time": "Tue Oct 20 14:08:52 2026 -0400"
  },
  "message": "Bluetooth: hci_sync: re-enable legacy advertising on resume\n\nhci_resume_advertising_sync() never re-enables advertising on a\ncontroller without extended advertising.\n\nIt restores HCI_ADVERTISING from advertising_old_state, then calls\nhci_schedule_adv_instance_sync(), which starts with:\n\n  if (hci_dev_test_flag(hdev, HCI_ADVERTISING) \u0026\u0026 !ext_adv_capable(hdev))\n          return -EPERM;\n\nThe flag it tests was set a few lines earlier by the resume itself, so\nthe call returns -EPERM without sending anything. The return value is\ndiscarded by every caller, so the failure is silent: advertising_paused\nis cleared, HCI_ADVERTISING is set, and the controller is not\nadvertising.\n\nObserved on a BCM43455 (no extended advertising) after an active scan:\nbtmon shows the pause disabling advertising and no re-enable in the ten\nseconds that follow, the device does not appear in another controller\u0027s\nscan, and btmgmt info still reports \"advertising\" in current settings.\n\nEnable instance 0x00 directly in that case, the way reenable_adv_sync()\nalready does for the same situation. Instances continue to go through\nhci_schedule_adv_instance_sync() so the software rotation loop is\nrearmed.\n\nThis affects every caller of hci_resume_advertising_sync(), not only the\nscan path: address resolution changes, accept list updates, discovery\nstop, suspend/resume and the end of an LE connection attempt all leave\nadvertising disabled on such a controller today.\n\nThe resume does nothing when the controller is already advertising, as\nit is after directed advertising was started for a peripheral\nconnection, so it does not replace that advertising.\n\nerr is initialised because the extended branch leaves it unset when\nadv_instances is empty and HCI_LE_ADV_0 is clear.\n\nFixes: ad383c2c65a5 (\"Bluetooth: hci_sync: Enable advertising when LL privacy is enabled\")\nCc: stable@vger.kernel.org\nAssisted-by: Claude:claude-opus-5.5 btmon\nSigned-off-by: Valentin Kindschi \u003cvalentin.kindschi@fiveco.ch\u003e\nSigned-off-by: Luiz Augusto von Dentz \u003cluiz.von.dentz@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7ac26daba966501415af085e673114d3ab5e9b55",
      "old_mode": 33188,
      "old_path": "net/bluetooth/hci_sync.c",
      "new_id": "c2f2a0c0e73d9d51e3796bbdcfbc90404dec7355",
      "new_mode": 33188,
      "new_path": "net/bluetooth/hci_sync.c"
    }
  ]
}
