1. 18 Sep, 2015 2 commits
    • Szymon Janc's avatar
      Bluetooth: Fix reporting incorrect EIR in device found mgmt event · 6818375e
      Szymon Janc authored
      Some remote devices (ie Gigaset G-Tag) misbehave with ADV data length.
      This can lead to incorrect EIR format in device found event when
      ADV_DATA and SCAN_RSP are merged (terminator field before SCAN_RSP
      part).
      
      Fix this by inspecting ADV_DATA and correct its length if terminator
      is found.
      
      > HCI Event: LE Meta Event (0x3e) plen 42              [hci0] 32.172182
            LE Advertising Report (0x02)
              Num reports: 1
              Event type: Connectable undirected - ADV_IND (0x00)
              Address type: Public (0x00)
              Address: 7C:2F:80:94:97:5A (Gigaset Communications GmbH)
              Data length: 30
              Flags: 0x06
                LE General Discoverable Mode
                BR/EDR Not Supported
              Company: Gigaset Communications GmbH (384)
                Data: 021512348094975abbc5
              16-bit Service UUIDs (partial): 1 entry
                Battery Service (0x180f)
              RSSI: -65 dBm (0xbf)
      > HCI Event: LE Meta Event (0x3e) plen 27              [hci0] 32.172191
            LE Advertising Report (0x02)
              Num reports: 1
              Event type: Scan response - SCAN_RSP (0x04)
              Address type: Public (0x00)
              Address: 7C:2F:80:94:97:5A (Gigaset Communications GmbH)
              Data length: 15
              Name (complete): Gigaset G-tag
              RSSI: -59 dBm (0xc5)
      
      Note "Data length: 30" in ADV_DATA which results in 9 extra zero bytes
      after Battery Service UUID. Terminator field present in the middle of
      EIR in Device Found event resulted in userspace stop parsing EIR and
      skipping device name.
      
      @ Device Found: 7C:2F:80:94:97:5A (1) rssi -59 flags 0x0000
            02 01 06 0d ff 80 01 02 15 12 34 80 94 97 5a bb  ..........4...Z.
            c5 03 02 0f 18 00 00 00 00 00 00 00 00 00 0e 09  ................
            47 69 67 61 73 65 74 20 47 2d 74 61 67           Gigaset G-tag
      
      With this fix EIR with merged ADV_DATA and SCAN_RSP in device found
      event is properly formatted:
      
      @ Device Found: 7C:2F:80:94:97:5A (1) rssi -59 flags 0x0000
            02 01 06 0d ff 80 01 02 15 12 34 80 94 97 5a bb  ..........4...Z.
            c5 03 02 0f 18 0e 09 47 69 67 61 73 65 74 20 47  .......Gigaset G
            2d 74 61 67                                      -tag
      Signed-off-by: default avatarSzymon Janc <ext.szymon.janc@tieto.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      6818375e
    • Szymon Janc's avatar
      Bluetooth: Add BT_ERR_RATELIMITED · e781b7f7
      Szymon Janc authored
      This patch adds ratelimited version of the BT_ERR macro.
      Signed-off-by: default avatarSzymon Janc <ext.szymon.janc@tieto.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      e781b7f7
  2. 17 Sep, 2015 38 commits