Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp560284pxb; Mon, 25 Oct 2021 13:46:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxbb17sKWT0AfT4FCwVZZcWXH/Eol0i8TIg8k8jlqkXS8pkIuP3SQ/mF2IXTKdj6eTSBtoh X-Received: by 2002:a05:6a00:852:b0:46c:d325:e95b with SMTP id q18-20020a056a00085200b0046cd325e95bmr21021660pfk.78.1635194802281; Mon, 25 Oct 2021 13:46:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635194802; cv=none; d=google.com; s=arc-20160816; b=tXtn36gMaPLd94gPTn+Cgaenb45pFJ9jTVcUbx+yWkfZtcFhB/8r7Snbd22Kj8rKft K8iiVhsh0V+se5XosTPvePc3BaCOjFWEYQmYkVhlKe/a2uMzVsbBDBsh7WJkMuxo5JNv flBvGgFh2qP9cT6Ii0QPd5WZGZASzUgH7poa9coEuzXiTiuxXqqBE3R0Hbu4v6O9aNfw wQ2dESaYNDvA2nCJi5ljRZmdXncoVA11RmTam6Fyw0f8oSjGtvM40ZfdNf25LOMkeS/8 03lGyL/HLxp0xijhFvsNEXz9INczSVpeFcNI5oxxtGQ/ejHdu1oAdDv+R1Zo+z1wE6sg EZVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=L+86y/63n70xHBqeO6S6zCM/hVwZAtm65kVkc+5l5BU=; b=pMmt5VA0Dd6QsYnU7td0ZgFcV9sQaiAcbuKo2M8S0JdT8fd+BRJZcnN2byEuinVufO 1uY0C5N0iChb4xQrgt9C96AY9DiCCpTiJqctR3XCIg3KOy+aT0K41w0c8czPTY2ALERu ndtI9RyW0kek4vDBS4ZKis3UMzh0+q+qAhk1iiXMaFWugRUY4rRw9SbIqbXWXvk3zB7O ZXIICD1j2y9iAek5JPZh0MQh0RuDK6tcCNnWsWcvUZBh3dPnSe5HSojgJXk4rmjSqOpd zQPaxdUWeb4cIM0fh0L1k20mOyAIJi+xkg92F2muqRK1MClCgSQyFaizjtebv+W9ultd 96HQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=claC2qk5; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h12si23389044pfi.184.2021.10.25.13.46.21; Mon, 25 Oct 2021 13:46:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=claC2qk5; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231450AbhJYUqu (ORCPT + 99 others); Mon, 25 Oct 2021 16:46:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41800 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230024AbhJYUqt (ORCPT ); Mon, 25 Oct 2021 16:46:49 -0400 Received: from mail-ua1-x932.google.com (mail-ua1-x932.google.com [IPv6:2607:f8b0:4864:20::932]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 039C2C061745 for ; Mon, 25 Oct 2021 13:44:27 -0700 (PDT) Received: by mail-ua1-x932.google.com with SMTP id b4so12678872uaq.9 for ; Mon, 25 Oct 2021 13:44:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=L+86y/63n70xHBqeO6S6zCM/hVwZAtm65kVkc+5l5BU=; b=claC2qk5El2sYTuP7e1jJivRSLN64tqUdDl7l7n43//YzQHFkyEH8CxxW45u+HVFvB 8N6s226YceqInsgRepxPPXgsn4ckh2gKllvf4JXw65RR3Q8vx+aamzbAUUdGcg/IxOla jces+Bqq7Ocv93e95VLoh0R2+pxM6iajAag7OG2WsV593yLN+6llaG9PITGROW4jlJH6 RYIOi57K/t+zfWhvG3x94ssZV9fsc/ZJHmr8fs75f0XW+sYNk3EiZG+3MCEtuUAsNQ8g m8lEy7mZE6oWA0BiXIVgbVjKaCizGu3DiigbnOY5IaEnT0cr/JPruhiXTcz/xH/GIzC1 FF8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=L+86y/63n70xHBqeO6S6zCM/hVwZAtm65kVkc+5l5BU=; b=P/gykCpKrVcVw5h0iSKU8GNyzynQ36V3ZRtuAWM9de7Drn9ZSJ4ou10MQOGHUz50WV doDiUTLVF3fzuWLiHtLTI9Jx9bMM59Y9GisOT827UL+9E1k4DnT2aChZ7g5qcD0dY3is J2cmoyE02XMImdx/GoXVol1yL/SYzB8rc1KFDt5oBDRtBIp7p76iWqBkyDWcBpj7/Top 3hITECJDBwmWMx3horiQj9zVJXRePCwj92sOM/ys+IOclefBbWP56emBo6UB/4tlO5SK 28Q1IRoJXpH3nm8LMQEPPjecazAeRdlPGfeCOL8kVner/1snoxDrzv7UD+gL2EVkReS1 xV9w== X-Gm-Message-State: AOAM532bE3bK0y9H6vEqSgqa1tzYP41ORxBzU/Ln5xMPbzYknKJbAa2e oG7NBlBp5fkBVPS09km+NLQzz+7D0HcYiDIXEtqSVHA8 X-Received: by 2002:ab0:7812:: with SMTP id x18mr12453572uaq.129.1635194666027; Mon, 25 Oct 2021 13:44:26 -0700 (PDT) MIME-Version: 1.0 References: <20211025203120.513189-1-hj.tedd.an@gmail.com> In-Reply-To: <20211025203120.513189-1-hj.tedd.an@gmail.com> From: Luiz Augusto von Dentz Date: Mon, 25 Oct 2021 13:44:15 -0700 Message-ID: Subject: Re: [BlueZ PATCH 1/4] emulator: Add support to config the accept and resolve list To: Tedd Ho-Jeong An Cc: "linux-bluetooth@vger.kernel.org" Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Hi Tedd, On Mon, Oct 25, 2021 at 1:32 PM Tedd Ho-Jeong An wrote: > > From: Tedd Ho-Jeong An > > This patch adds interfaces to config the accept list and resolve list in > the btdev. > --- > emulator/btdev.c | 37 +++++++++++++++++++++++++++++-------- > emulator/btdev.h | 4 ++++ > emulator/hciemu.c | 28 ++++++++++++++++++++++++++++ > emulator/hciemu.h | 4 ++++ > 4 files changed, 65 insertions(+), 8 deletions(-) > > diff --git a/emulator/btdev.c b/emulator/btdev.c > index 177633b9c..2cbe24edc 100644 > --- a/emulator/btdev.c > +++ b/emulator/btdev.c > @@ -198,6 +198,10 @@ struct btdev { > } __attribute__ ((packed)) le_cig; > uint8_t le_iso_path[2]; > > + /* Real time length of AL array */ > + uint8_t le_al_len; > + /* Real time length of RL array */ > + uint8_t le_rl_len; > struct btdev_al le_al[AL_SIZE]; > struct btdev_rl le_rl[RL_SIZE]; > uint8_t le_rl_enable; > @@ -482,6 +486,18 @@ static void rl_clear(struct btdev *dev) > rl_reset(&dev->le_rl[i]); > } > > +/* Set the real time length of AL array */ > +void btdev_set_al_len(struct btdev *btdev, uint8_t len) > +{ > + btdev->le_al_len = len; > +} > + > +/* Set the real time length of RL array */ > +void btdev_set_rl_len(struct btdev *btdev, uint8_t len) > +{ > + btdev->le_rl_len = len; > +} > + > static void btdev_reset(struct btdev *btdev) > { > /* FIXME: include here clearing of all states that should be > @@ -493,6 +509,9 @@ static void btdev_reset(struct btdev *btdev) > > al_clear(btdev); > rl_clear(btdev); > + > + btdev->le_al_len = AL_SIZE; > + btdev->le_rl_len = RL_SIZE; > } > > static int cmd_reset(struct btdev *dev, const void *data, uint8_t len) > @@ -3578,7 +3597,7 @@ static int cmd_read_al_size(struct btdev *dev, const void *data, uint8_t len) > struct bt_hci_rsp_le_read_accept_list_size rsp; > > rsp.status = BT_HCI_ERR_SUCCESS; > - rsp.size = AL_SIZE; > + rsp.size = dev->le_al_len; > cmd_complete(dev, BT_HCI_CMD_LE_READ_ACCEPT_LIST_SIZE, &rsp, > sizeof(rsp)); > > @@ -3669,7 +3688,7 @@ static int cmd_add_al(struct btdev *dev, const void *data, uint8_t len) > goto done; > } > > - for (i = 0; i < AL_SIZE; i++) { > + for (i = 0; i < dev->le_al_len; i++) { > struct btdev_al *al = &dev->le_al[i]; > > if (AL_ADDR_EQUAL(al, cmd->addr_type, &cmd->addr)) { > @@ -3731,7 +3750,7 @@ static int cmd_remove_al(struct btdev *dev, const void *data, uint8_t len) > goto done; > } > > - for (i = 0; i < AL_SIZE; i++) { > + for (i = 0; i < dev->le_al_len; i++) { > struct btdev_al *al = &dev->le_al[i]; > > ba2str(&al->addr, addr); > @@ -3746,7 +3765,7 @@ static int cmd_remove_al(struct btdev *dev, const void *data, uint8_t len) > } > } > > - if (i == AL_SIZE) { > + if (i == dev->le_al_len) { > status = BT_HCI_ERR_INVALID_PARAMETERS; > goto done; > } > @@ -3785,7 +3804,7 @@ static int cmd_add_rl(struct btdev *dev, const void *data, uint8_t len) > goto done; > } > > - for (i = 0; i < RL_SIZE; i++) { > + for (i = 0; i < dev->le_rl_len; i++) { > struct btdev_rl *rl = &dev->le_rl[i]; > > if (RL_ADDR_EQUAL(rl, cmd->addr_type, &cmd->addr)) { > @@ -3847,7 +3866,7 @@ static int cmd_remove_rl(struct btdev *dev, const void *data, uint8_t len) > goto done; > } > > - for (i = 0; i < RL_SIZE; i++) { > + for (i = 0; i < dev->le_rl_len; i++) { > struct btdev_rl *rl = &dev->le_rl[i]; > > if (RL_ADDR_EQUAL(rl, cmd->addr_type, &cmd->addr)) { > @@ -3856,7 +3875,7 @@ static int cmd_remove_rl(struct btdev *dev, const void *data, uint8_t len) > } > } > > - if (i == RL_SIZE) { > + if (i == dev->le_rl_len) { > status = BT_HCI_ERR_INVALID_PARAMETERS; > goto done; > } > @@ -3902,7 +3921,7 @@ static int cmd_read_rl_size(struct btdev *dev, const void *data, uint8_t len) > struct bt_hci_rsp_le_read_resolv_list_size rsp; > > rsp.status = BT_HCI_ERR_SUCCESS; > - rsp.size = RL_SIZE; > + rsp.size = dev->le_rl_len; > > cmd_complete(dev, BT_HCI_CMD_LE_READ_RESOLV_LIST_SIZE, > &rsp, sizeof(rsp)); > @@ -6358,6 +6377,8 @@ struct btdev *btdev_create(enum btdev_type type, uint16_t id) > btdev->conns = queue_new(); > btdev->le_ext_adv = queue_new(); > > + btdev->le_al_len = AL_SIZE; > + btdev->le_rl_len = RL_SIZE; > return btdev; > } > > diff --git a/emulator/btdev.h b/emulator/btdev.h > index 412bfd158..b5f9979a8 100644 > --- a/emulator/btdev.h > +++ b/emulator/btdev.h > @@ -80,6 +80,10 @@ uint8_t btdev_get_le_scan_enable(struct btdev *btdev); > > void btdev_set_le_states(struct btdev *btdev, const uint8_t *le_states); > > +void btdev_set_al_len(struct btdev *btdev, uint8_t len); > + > +void btdev_set_rl_len(struct btdev *btdev, uint8_t len); > + > void btdev_set_command_handler(struct btdev *btdev, btdev_command_func handler, > void *user_data); > > diff --git a/emulator/hciemu.c b/emulator/hciemu.c > index 4752c8a4d..1f7af3b93 100644 > --- a/emulator/hciemu.c > +++ b/emulator/hciemu.c > @@ -601,6 +601,34 @@ void hciemu_set_central_le_states(struct hciemu *hciemu, > btdev_set_le_states(dev, le_states); > } > > +void hciemu_set_central_le_al_len(struct hciemu *hciemu, uint8_t len) > +{ > + struct btdev *dev; > + > + if (!hciemu || !hciemu->vhci) > + return; > + > + dev = vhci_get_btdev(hciemu->vhci); > + if (!dev) > + return; > + > + btdev_set_al_len(dev, len); > +} > + > +void hciemu_set_central_le_rl_len(struct hciemu *hciemu, uint8_t len) > +{ > + struct btdev *dev; > + > + if (!hciemu || !hciemu->vhci) > + return; > + > + dev = vhci_get_btdev(hciemu->vhci); > + if (!dev) > + return; > + > + btdev_set_rl_len(dev, len); > +} > + > bool hciemu_add_central_post_command_hook(struct hciemu *hciemu, > hciemu_command_func_t function, void *user_data) > { > diff --git a/emulator/hciemu.h b/emulator/hciemu.h > index 338fa844d..2a49d8bad 100644 > --- a/emulator/hciemu.h > +++ b/emulator/hciemu.h > @@ -61,6 +61,10 @@ uint8_t hciemu_get_central_le_scan_enable(struct hciemu *hciemu); > void hciemu_set_central_le_states(struct hciemu *hciemu, > const uint8_t *le_states); > > +void hciemu_set_central_le_al_len(struct hciemu *hciemu, uint8_t len); > + > +void hciemu_set_central_le_rl_len(struct hciemu *hciemu, uint8_t len); > + > typedef void (*hciemu_command_func_t)(uint16_t opcode, const void *data, > uint8_t len, void *user_data); > > -- > 2.25.1 Applied, thanks. -- Luiz Augusto von Dentz