1. 27 8月, 2013 12 次提交
  2. 23 8月, 2013 25 次提交
  3. 21 8月, 2013 3 次提交
    • F
      Bluetooth: Add SCO connection fallback · 2dea632f
      Frédéric Dalleau 提交于
      When initiating a transparent eSCO connection, make use of T2 settings
      at first try. T2 is the recommended settings from HFP 1.6 WideBand
      Speech. Upon connection failure, try T1 settings.
      
      When CVSD is requested and eSCO is supported, try to establish eSCO
      connection using S3 settings. If it fails, fallback in sequence to S2,
      S1, D1, D0 settings.
      
      To know which setting should be used, conn->attempt is used. It
      indicates the currently ongoing SCO connection attempt and can be used
      as the index for the fallback settings table.
      
      These setting and the fallback order are described in Bluetooth HFP 1.6
      specification p. 101.
      Signed-off-by: NFrédéric Dalleau <frederic.dalleau@linux.intel.com>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      2dea632f
    • F
      Bluetooth: Handle specific error for SCO connection fallback · 1a4c958c
      Frédéric Dalleau 提交于
      Synchronous Connection Complete event can return error "Connection
      Rejected due to Limited resources (0x10)".
      Handling this error is required for SCO connection fallback. This error
      happens when the server tried to accept the connection but failed to
      negotiate settings.
      This error code has been verified experimentally by sending a T2 request
      to a T1 only SCO listener.
      
      Client dump follows :
      
      < HCI Command (0x01|0x0028) plen 17 [hci0] 3.696064
              Handle: 12
              Transmit bandwidth: 8000
              Receive bandwidth: 8000
              Max latency: 13
              Setting: 0x0003
              Retransmission effort: Optimize for link quality (0x02)
              Packet type: 0x0380
      > HCI Event (0x0f) plen 4 [hci0] 3.697034
            Setup Synchronous Connection (0x01|0x0028) ncmd 1
              Status: Success (0x00)
      > HCI Event (0x2c) plen 17 [hci0] 3.736059
              Status: Connection Rejected due to Limited Resources (0x0d)
              Handle: 0
              Address: xx:xx:xx:xx:xx:AB (OUI 70-F3-95)
              Link type: eSCO (0x02)
              Transmission interval: 0x0c
              Retransmission window: 0x06
              RX packet length: 60
              TX packet length: 60
              Air mode: Transparent (0x03)
      
      Server dump follows :
      
      > HCI Event (0x04) plen 10 [hci0] 4.741513
              Address: xx:xx:xx:xx:xx:D9 (OUI 20-68-9D)
              Class: 0x620100
                Major class: Computer (desktop, notebook, PDA, organizers)
                Minor class: Uncategorized, code for device not assigned
                Networking (LAN, Ad hoc)
                Audio (Speaker, Microphone, Headset)
                Telephony (Cordless telephony, Modem, Headset)
              Link type: eSCO (0x02)
      < HCI Command (0x01|0x0029) plen 21 [hci0] 4.743269
              Address: xx:xx:xx:xx:xx:D9 (OUI 20-68-9D)
              Transmit bandwidth: 8000
              Receive bandwidth: 8000
              Max latency: 13
              Setting: 0x0003
              Retransmission effort: Optimize for link quality (0x02)
              Packet type: 0x03c1
      > HCI Event (0x0f) plen 4 [hci0] 4.745517
            Accept Synchronous Connection (0x01|0x0029) ncmd 1
              Status: Success (0x00)
      > HCI Event (0x2c) plen 17 [hci0] 4.749508
              Status: Connection Rejected due to Limited Resources (0x0d)
              Handle: 0
              Address: xx:xx:xx:xx:xx:D9 (OUI 20-68-9D)
              Link type: eSCO (0x02)
              Transmission interval: 0x0c
              Retransmission window: 0x06
              RX packet length: 60
              TX packet length: 60
              Air mode: Transparent (0x03)
      Signed-off-by: NFrédéric Dalleau <frederic.dalleau@linux.intel.com>
      Acked-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      1a4c958c
    • F
      Bluetooth: Prevent transparent SCO on older devices · 79dc0087
      Frédéric Dalleau 提交于
      Older Bluetooth devices may not support Setup Synchronous Connection or
      SCO transparent data. This is indicated by the corresponding LMP feature
      bits. It is not possible to know if the adapter support these features
      before setting BT_VOICE option since the socket is not bound to an
      adapter. An adapter can also be added after the socket is created. The
      socket can be bound to an address before adapter is plugged in.
      
      Thus, on a such adapters, if user request BT_VOICE_TRANSPARENT, outgoing
      connections fail on connect() and returns -EOPNOTSUPP. Incoming
      connections do not fail. However, they should only be allowed depending
      on what was specified in Write_Voice_Settings command.
      
      EOPNOTSUPP is choosen because connect() system call is failing after
      selecting route but before any connection attempt.
      Signed-off-by: NFrédéric Dalleau <frederic.dalleau@linux.intel.com>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      Acked-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      79dc0087