Re: [PATCH] [RFC] HDP: reject MDL reconnection with different MTU

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

 



2011/1/14 José Antonio Santos Cadenas <jcaden@xxxxxxxxxxxx>
>
> Hi Elvis,
>
> On Thu, 13 Jan 2011 21:11:04 -0200, Elvis Pfützenreuter wrote:
>>
>> From: Elvis Pfutzenreuter <epx@xxxxxxxxxxx>
>>
>> This patch implements refusal of a MDL reconnection if the new L2CAP
>> connection presents a different MTU. Accordingly to HDP spec. item 3.5.
>>
>> It aims to pass the TC_SNK_HCT_BV_07_C PTS test. (It does not pass yet
>> because PTS itself seems to have issues. See ticket 7121 for details.)

Just a little fix, I guess the issue that you mentioned is 7212 and 7214.

Still reviewing...

>
> Nice catch!
>
> The patch seems OK for me, but please, let me some time for review this issue more deeply before pushing the patch.
>
> Regards.
>
> Jose.
>
>> ---
>>  health/hdp.c       |   17 +++++++++++++++--
>>  health/hdp_types.h |    1 +
>>  2 files changed, 16 insertions(+), 2 deletions(-)
>>
>> diff --git a/health/hdp.c b/health/hdp.c
>> index dc1f803..4f89958 100644
>> --- a/health/hdp.c
>> +++ b/health/hdp.c
>> @@ -874,6 +874,7 @@ static gboolean check_channel_conf(struct
>> hdp_channel *chan)
>>        GError *err = NULL;
>>        GIOChannel *io;
>>        uint8_t mode;
>> +       uint16_t mtu;
>>        int fd;
>>
>>        fd = mcap_mdl_get_fd(chan->mdl);
>> @@ -883,6 +884,7 @@ static gboolean check_channel_conf(struct
>> hdp_channel *chan)
>>
>>        if (!bt_io_get(io, BT_IO_L2CAP, &err,
>>                        BT_IO_OPT_MODE, &mode,
>> +                       BT_IO_OPT_OMTU, &mtu,
>>                        BT_IO_OPT_INVALID)) {
>>                error("Error: %s", err->message);
>>                g_io_channel_unref(io);
>> @@ -894,13 +896,24 @@ static gboolean check_channel_conf(struct
>> hdp_channel *chan)
>>
>>        switch (chan->config) {
>>        case HDP_RELIABLE_DC:
>> -               return mode == L2CAP_MODE_ERTM;
>> +               if (mode != L2CAP_MODE_ERTM)
>> +                       return FALSE;
>> +               break;
>>        case HDP_STREAMING_DC:
>> -               return mode == L2CAP_MODE_STREAMING;
>> +               if (mode != L2CAP_MODE_STREAMING)
>> +                       return FALSE;
>> +               break;
>>        default:
>>                error("Error: Connected with unknown configuration");
>>                return FALSE;
>>        }
>> +
>> +       DBG("MDL MTU: %d; Channel MTU: %d", mtu, chan->mtu);
>> +
>> +       if (!chan->mtu)
>> +               chan->mtu = mtu;
>> +
>> +       return chan->mtu == mtu;
>>  }
>>
>>  static void hdp_mcap_mdl_connected_cb(struct mcap_mdl *mdl, void *data)
>> diff --git a/health/hdp_types.h b/health/hdp_types.h
>> index fffdb32..714cf9a 100644
>> --- a/health/hdp_types.h
>> +++ b/health/hdp_types.h
>> @@ -120,6 +120,7 @@ struct hdp_channel {
>>        uint8_t                 config;         /* Channel configuration */
>>        uint8_t                 mdep;           /* Remote MDEP */
>>        uint16_t                mdlid;          /* Data channel Id */
>> +       uint16_t                mtu;            /* Channel MTU */
>>        struct hdp_echo_data    *edata;         /* private data used by echo channels */
>>        gint                    ref;            /* Reference counter */
>>  };
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[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