Re: [PATCH] [v5]Add support for LE ping feature

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi SpoorthiX,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on bluetooth-next/master]
[also build test ERROR on v5.1-rc6 next-20190424]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/SpoorthiX-K/Add-support-for-LE-ping-feature/20190425-184628
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master
config: xtensa-allyesconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 8.1.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=8.1.0 make.cross ARCH=xtensa 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

   net//bluetooth/hci_event.c: In function 'hci_cc_write_auth_payload_timeout':
   net//bluetooth/hci_event.c:595:11: error: 'HCI_CONN_AUTH_PAYLOAD_TIMEOUT' undeclared (first use in this function); did you mean 'HCI_CONN_AUTH_FAILURE'?
      set_bit(HCI_CONN_AUTH_PAYLOAD_TIMEOUT, &conn->flags);
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              HCI_CONN_AUTH_FAILURE
   net//bluetooth/hci_event.c:595:11: note: each undeclared identifier is reported only once for each function it appears in
   net//bluetooth/hci_event.c: In function 'hci_encrypt_change_evt':
>> net//bluetooth/hci_event.c:3005:68: error: expected ')' before 'test_bit'
         lmp_ping_capable(hdev) && (hdev->le_features[0] & HCI_LE_PING)
                                                                       ^
                                                                       )
          test_bit(HCI_CONN_ENCRYPT, &conn->flags) &&
          ~~~~~~~~                                                      
   net//bluetooth/hci_event.c:3004:5: note: to match this '('
     if ((conn->type == LE_LINK || conn->type == ACL_LINK) &&
        ^

vim +3005 net//bluetooth/hci_event.c

  2904	
  2905	static void hci_encrypt_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
  2906	{
  2907		struct hci_ev_encrypt_change *ev = (void *) skb->data;
  2908		struct hci_conn *conn;
  2909	
  2910		BT_DBG("%s status 0x%2.2x", hdev->name, ev->status);
  2911	
  2912		hci_dev_lock(hdev);
  2913	
  2914		conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle));
  2915		if (!conn)
  2916			goto unlock;
  2917	
  2918		if (!ev->status) {
  2919			if (ev->encrypt) {
  2920				/* Encryption implies authentication */
  2921				set_bit(HCI_CONN_AUTH, &conn->flags);
  2922				set_bit(HCI_CONN_ENCRYPT, &conn->flags);
  2923				conn->sec_level = conn->pending_sec_level;
  2924	
  2925				/* P-256 authentication key implies FIPS */
  2926				if (conn->key_type == HCI_LK_AUTH_COMBINATION_P256)
  2927					set_bit(HCI_CONN_FIPS, &conn->flags);
  2928	
  2929				if ((conn->type == ACL_LINK && ev->encrypt == 0x02) ||
  2930				    conn->type == LE_LINK)
  2931					set_bit(HCI_CONN_AES_CCM, &conn->flags);
  2932			} else {
  2933				clear_bit(HCI_CONN_ENCRYPT, &conn->flags);
  2934				clear_bit(HCI_CONN_AES_CCM, &conn->flags);
  2935			}
  2936		}
  2937	
  2938		/* We should disregard the current RPA and generate a new one
  2939		 * whenever the encryption procedure fails.
  2940		 */
  2941		if (ev->status && conn->type == LE_LINK) {
  2942			hci_dev_set_flag(hdev, HCI_RPA_EXPIRED);
  2943			hci_adv_instances_set_rpa_expired(hdev, true);
  2944		}
  2945	
  2946		clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags);
  2947	
  2948		if (ev->status && conn->state == BT_CONNECTED) {
  2949			if (ev->status == HCI_ERROR_PIN_OR_KEY_MISSING)
  2950				set_bit(HCI_CONN_AUTH_FAILURE, &conn->flags);
  2951	
  2952			hci_disconnect(conn, HCI_ERROR_AUTH_FAILURE);
  2953			hci_conn_drop(conn);
  2954			goto unlock;
  2955		}
  2956	
  2957		/* In Secure Connections Only mode, do not allow any connections
  2958		 * that are not encrypted with AES-CCM using a P-256 authenticated
  2959		 * combination key.
  2960		 */
  2961		if (hci_dev_test_flag(hdev, HCI_SC_ONLY) &&
  2962		    (!test_bit(HCI_CONN_AES_CCM, &conn->flags) ||
  2963		     conn->key_type != HCI_LK_AUTH_COMBINATION_P256)) {
  2964			hci_connect_cfm(conn, HCI_ERROR_AUTH_FAILURE);
  2965			hci_conn_drop(conn);
  2966			goto unlock;
  2967		}
  2968	
  2969		/* Try reading the encryption key size for encrypted ACL links */
  2970		if (!ev->status && ev->encrypt && conn->type == ACL_LINK) {
  2971			struct hci_cp_read_enc_key_size cp;
  2972			struct hci_request req;
  2973	
  2974			/* Only send HCI_Read_Encryption_Key_Size if the
  2975			 * controller really supports it. If it doesn't, assume
  2976			 * the default size (16).
  2977			 */
  2978			if (!(hdev->commands[20] & 0x10)) {
  2979				conn->enc_key_size = HCI_LINK_KEY_SIZE;
  2980				goto notify;
  2981			}
  2982	
  2983			hci_req_init(&req, hdev);
  2984	
  2985			cp.handle = cpu_to_le16(conn->handle);
  2986			hci_req_add(&req, HCI_OP_READ_ENC_KEY_SIZE, sizeof(cp), &cp);
  2987	
  2988			if (hci_req_run_skb(&req, read_enc_key_size_complete)) {
  2989				bt_dev_err(hdev, "sending read key size failed");
  2990				conn->enc_key_size = HCI_LINK_KEY_SIZE;
  2991				goto notify;
  2992			}
  2993	
  2994			goto unlock;
  2995		}
  2996	
  2997		/* Set the default Authenticated Payload Timeout after
  2998		 * an LE Link is established. As per Core Spec v5.0, Vol 2, Part B
  2999		 * Section 3.3, the HCI command WRITE_AUTH_PAYLOAD_TIMEOUT should be
  3000		 * sent when the link is active and Encryption is enabled, the conn
  3001		 * type can be either LE or ACL and controller must support LMP Ping.
  3002		 * Ensure for AES-CCM encryption as well.
  3003		 */
  3004		if ((conn->type == LE_LINK || conn->type == ACL_LINK) &&
> 3005		    lmp_ping_capable(hdev) && (hdev->le_features[0] & HCI_LE_PING)
  3006		     test_bit(HCI_CONN_ENCRYPT, &conn->flags) &&
  3007		      test_bit(HCI_CONN_AES_CCM, &conn->flags)) {
  3008			struct hci_cp_write_auth_payload_to cp;
  3009	
  3010			cp.handle = cpu_to_le16(conn->handle);
  3011			cp.timeout = cpu_to_le16(hdev->auth_payload_timeout);
  3012			hci_send_cmd(conn->hdev, HCI_OP_WRITE_AUTH_PAYLOAD_TO,
  3013				     sizeof(cp), &cp);
  3014		}
  3015	
  3016	notify:
  3017		if (conn->state == BT_CONFIG) {
  3018			if (!ev->status)
  3019				conn->state = BT_CONNECTED;
  3020	
  3021			hci_connect_cfm(conn, ev->status);
  3022			hci_conn_drop(conn);
  3023		} else
  3024			hci_encrypt_cfm(conn, ev->status, ev->encrypt);
  3025	
  3026	unlock:
  3027		hci_dev_unlock(hdev);
  3028	}
  3029	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux