1. 16 7月, 2014 2 次提交
  2. 08 7月, 2014 3 次提交
  3. 07 7月, 2014 2 次提交
  4. 06 7月, 2014 1 次提交
  5. 03 7月, 2014 9 次提交
  6. 20 6月, 2014 1 次提交
    • L
      Bluetooth: Fix for ACL disconnect when pairing fails · 1d56dc4f
      Lukasz Rymanowski 提交于
      When pairing fails hci_conn refcnt drops below zero. This cause that
      ACL link is not disconnected when disconnect timeout fires.
      
      Probably this is because l2cap_conn_del calls l2cap_chan_del for each
      channel, and inside l2cap_chan_del conn is dropped. After that loop
      hci_chan_del is called which also drops conn.
      
      Anyway, as it is desrcibed in hci_core.h, it is known that refcnt
      drops below 0 sometimes and it should be fine. If so, let disconnect
      link when hci_conn_timeout fires and refcnt is 0 or below. This patch
      does it.
      
      This affects PTS test SM_TC_JW_BV_05_C
      
      Logs from scenario:
      
      [69713.706227] [6515] pair_device:
      [69713.706230] [6515] hci_conn_add: hci0 dst 00:1b:dc:06:06:22
      [69713.706233] [6515] hci_dev_hold: hci0 orig refcnt 8
      [69713.706235] [6515] hci_conn_init_sysfs: conn ffff88021f65a000
      [69713.706239] [6515] hci_req_add_ev: hci0 opcode 0x200d plen 25
      [69713.706242] [6515] hci_prepare_cmd: skb len 28
      [69713.706243] [6515] hci_req_run: length 1
      [69713.706248] [6515] hci_conn_hold: hcon ffff88021f65a000 orig refcnt 0
      [69713.706251] [6515] hci_dev_put: hci0 orig refcnt 9
      [69713.706281] [8909] hci_cmd_work: hci0 cmd_cnt 1 cmd queued 1
      [69713.706288] [8909] hci_send_frame: hci0 type 1 len 28
      [69713.706290] [8909] hci_send_to_monitor: hdev ffff88021f0c7000 len 28
      [69713.706316] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69713.706382] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69713.711664] [8909] hci_rx_work: hci0
      [69713.711668] [8909] hci_send_to_monitor: hdev ffff88021f0c7000 len 6
      [69713.711680] [8909] hci_rx_work: hci0 Event packet
      [69713.711683] [8909] hci_cs_le_create_conn: hci0 status 0x00
      [69713.711685] [8909] hci_sent_cmd_data: hci0 opcode 0x200d
      [69713.711688] [8909] hci_req_cmd_complete: opcode 0x200d status 0x00
      [69713.711690] [8909] hci_sent_cmd_data: hci0 opcode 0x200d
      [69713.711695] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69713.711744] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69713.818875] [8909] hci_rx_work: hci0
      [69713.818889] [8909] hci_send_to_monitor: hdev ffff88021f0c7000 len 21
      [69713.818913] [8909] hci_rx_work: hci0 Event packet
      [69713.818917] [8909] hci_le_conn_complete_evt: hci0 status 0x00
      [69713.818922] [8909] hci_send_to_control: len 19
      [69713.818927] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69713.818938] [8909] hci_conn_add_sysfs: conn ffff88021f65a000
      [69713.818975] [6450] bt_sock_poll: sock ffff88005e758500, sk ffff88010323b800
      [69713.818981] [6515] hci_sock_recvmsg: sock ffff88005e75a080, sk ffff88010323ac00
      ...
      [69713.819021] [8909] hci_dev_hold: hci0 orig refcnt 10
      [69713.819025] [8909] l2cap_connect_cfm: hcon ffff88021f65a000 bdaddr 00:1b:dc:06:06:22 status 0
      [69713.819028] [8909] hci_chan_create: hci0 hcon ffff88021f65a000
      [69713.819031] [8909] l2cap_conn_add: hcon ffff88021f65a000 conn ffff880221005c00 hchan ffff88020d60b1c0
      [69713.819034] [8909] l2cap_conn_ready: conn ffff880221005c00
      [69713.819036] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69713.819037] [8909] smp_conn_security: conn ffff880221005c00 hcon ffff88021f65a000 level 0x02
      [69713.819039] [8909] smp_chan_create:
      [69713.819041] [8909] hci_conn_hold: hcon ffff88021f65a000 orig refcnt 1
      [69713.819043] [8909] smp_send_cmd: code 0x01
      [69713.819045] [8909] hci_send_acl: hci0 chan ffff88020d60b1c0 flags 0x0000
      [69713.819046] [5949] hci_sock_recvmsg: sock ffff8800941a9900, sk ffff88012bf4e800
      [69713.819049] [8909] hci_queue_acl: hci0 nonfrag skb ffff88005157c100 len 15
      [69713.819055] [5949] hci_sock_recvmsg: sock ffff8800941a9900, sk ffff88012bf4e800
      [69713.819057] [8909] l2cap_le_conn_ready:
      [69713.819064] [8909] l2cap_chan_create: chan ffff88005ede2c00
      [69713.819066] [8909] l2cap_chan_hold: chan ffff88005ede2c00 orig refcnt 1
      [69713.819069] [8909] l2cap_sock_init: sk ffff88005ede5800
      [69713.819072] [8909] bt_accept_enqueue: parent ffff880160356000, sk ffff88005ede5800
      [69713.819074] [8909] __l2cap_chan_add: conn ffff880221005c00, psm 0x00, dcid 0x0004
      [69713.819076] [8909] l2cap_chan_hold: chan ffff88005ede2c00 orig refcnt 2
      [69713.819078] [8909] hci_conn_hold: hcon ffff88021f65a000 orig refcnt 2
      [69713.819080] [8909] smp_conn_security: conn ffff880221005c00 hcon ffff88021f65a000 level 0x01
      [69713.819082] [8909] l2cap_sock_ready_cb: sk ffff88005ede5800, parent ffff880160356000
      [69713.819086] [8909] le_pairing_complete_cb: status 0
      [69713.819091] [8909] hci_tx_work: hci0 acl 10 sco 8 le 0
      [69713.819093] [8909] hci_sched_acl: hci0
      [69713.819094] [8909] hci_sched_sco: hci0
      [69713.819096] [8909] hci_sched_esco: hci0
      [69713.819098] [8909] hci_sched_le: hci0
      [69713.819099] [8909] hci_chan_sent: hci0
      [69713.819101] [8909] hci_chan_sent: chan ffff88020d60b1c0 quote 10
      [69713.819104] [8909] hci_sched_le: chan ffff88020d60b1c0 skb ffff88005157c100 len 15 priority 7
      [69713.819106] [8909] hci_send_frame: hci0 type 2 len 15
      [69713.819108] [8909] hci_send_to_monitor: hdev ffff88021f0c7000 len 15
      [69713.819119] [8909] hci_chan_sent: hci0
      [69713.819121] [8909] hci_prio_recalculate: hci0
      [69713.819123] [8909] process_pending_rx:
      [69713.819226] [6450] hci_sock_recvmsg: sock ffff88005e758780, sk ffff88010323d400
      ...
      [69713.822022] [6450] l2cap_sock_accept: sk ffff880160356000 timeo 0
      [69713.822024] [6450] bt_accept_dequeue: parent ffff880160356000
      [69713.822026] [6450] bt_accept_unlink: sk ffff88005ede5800 state 1
      [69713.822028] [6450] l2cap_sock_accept: new socket ffff88005ede5800
      [69713.822368] [6450] l2cap_sock_getname: sock ffff8800941ab700, sk ffff88005ede5800
      [69713.822375] [6450] l2cap_sock_getsockopt: sk ffff88005ede5800
      [69713.822383] [6450] l2cap_sock_getname: sock ffff8800941ab700, sk ffff88005ede5800
      [69713.822414] [6450] bt_sock_poll: sock ffff8800941ab700, sk ffff88005ede5800
      ...
      [69713.823255] [6450] l2cap_sock_getname: sock ffff8800941ab700, sk ffff88005ede5800
      [69713.823259] [6450] l2cap_sock_getsockopt: sk ffff88005ede5800
      [69713.824322] [6450] l2cap_sock_getname: sock ffff8800941ab700, sk ffff88005ede5800
      [69713.824330] [6450] l2cap_sock_getsockopt: sk ffff88005ede5800
      [69713.825029] [6450] bt_sock_poll: sock ffff88005e758500, sk ffff88010323b800
      ...
      [69713.825187] [6450] l2cap_sock_sendmsg: sock ffff8800941ab700, sk ffff88005ede5800
      [69713.825189] [6450] bt_sock_wait_ready: sk ffff88005ede5800
      [69713.825192] [6450] l2cap_create_basic_pdu: chan ffff88005ede2c00 len 3
      [69713.825196] [6450] l2cap_do_send: chan ffff88005ede2c00, skb ffff880160b0b500 len 7 priority 0
      [69713.825199] [6450] hci_send_acl: hci0 chan ffff88020d60b1c0 flags 0x0000
      [69713.825201] [6450] hci_queue_acl: hci0 nonfrag skb ffff880160b0b500 len 11
      [69713.825210] [8909] hci_tx_work: hci0 acl 9 sco 8 le 0
      [69713.825213] [8909] hci_sched_acl: hci0
      [69713.825214] [8909] hci_sched_sco: hci0
      [69713.825216] [8909] hci_sched_esco: hci0
      [69713.825217] [8909] hci_sched_le: hci0
      [69713.825219] [8909] hci_chan_sent: hci0
      [69713.825221] [8909] hci_chan_sent: chan ffff88020d60b1c0 quote 9
      [69713.825223] [8909] hci_sched_le: chan ffff88020d60b1c0 skb ffff880160b0b500 len 11 priority 0
      [69713.825225] [8909] hci_send_frame: hci0 type 2 len 11
      [69713.825227] [8909] hci_send_to_monitor: hdev ffff88021f0c7000 len 11
      [69713.825242] [8909] hci_chan_sent: hci0
      [69713.825253] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69713.825253] [8909] hci_prio_recalculate: hci0
      [69713.825292] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69713.825768] [6450] bt_sock_poll: sock ffff88005e758500, sk ffff88010323b800
      ...
      [69713.866902] [8909] hci_rx_work: hci0
      [69713.866921] [8909] hci_send_to_monitor: hdev ffff88021f0c7000 len 7
      [69713.866928] [8909] hci_rx_work: hci0 Event packet
      [69713.866931] [8909] hci_num_comp_pkts_evt: hci0 num_hndl 1
      [69713.866937] [8909] hci_tx_work: hci0 acl 9 sco 8 le 0
      [69713.866939] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69713.866940] [8909] hci_sched_acl: hci0
      ...
      [69713.866944] [8909] hci_sched_le: hci0
      [69713.866953] [8909] hci_chan_sent: hci0
      [69713.866997] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69713.867840] [28074] hci_rx_work: hci0
      [69713.867844] [28074] hci_send_to_monitor: hdev ffff88021f0c7000 len 7
      [69713.867850] [28074] hci_rx_work: hci0 Event packet
      [69713.867853] [28074] hci_num_comp_pkts_evt: hci0 num_hndl 1
      [69713.867857] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69713.867858] [28074] hci_tx_work: hci0 acl 10 sco 8 le 0
      [69713.867860] [28074] hci_sched_acl: hci0
      [69713.867861] [28074] hci_sched_sco: hci0
      [69713.867862] [28074] hci_sched_esco: hci0
      [69713.867863] [28074] hci_sched_le: hci0
      [69713.867865] [28074] hci_chan_sent: hci0
      [69713.867888] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69714.145661] [8909] hci_rx_work: hci0
      [69714.145666] [8909] hci_send_to_monitor: hdev ffff88021f0c7000 len 10
      [69714.145676] [8909] hci_rx_work: hci0 ACL data packet
      [69714.145679] [8909] hci_acldata_packet: hci0 len 6 handle 0x002d flags 0x0002
      [69714.145681] [8909] hci_conn_enter_active_mode: hcon ffff88021f65a000 mode 0
      [69714.145683] [8909] l2cap_recv_acldata: conn ffff880221005c00 len 6 flags 0x2
      [69714.145693] [8909] l2cap_recv_frame: len 2, cid 0x0006
      [69714.145696] [8909] hci_send_to_control: len 14
      [69714.145710] [8909] smp_chan_destroy:
      [69714.145713] [8909] pairing_complete: status 3
      [69714.145714] [8909] cmd_complete: sock ffff88010323ac00
      [69714.145717] [8909] hci_conn_drop: hcon ffff88021f65a000 orig refcnt 3
      [69714.145719] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69714.145720] [6450] bt_sock_poll: sock ffff88005e758500, sk ffff88010323b800
      [69714.145722] [6515] hci_sock_recvmsg: sock ffff88005e75a080, sk ffff88010323ac00
      [69714.145724] [6450] bt_sock_poll: sock ffff8801db6b4f00, sk ffff880160351c00
      ...
      [69714.145735] [6515] hci_sock_recvmsg: sock ffff88005e75a080, sk ffff88010323ac00
      [69714.145737] [8909] hci_conn_drop: hcon ffff88021f65a000 orig refcnt 2
      [69714.145739] [8909] l2cap_conn_del: hcon ffff88021f65a000 conn ffff880221005c00, err 13
      [69714.145740] [6450] bt_sock_poll: sock ffff8801db6b5400, sk ffff88021e775000
      [69714.145743] [6450] bt_sock_poll: sock ffff8801db6b5e00, sk ffff880160356000
      [69714.145744] [8909] l2cap_chan_hold: chan ffff88005ede2c00 orig refcnt 3
      [69714.145746] [6450] bt_sock_poll: sock ffff8800941ab700, sk ffff88005ede5800
      [69714.145748] [8909] l2cap_chan_del: chan ffff88005ede2c00, conn ffff880221005c00, err 13
      [69714.145749] [8909] l2cap_chan_put: chan ffff88005ede2c00 orig refcnt 4
      [69714.145751] [8909] hci_conn_drop: hcon ffff88021f65a000 orig refcnt 1
      [69714.145754] [6450] bt_sock_poll: sock ffff8800941ab700, sk ffff88005ede5800
      [69714.145756] [8909] l2cap_chan_put: chan ffff88005ede2c00 orig refcnt 3
      [69714.145759] [8909] hci_chan_del: hci0 hcon ffff88021f65a000 chan ffff88020d60b1c0
      [69714.145766] [5949] hci_sock_recvmsg: sock ffff8800941a9680, sk ffff88012bf4d000
      [69714.145787] [6515] hci_sock_release: sock ffff88005e75a080 sk ffff88010323ac00
      [69714.146002] [6450] hci_sock_recvmsg: sock ffff88005e758780, sk ffff88010323d400
      [69714.150795] [6450] l2cap_sock_release: sock ffff8800941ab700, sk ffff88005ede5800
      [69714.150799] [6450] l2cap_sock_shutdown: sock ffff8800941ab700, sk ffff88005ede5800
      [69714.150802] [6450] l2cap_chan_close: chan ffff88005ede2c00 state BT_CLOSED
      [69714.150805] [6450] l2cap_sock_kill: sk ffff88005ede5800 state BT_CLOSED
      [69714.150806] [6450] l2cap_chan_put: chan ffff88005ede2c00 orig refcnt 2
      [69714.150808] [6450] l2cap_sock_destruct: sk ffff88005ede5800
      [69714.150809] [6450] l2cap_chan_put: chan ffff88005ede2c00 orig refcnt 1
      [69714.150811] [6450] l2cap_chan_destroy: chan ffff88005ede2c00
      [69714.150970] [6450] bt_sock_poll: sock ffff88005e758500, sk ffff88010323b800
      ...
      [69714.151991] [8909] hci_conn_drop: hcon ffff88021f65a000 orig refcnt 0
      [69716.150339] [8909] hci_conn_timeout: hcon ffff88021f65a000 state BT_CONNECTED, refcnt -1
      Signed-off-by: NLukasz Rymanowski <lukasz.rymanowski@tieto.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      1d56dc4f
  7. 13 6月, 2014 2 次提交
    • J
      Bluetooth: Fix check for connection encryption · e694788d
      Johan Hedberg 提交于
      The conn->link_key variable tracks the type of link key in use. It is
      set whenever we respond to a link key request as well as when we get a
      link key notification event.
      
      These two events do not however always guarantee that encryption is
      enabled: getting a link key request and responding to it may only mean
      that the remote side has requested authentication but not encryption. On
      the other hand, the encrypt change event is a certain guarantee that
      encryption is enabled. The real encryption state is already tracked in
      the conn->link_mode variable through the HCI_LM_ENCRYPT bit.
      
      This patch fixes a check for encryption in the hci_conn_auth function to
      use the proper conn->link_mode value and thereby eliminates the chance
      of a false positive result.
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Cc: stable@vger.kernel.org
      e694788d
    • J
      Bluetooth: Fix incorrectly overriding conn->src_type · b62b6505
      Johan Hedberg 提交于
      The src_type member of struct hci_conn should always reflect the address
      type of the src_member. It should never be overridden. There is already
      code in place in the command status handler of HCI_LE_Create_Connection
      to copy the right initiator address into conn->init_addr_type.
      
      Without this patch, if privacy is enabled, we will send the wrong
      address type in the SMP identity address information PDU (it'll e.g.
      contain our public address but a random address type).
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Cc: stable@vger.kernel.org
      b62b6505
  8. 20 5月, 2014 1 次提交
  9. 16 5月, 2014 1 次提交
  10. 10 5月, 2014 1 次提交
  11. 25 4月, 2014 1 次提交
  12. 27 3月, 2014 2 次提交
  13. 20 3月, 2014 1 次提交
  14. 13 3月, 2014 1 次提交
  15. 01 3月, 2014 2 次提交
    • J
      Bluetooth: Remove unnecessary stop_scan_complete function · 81ad6fd9
      Johan Hedberg 提交于
      The stop_scan_complete function was used as an intermediate step before
      doing the actual connection creation. Since we're using hci_request
      there's no reason to have this extra function around, i.e. we can simply
      put both HCI commands into the same request.
      
      The single task that the intermediate function had, i.e. indicating
      discovery as stopped is now taken care of by a new
      HCI_LE_SCAN_INTERRUPTED flag which allows us to do the discovery state
      update when the stop scan command completes.
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      81ad6fd9
    • J
      Bluetooth: Fix trying to disable scanning twice · 317ac8cb
      Johan Hedberg 提交于
      The discovery process has a timer for disabling scanning, however
      scanning might be disabled through other means too like the auto-connect
      process.  We should therefore ensure that the timer is never active
      after sending a HCI command to disable scanning.
      
      There was some existing code in stop_scan_complete trying to avoid the
      timer when a connect request interrupts a discovery procedure, but the
      other way around was not covered. This patch covers both scenarios by
      canceling the timer as soon as we get a successful command complete for
      the disabling HCI command.
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      317ac8cb
  16. 28 2月, 2014 3 次提交
  17. 27 2月, 2014 6 次提交
    • A
      Bluetooth: Introduce LE auto connection infrastructure · a4790dbd
      Andre Guedes 提交于
      This patch introduces the LE auto connection infrastructure which
      will be used to implement the LE auto connection options.
      
      In summary, the auto connection mechanism works as follows: Once the
      first pending LE connection is created, the background scanning is
      started. When the target device is found in range, the kernel
      autonomously starts the connection attempt. If connection is
      established successfully, that pending LE connection is deleted and
      the background is stopped.
      
      To achieve that, this patch introduces the hci_update_background_scan()
      which controls the background scanning state. This function starts or
      stops the background scanning based on the hdev->pend_le_conns list. If
      there is no pending LE connection, the background scanning is stopped.
      Otherwise, we start the background scanning.
      
      Then, every time a pending LE connection is added we call hci_update_
      background_scan() so the background scanning is started (in case it is
      not already running). Likewise, every time a pending LE connection is
      deleted we call hci_update_background_scan() so the background scanning
      is stopped (in case this was the last pending LE connection) or it is
      started again (in case we have more pending LE connections). Finally,
      we also call hci_update_background_scan() in hci_le_conn_failed() so
      the background scan is restarted in case the connection establishment
      fails. This way the background scanning keeps running until all pending
      LE connection are established.
      
      At this point, resolvable addresses are not support by this
      infrastructure. The proper support is added in upcoming patches.
      Signed-off-by: NAndre Guedes <andre.guedes@openbossa.org>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      a4790dbd
    • A
      Bluetooth: Move address type conversion to outside hci_connect_le · 6f77d8c7
      Andre Guedes 提交于
      This patch moves address type conversion (L2CAP address type to HCI
      address type) to outside hci_connect_le. This way, we avoid back and
      forth address type conversion in a comming patch.
      
      So hci_connect_le() now expects 'dst_type' parameter in HCI address
      type convention.
      Signed-off-by: NAndre Guedes <andre.guedes@openbossa.org>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      6f77d8c7
    • A
      Bluetooth: Refactor HCI connection code · 04a6c589
      Andre Guedes 提交于
      hci_connect() is a very simple and useless wrapper of hci_connect_acl
      and hci_connect_le functions. Addtionally, all places where hci_connect
      is called the link type value is passed explicitly. This way, we can
      safely delete hci_connect, declare hci_connect_acl and hci_connect_le
      in hci_core.h and call them directly.
      
      No functionality is changed by this patch.
      Signed-off-by: NAndre Guedes <andre.guedes@openbossa.org>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      04a6c589
    • A
      Bluetooth: Remove unused function · c99ed834
      Andre Guedes 提交于
      This patch removes hci_create_le_conn() since it is not used anymore.
      Signed-off-by: NAndre Guedes <andre.guedes@openbossa.org>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      c99ed834
    • A
      Bluetooth: Stop scanning on LE connection · 2acf3d90
      Andre Guedes 提交于
      Some LE controllers don't support scanning and creating a connection
      at the same time. So we should always stop scanning in order to
      establish the connection.
      
      Since we may prematurely stop the discovery procedure in favor of
      the connection establishment, we should also cancel hdev->le_scan_
      disable delayed work and set the discovery state to DISCOVERY_STOPPED.
      
      This change does a small improvement since it is not mandatory the
      user stops scanning before connecting anymore. Moreover, this change
      is required by upcoming LE auto connection mechanism in order to work
      properly with controllers that don't support background scanning and
      connection establishment at the same time.
      
      In future, we might want to do a small optimization by checking if
      controller is able to scan and connect at the same time. For now,
      we want the simplest approach so we always stop scanning (even if
      the controller is able to carry out both operations).
      Signed-off-by: NAndre Guedes <andre.guedes@openbossa.org>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      2acf3d90
    • A
      Bluetooth: Declare le_conn_failed in hci_core.h · 06c053fb
      Andre Guedes 提交于
      This patch adds the "hci_" prefix to le_conn_failed() helper and
      declares it in hci_core.h so it can be reused in hci_event.c.
      Signed-off-by: NAndre Guedes <andre.guedes@openbossa.org>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      06c053fb
  18. 24 2月, 2014 1 次提交