)]}'
{
  "commit": "28aeeeb2bc7b80656053ea26a5589c52aeae8b32",
  "tree": "8077fb3579c2a04248fa5efdaae185799dcc6f85",
  "parents": [
    "d82852ce4b81b39237d94c9269d5e1ea46fea639"
  ],
  "author": {
    "name": "William A. Kennington III",
    "email": "wak@google.com",
    "time": "Sat Oct 17 20:11:13 2026 +0000"
  },
  "committer": {
    "name": "William A. Kennington III",
    "email": "wak@google.com",
    "time": "Thu Oct 29 17:59:57 2026 +0000"
  },
  "message": "meta-google: gbmc-bridge: Solicit RAs when a gbmcbr port comes up\n\ngbmcbr stays up when one of its ports loses its peer (another BMC or\nthe host), so nothing solicited RAs when the peer came back: we only\nheard its prefixes and routes again at our next periodic RS, up to\nGBMC_RA_RS_INTERVAL (30s) later, or later still for its unsolicited RAs.\n\nStart gbmc-br-port-rs@\u003cport\u003e, a oneshot that solicits RAs on gbmcbr 1s\nafter a port gains carrier, retries after 2s and 4s while nobody\nanswers (the peer\u0027s end of a freshly enumerated USB link often joins its\nbridge a moment later), and logs which routers answered. It runs\noutside gbmc-ip-monitor, which starts it with --no-block and never\nwaits for it. USB NCM/ECM ports report operstate UNKNOWN, so go by the\ncarrier in sysfs, and skip the always-up gbmcbr* ports.\n\nAlso use it for the RS on gbmcbr link events, instead of running rdisc6\nsynchronously in the event loop each time; starting it while it still\nruns is a no-op, which limits how often we solicit.\n\nTested: On a head+two-tray system with the hook and unit overridden:\nflapping the head\u0027s port to a tray logged \"port enu1u5u1u2b1 carrier UP\"\nand 2.4s later an RS answered by both trays; flapping a tray\u0027s gusbem0\nlogged an RS answered by the head and the other tray 2.1s later.\nEarlier, during a head reboot, the first RS went out before the head\u0027s\nend of the USB link joined gbmcbr and got no answer, which the retries\ncover.\n\nChange-Id: Idd4bfea6bcd535473f6db882c010777038c3fafd\nSigned-off-by: William A. Kennington III \u003cwak@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "427ce5eda063bfa2db9391257685ab91359809d8",
      "old_mode": 33188,
      "old_path": "meta-google/recipes-google/networking/gbmc-bridge.bb",
      "new_id": "b64f32b571f3c0d7d46ddb70efa6597edd807d34",
      "new_mode": 33188,
      "new_path": "meta-google/recipes-google/networking/gbmc-bridge.bb"
    },
    {
      "type": "modify",
      "old_id": "fb63d720c4f39231c7c824ba6e646d6981d4a765",
      "old_mode": 33188,
      "old_path": "meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-from-ra.sh",
      "new_id": "ecc6089471d1fa37b6446debed90a61dcfdafaad",
      "new_mode": 33188,
      "new_path": "meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-from-ra.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3587c811b71f67f076ca5da053e8c10df9083498",
      "new_mode": 33188,
      "new_path": "meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-port-rs.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9811b961abe25e0f3ee82f954e64a7544c074078",
      "new_mode": 33188,
      "new_path": "meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-port-rs@.service"
    }
  ]
}
