lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0084/1039] Bluetooth: mgmt: Fix Experimental Feature Changed event
    Date
    From: Tedd Ho-Jeong An <tedd.an@intel.com>

    [ Upstream commit b15bfa4df63529150df9ff0585675f728436e0c1 ]

    This patch fixes the controller index in the Experimental Features
    Changed event for the offload_codec and the quality_report features to
    use the actual hdev index instead of non-controller index(0xffff) so the
    client can receive the event and know which controller the event is for.

    Fixes: ad93315183285 ("Bluetooth: Add offload feature under experimental flag")
    Fixes: ae7d925b5c043 ("Bluetooth: Support the quality report events")
    Signed-off-by: Tedd Ho-Jeong An <tedd.an@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/bluetooth/mgmt.c | 15 +++++++++------
    1 file changed, 9 insertions(+), 6 deletions(-)

    diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
    index 3e5283607b97c..44683443300ce 100644
    --- a/net/bluetooth/mgmt.c
    +++ b/net/bluetooth/mgmt.c
    @@ -3927,7 +3927,9 @@ static int exp_debug_feature_changed(bool enabled, struct sock *skip)
    }
    #endif

    -static int exp_quality_report_feature_changed(bool enabled, struct sock *skip)
    +static int exp_quality_report_feature_changed(bool enabled,
    + struct hci_dev *hdev,
    + struct sock *skip)
    {
    struct mgmt_ev_exp_feature_changed ev;

    @@ -3935,7 +3937,7 @@ static int exp_quality_report_feature_changed(bool enabled, struct sock *skip)
    memcpy(ev.uuid, quality_report_uuid, 16);
    ev.flags = cpu_to_le32(enabled ? BIT(0) : 0);

    - return mgmt_limited_event(MGMT_EV_EXP_FEATURE_CHANGED, NULL,
    + return mgmt_limited_event(MGMT_EV_EXP_FEATURE_CHANGED, hdev,
    &ev, sizeof(ev),
    HCI_MGMT_EXP_FEATURE_EVENTS, skip);
    }
    @@ -4156,14 +4158,15 @@ static int set_quality_report_func(struct sock *sk, struct hci_dev *hdev,
    &rp, sizeof(rp));

    if (changed)
    - exp_quality_report_feature_changed(val, sk);
    + exp_quality_report_feature_changed(val, hdev, sk);

    unlock_quality_report:
    hci_req_sync_unlock(hdev);
    return err;
    }

    -static int exp_offload_codec_feature_changed(bool enabled, struct sock *skip)
    +static int exp_offload_codec_feature_changed(bool enabled, struct hci_dev *hdev,
    + struct sock *skip)
    {
    struct mgmt_ev_exp_feature_changed ev;

    @@ -4171,7 +4174,7 @@ static int exp_offload_codec_feature_changed(bool enabled, struct sock *skip)
    memcpy(ev.uuid, offload_codecs_uuid, 16);
    ev.flags = cpu_to_le32(enabled ? BIT(0) : 0);

    - return mgmt_limited_event(MGMT_EV_EXP_FEATURE_CHANGED, NULL,
    + return mgmt_limited_event(MGMT_EV_EXP_FEATURE_CHANGED, hdev,
    &ev, sizeof(ev),
    HCI_MGMT_EXP_FEATURE_EVENTS, skip);
    }
    @@ -4229,7 +4232,7 @@ static int set_offload_codec_func(struct sock *sk, struct hci_dev *hdev,
    &rp, sizeof(rp));

    if (changed)
    - exp_offload_codec_feature_changed(val, sk);
    + exp_offload_codec_feature_changed(val, hdev, sk);

    return err;
    }
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 01:14    [W:4.069 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site