1. 25 Sep, 2020 3 commits
  2. 20 Sep, 2020 4 commits
  3. 14 Sep, 2020 3 commits
  4. 13 Sep, 2020 6 commits
    • Kiran K's avatar
      Bluetooth: btintel: Refactor firmware download function · e9117215
      Kiran K authored
      Split firmware download code into two functions - one to download
      header and other to download payload. This patch enhances readability
      and reusabiltiy of code
      Signed-off-by: default avatarKiran K <kiran.k@intel.com>
      Reviewed-by: default avatarChethan T N <chethan.tumkur.narayan@intel.com>
      Reviewed-by: default avatarSathish Narasimman <Sathish.Narasimman@intel.com>
      Reviewed-by: default avatarSrivatsa Ravishankar <ravishankar.srivatsa@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      e9117215
    • Abhishek Pandit-Subedi's avatar
      Bluetooth: Emit controller suspend and resume events · 2f20216c
      Abhishek Pandit-Subedi authored
      Emit controller suspend and resume events when we are ready for suspend
      and we've resumed from suspend.
      
      The controller suspend event will report whatever suspend state was
      successfully entered. The controller resume event will check the first
      HCI event that was received after we finished preparing for suspend and,
      if it was a connection event, store the address of the peer that caused
      the event. If it was not a connection event, we mark the wake reason as
      an unexpected event.
      
      Here is a sample btmon trace with these events:
      
      @ MGMT Event: Controller Suspended (0x002d) plen 1
              Suspend state: Page scanning and/or passive scanning (2)
      
      @ MGMT Event: Controller Resumed (0x002e) plen 8
              Wake reason: Remote wake due to peer device connection (2)
              LE Address: CD:F3:CD:13:C5:9A (OUI CD-F3-CD)
      Signed-off-by: default avatarAbhishek Pandit-Subedi <abhishekpandit@chromium.org>
      Reviewed-by: default avatarMiao-chen Chou <mcchou@chromium.org>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      2f20216c
    • Abhishek Pandit-Subedi's avatar
      Bluetooth: Add suspend reason for device disconnect · f0cfc486
      Abhishek Pandit-Subedi authored
      Update device disconnect event with reason 0x5 to indicate that device
      disconnected because the controller is suspending.
      Signed-off-by: default avatarAbhishek Pandit-Subedi <abhishekpandit@chromium.org>
      Reviewed-by: default avatarMiao-chen Chou <mcchou@chromium.org>
      Reviewed-by: default avatarSonny Sasaka <sonnysasaka@chromium.org>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      f0cfc486
    • Abhishek Pandit-Subedi's avatar
      Bluetooth: Add mgmt suspend and resume events · 346ce5b7
      Abhishek Pandit-Subedi authored
      Add the controller suspend and resume events, which will signal when
      Bluetooth has completed preparing for suspend and when it's ready for
      resume.
      Signed-off-by: default avatarAbhishek Pandit-Subedi <abhishekpandit@chromium.org>
      Reviewed-by: default avatarMiao-chen Chou <mcchou@chromium.org>
      Reviewed-by: default avatarSonny Sasaka <sonnysasaka@chromium.org>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      346ce5b7
    • Abhishek Pandit-Subedi's avatar
      Bluetooth: Set ext scan response only when it exists · 6baf8a6a
      Abhishek Pandit-Subedi authored
      Only set extended scan response only when it exists. Otherwise, clear
      the scan response data.
      
      Per the core spec v5.2, Vol 4, Part E, 7.8.55
      
      If the advertising set is non-scannable and the Host uses this command
      other than to discard existing data, the Controller shall return the
      error code Invalid HCI Command Parameters (0x12).
      
      On WCN3991, the controller correctly responds with Invalid Parameters
      when this is sent.  That error causes __hci_req_hci_power_on to fail
      with -EINVAL and LE devices can't connect because background scanning
      isn't configured.
      
      Here is an hci trace of where this issue occurs during power on:
      
      < HCI Command: LE Set Extended Advertising Parameters (0x08|0x0036) plen 25
              Handle: 0x00
              Properties: 0x0010
                Use legacy advertising PDUs: ADV_NONCONN_IND
              Min advertising interval: 181.250 msec (0x0122)
              Max advertising interval: 181.250 msec (0x0122)
              Channel map: 37, 38, 39 (0x07)
              Own address type: Random (0x01)
              Peer address type: Public (0x00)
              Peer address: 00:00:00:00:00:00 (OUI 00-00-00)
              Filter policy: Allow Scan Request from Any, Allow Connect...
              TX power: 127 dbm (0x7f)
              Primary PHY: LE 1M (0x01)
              Secondary max skip: 0x00
              Secondary PHY: LE 1M (0x01)
              SID: 0x00
              Scan request notifications: Disabled (0x00)
      > HCI Event: Command Complete (0x0e) plen 5
            LE Set Extended Advertising Parameters (0x08|0x0036) ncmd 1
              Status: Success (0x00)
              TX power (selected): 9 dbm (0x09)
      < HCI Command: LE Set Advertising Set Random Address (0x08|0x0035) plen 7
              Advertising handle: 0x00
              Advertising random address: 08:FD:55:ED:22:28 (OUI 08-FD-55)
      > HCI Event: Command Complete (0x0e) plen 4
            LE Set Advertising Set Random Address (0x08|0x0035) ncmd
              Status: Success (0x00)
      < HCI Command: LE Set Extended Scan Response Data (0x08|0x0038) plen 35
              Handle: 0x00
              Operation: Complete scan response data (0x03)
              Fragment preference: Minimize fragmentation (0x01)
              Data length: 0x0d
              Name (short): Chromebook
      > HCI Event: Command Complete (0x0e) plen 4
            LE Set Extended Scan Response Data (0x08|0x0038) ncmd 1
              Status: Invalid HCI Command Parameters (0x12)
      Signed-off-by: default avatarAbhishek Pandit-Subedi <abhishekpandit@chromium.org>
      Reviewed-by: default avatarDaniel Winkler <danielwinkler@google.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      6baf8a6a
    • Abhishek Pandit-Subedi's avatar
      Bluetooth: Only mark socket zapped after unlocking · 20ae4089
      Abhishek Pandit-Subedi authored
      Since l2cap_sock_teardown_cb doesn't acquire the channel lock before
      setting the socket as zapped, it could potentially race with
      l2cap_sock_release which frees the socket. Thus, wait until the cleanup
      is complete before marking the socket as zapped.
      
      This race was reproduced on a JBL GO speaker after the remote device
      rejected L2CAP connection due to resource unavailability.
      
      Here is a dmesg log with debug logs from a repro of this bug:
      [ 3465.424086] Bluetooth: hci_core.c:hci_acldata_packet() hci0 len 16 handle 0x0003 flags 0x0002
      [ 3465.424090] Bluetooth: hci_conn.c:hci_conn_enter_active_mode() hcon 00000000cfedd07d mode 0
      [ 3465.424094] Bluetooth: l2cap_core.c:l2cap_recv_acldata() conn 000000007eae8952 len 16 flags 0x2
      [ 3465.424098] Bluetooth: l2cap_core.c:l2cap_recv_frame() len 12, cid 0x0001
      [ 3465.424102] Bluetooth: l2cap_core.c:l2cap_raw_recv() conn 000000007eae8952
      [ 3465.424175] Bluetooth: l2cap_core.c:l2cap_sig_channel() code 0x03 len 8 id 0x0c
      [ 3465.424180] Bluetooth: l2cap_core.c:l2cap_connect_create_rsp() dcid 0x0045 scid 0x0000 result 0x02 status 0x00
      [ 3465.424189] Bluetooth: l2cap_core.c:l2cap_chan_put() chan 000000006acf9bff orig refcnt 4
      [ 3465.424196] Bluetooth: l2cap_core.c:l2cap_chan_del() chan 000000006acf9bff, conn 000000007eae8952, err 111, state BT_CONNECT
      [ 3465.424203] Bluetooth: l2cap_sock.c:l2cap_sock_teardown_cb() chan 000000006acf9bff state BT_CONNECT
      [ 3465.424221] Bluetooth: l2cap_core.c:l2cap_chan_put() chan 000000006acf9bff orig refcnt 3
      [ 3465.424226] Bluetooth: hci_core.h:hci_conn_drop() hcon 00000000cfedd07d orig refcnt 6
      [ 3465.424234] BUG: spinlock bad magic on CPU#2, kworker/u17:0/159
      [ 3465.425626] Bluetooth: hci_sock.c:hci_sock_sendmsg() sock 000000002bb0cb64 sk 00000000a7964053
      [ 3465.430330]  lock: 0xffffff804410aac0, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
      [ 3465.430332] Causing a watchdog bite!
      Signed-off-by: default avatarAbhishek Pandit-Subedi <abhishekpandit@chromium.org>
      Reported-by: default avatarBalakrishna Godavarthi <bgodavar@codeaurora.org>
      Reviewed-by: default avatarManish Mandlik <mmandlik@chromium.org>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      20ae4089
  5. 11 Sep, 2020 12 commits
  6. 01 Sep, 2020 1 commit
  7. 31 Aug, 2020 2 commits
  8. 02 Aug, 2020 3 commits
  9. 01 Aug, 2020 6 commits
    • Florian Westphal's avatar
      mptcp: fix syncookie build error on UP · 7126bd5c
      Florian Westphal authored
      kernel test robot says:
      net/mptcp/syncookies.c: In function 'mptcp_join_cookie_init':
      include/linux/kernel.h:47:38: warning: division by zero [-Wdiv-by-zero]
       #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
      
      I forgot that spinock_t size is 0 on UP, so ARRAY_SIZE cannot be used.
      
      Fixes: 9466a1cc ("mptcp: enable JOIN requests even if cookies are in use")
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7126bd5c
    • Brian Vazquez's avatar
      fib: fix another fib_rules_ops indirect call wrapper problem · 8b66a6fd
      Brian Vazquez authored
      It turns out that on commit 41d707b7 ("fib: fix fib_rules_ops
      indirect calls wrappers") I forgot to include the case when
      CONFIG_IP_MULTIPLE_TABLES is not set.
      
      Fixes: 41d707b7 ("fib: fix fib_rules_ops indirect calls wrappers")
      Reported-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarBrian Vazquez <brianvv@google.com>
      Acked-by: Randy Dunlap <rdunlap@infradead.org> # build-tested
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8b66a6fd
    • Eric Dumazet's avatar
      tcp: fix build fong CONFIG_MPTCP=n · 0e8642cf
      Eric Dumazet authored
      Fixes these errors:
      
      net/ipv4/syncookies.c: In function 'tcp_get_cookie_sock':
      net/ipv4/syncookies.c:216:19: error: 'struct tcp_request_sock' has no
      member named 'drop_req'
        216 |   if (tcp_rsk(req)->drop_req) {
            |                   ^~
      net/ipv4/syncookies.c: In function 'cookie_tcp_reqsk_alloc':
      net/ipv4/syncookies.c:289:27: warning: unused variable 'treq'
      [-Wunused-variable]
        289 |  struct tcp_request_sock *treq;
            |                           ^~~~
      make[3]: *** [scripts/Makefile.build:280: net/ipv4/syncookies.o] Error 1
      make[3]: *** Waiting for unfinished jobs....
      
      Fixes: 9466a1cc ("mptcp: enable JOIN requests even if cookies are in use")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Florian Westphal <fw@strlen.de>
      Acked-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0e8642cf
    • David S. Miller's avatar
      Merge tag 'mac80211-next-for-davem-2020-07-31' of... · 6f3de75c
      David S. Miller authored
      Merge tag 'mac80211-next-for-davem-2020-07-31' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
      
      Johannes Berg says:
      
      ====================
      We have a number of changes
       * code cleanups and fixups as usual
       * AQL & internal TXQ improvements from Felix
       * some mesh 802.1X support bits
       * some injection improvements from Mathy of KRACK
         fame, so we'll see what this results in ;-)
       * some more initial S1G supports bits, this time
         (some of?) the userspace APIs
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6f3de75c
    • Roopa Prabhu's avatar
      rtnetlink: add support for protodown reason · 829eb208
      Roopa Prabhu authored
      netdev protodown is a mechanism that allows protocols to
      hold an interface down. It was initially introduced in
      the kernel to hold links down by a multihoming protocol.
      There was also an attempt to introduce protodown
      reason at the time but was rejected. protodown and protodown reason
      is supported by almost every switching and routing platform.
      It was ok for a while to live without a protodown reason.
      But, its become more critical now given more than
      one protocol may need to keep a link down on a system
      at the same time. eg: vrrp peer node, port security,
      multihoming protocol. Its common for Network operators and
      protocol developers to look for such a reason on a networking
      box (Its also known as errDisable by most networking operators)
      
      This patch adds support for link protodown reason
      attribute. There are two ways to maintain protodown
      reasons.
      (a) enumerate every possible reason code in kernel
          - A protocol developer has to make a request and
            have that appear in a certain kernel version
      (b) provide the bits in the kernel, and allow user-space
      (sysadmin or NOS distributions) to manage the bit-to-reasonname
      map.
      	- This makes extending reason codes easier (kind of like
            the iproute2 table to vrf-name map /etc/iproute2/rt_tables.d/)
      
      This patch takes approach (b).
      
      a few things about the patch:
      - It treats the protodown reason bits as counter to indicate
      active protodown users
      - Since protodown attribute is already an exposed UAPI,
      the reason is not enforced on a protodown set. Its a no-op
      if not used.
      the patch follows the below algorithm:
        - presence of reason bits set indicates protodown
          is in use
        - user can set protodown and protodown reason in a
          single or multiple setlink operations
        - setlink operation to clear protodown, will return -EBUSY
          if there are active protodown reason bits
        - reason is not included in link dumps if not used
      
      example with patched iproute2:
      $cat /etc/iproute2/protodown_reasons.d/r.conf
      0 mlag
      1 evpn
      2 vrrp
      3 psecurity
      
      $ip link set dev vxlan0 protodown on protodown_reason vrrp on
      $ip link set dev vxlan0 protodown_reason mlag on
      $ip link show
      14: vxlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode
      DEFAULT group default qlen 1000
          link/ether f6:06:be:17:91:e7 brd ff:ff:ff:ff:ff:ff protodown on <mlag,vrrp>
      
      $ip link set dev vxlan0 protodown_reason mlag off
      $ip link set dev vxlan0 protodown off protodown_reason vrrp off
      Signed-off-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      829eb208
    • Jason Wang's avatar
      tun: add missing rcu annotation in tun_set_ebpf() · 8f3f330d
      Jason Wang authored
      We expecte prog_p to be protected by rcu, so adding the rcu annotation
      to fix the following sparse warning:
      
      drivers/net/tun.c:3003:36: warning: incorrect type in argument 2 (different address spaces)
      drivers/net/tun.c:3003:36:    expected struct tun_prog [noderef] __rcu **prog_p
      drivers/net/tun.c:3003:36:    got struct tun_prog **prog_p
      drivers/net/tun.c:3292:42: warning: incorrect type in argument 2 (different address spaces)
      drivers/net/tun.c:3292:42:    expected struct tun_prog **prog_p
      drivers/net/tun.c:3292:42:    got struct tun_prog [noderef] __rcu **
      drivers/net/tun.c:3296:42: warning: incorrect type in argument 2 (different address spaces)
      drivers/net/tun.c:3296:42:    expected struct tun_prog **prog_p
      drivers/net/tun.c:3296:42:    got struct tun_prog [noderef] __rcu **
      Reported-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8f3f330d