From: Marcel Holtmann <marcel@rvs.uni-bielefeld.de>
To: Max Krasnyansky <maxk@qualcomm.com>
Cc: Daryl Van Vorst <daryl@wideray.com>,
BlueZ Mailing List <bluez-devel@lists.sourceforge.net>
Subject: Re: [Bluez-devel] Qualification Testing
Date: 09 May 2003 03:14:26 +0200 [thread overview]
Message-ID: <1052442873.1069.35.camel@pegasus.local> (raw)
In-Reply-To: <5.1.0.14.2.20030508171149.01c082c0@unixmail.qualcomm.com>
Hi Max,
> >> 1.) TP/COS/CED/BI-01: Verifies that the IUT rejects an unkown
> >> signalling command. The tester sends an unkown L2CAP command. The IUT should
> >> respond with an L2CAP_Reject with reason 0 "Command not understood". The IUT
> >> did not.
> >
> >We have a fixme for this in the l2cap.c code, but currently no code
> >exists. Should be easy to fix, but nobody cares about it.
> Hold on. That's exactly what we do
> if (err) {
> l2cap_cmd_rej rej;
> BT_DBG("error %d", err);
>
> /* FIXME: Map err to a valid reason. */
> rej.reason = __cpu_to_le16(0);
> l2cap_send_rsp(conn, cmd.ident, L2CAP_COMMAND_REJ, L2CAP_CMD_REJ_SIZE, &rej);
> }
> Reason is always set to 0.
> Test should not fail.
you are right. This test should not fail.
> >> 2.) TP/COS/CFD/BV-01: Tests that IUT is able to handle the receiving
> >> of more than one request for configuration of data channel. Tester sends
> >> L2CAP_Config Req with flag=1, IUT responds with flag=0. According to section
> >> 5.4 p.290 of the version 1.1 spec, "When used in the Configuration Response,
> >> the continuation flag must be set if the flag is set in the Request".
> >
> >This seems to be a bug in the current code. But I have to re-read the
> >L2CAP specification for the details.
> Easy.
>
> --- 1.9/net/bluetooth/l2cap.c Wed Apr 23 04:45:41 2003
> +++ edited/net/bluetooth/l2cap.c Thu May 8 17:26:28 2003
> @@ -1320,15 +1320,18 @@
> {
> l2cap_conf_rsp *rsp = (l2cap_conf_rsp *) data;
> void *ptr = rsp->data;
> + u16 flags = 0;
>
> BT_DBG("sk %p complete %d", sk, result ? 1 : 0);
>
> if (result)
> *result = l2cap_conf_output(sk, &ptr);
> + else
> + flags |= 0x0001;
>
> rsp->scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
> rsp->result = __cpu_to_le16(result ? *result : 0);
> - rsp->flags = __cpu_to_le16(0);
> + rsp->flags = __cpu_to_le16(flags);
>
> return ptr - data;
>
> I'll commit this to my BK.
Fine.
> >> 3.) TP/COS/CFD/BV-02: Tests that IUT is able to perform negotiation
> >> while the tester rejects the configuration of a data channel. The IUT sends
> >> a configuration request and the tester rejects it. The IUT should send
> >> another configuration request, but it does not.
> >
> >Currently the channel is closed if they reject our config request,
> >because we don't know how to proceed if they don't like our settings. We
> >can sent them again, but they will be rejected again. For this case I
> >also have to read the L2CAP in detail.
> Yeah we talked about that. Test is stupid. I'm not sure how to fix that without
> affecting general logic.
I put this to the last item on the list. At the moment I don't care, but
I will spent some time to look at it.
> >> 4.) TP/COS/RCO/BI-01, BI-02: These tests verify that the IUT
> >> performs a consistency check on the data. Both tests send two packets to the
> >> IUT. In each test, the first packet has a mistake. In BI-01 the first packet
> >> is too short by one byte, and in BI-02 the first packet is too long by one
> >> byte. In both cases the stack must correctly receive the second packet, but
> >> not the first. The data should be discarded in the case of the
> >> inconsistencies, and an error reported to the application.
> >
> >It seems that we can't handle this case complete correctly, if the data
> >was put only in one fragment. But in the basics this should work and the
> >malformed packets should be dropped. Did you have a detailed log of this
> >test which shows us byte by byte which request was sent?
> Hmm, how should we return error to the application. Most socket app close
> the socket than read() returns error. i.e. Even if we fix the kernel to
> return some BT specific error, test will fail on other apps which will
> simply close the socket.
> Also are those corrupted data packets or signaling packets ?
> If signalling we're not supposed to return error to all L2CAP apps are we ? ;-)
The test should pass if we correctly drop those wrong packets. But we
need to see how the test acts. We need a "hcidump -w <file>".
> >> RFCOMM:
> >> Note: Some of these comments don't apply to a specific test case
> >> (they are more general).
> >> 1.) Must not modify pbits in pn (parameter negotiation) response.
> >> The pbits are dependent on which DLC is being configured. Apparently this is
> >> a common problem, and one that has been argued about with the SIG because
> >> apparently nobody uses the bits - but the SIG would not give in (refer to
> >> erratum 364). They are specified in the TS GSM 07.10 630 spec, section
> >> 5.4.6.3.1.
> Yeah, we can fix that. We simply have to copy those bits into response.
> Another one of those useless rules.
I have fixed this already.
> >> 2.) TP/RFC/BV-07: Closing rfcomm doesn't appear to close l2cap. Is
> >> this true? This isn't actually required to pass this test, but it did
> >> confuse the tester. This may have been a mistake on my part. I just hit
> >> ctrl-c when rctest was connected and assumed that everything would get
> >> closed. Would calling close() have a different effect?
> >
> >This is working fine for me. After closing the channel, we close dlci 0
> >and this also closes the L2CAP connection.
> Yes. I'm 100% sure it works. rfcomm_session_del() kills L2CAP socket.
Can you remember if we had a problem with this in bluez-kernel-2.3 ?
> >> 5.) Once an RFCOMM channel is established, the IUT must exchange
> >> MSC's (modem status commands) before sending data. That is, it must send an
> >> MSC, wait for a response, wait for the sender's MSC, and respond to it
> >> before sending data. Our device sent an MSC and then immediately started
> >> sending data when we used rctest. This applies to many test cases.
> >
> >We send the MSC after the UA. But we also go into BT_CONNECTED state and
> >in this state you can also start sending data. We should maybe go from
> >BT_CONNECT -> BT_CONFIG and only switch to BT_CONNECTED after the
> >successful exchange of MSC.
> I remember thinking about that. But they way I interpreted spec was that we
> don't have to wait for MSC response.
> This should be easy to fix.
I leave this up to you to fix.
> >> 6.) If a connecting device doesn't send a PN command with CL bits
> >> set to 0x0f, then it means it is not a 1.1 device and we must not use credit
> >> based flow control. In our case, when such a PN command was received, data
> >> was sent using credit based flow control but shouldn't have been. This
> >> applies to many test cases.
> I don't believe your testing software :).
> So you should check your tester app :).
I think we changed some code of the credit based flow control handling
from bluez-kernel-2.3 to the current state.
> btw When CFC is not enabled we will have to wait for MSC from the other side. Notice that we set
> THROTTLED flag in that case. Which is cleared by the MSC or more credits.
> So I guess we can just always set that flag and clear it when we get MSC which will fix the MSC
> test case without messing with the state machine.
Sounds reasonable to me.
Regards
Marcel
-------------------------------------------------------
Enterprise Linux Forum Conference & Expo, June 4-6, 2003, Santa Clara
The only event dedicated to issues related to Linux enterprise solutions
www.enterpriselinuxforum.com
_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel
next prev parent reply other threads:[~2003-05-09 1:14 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-06 17:34 [Bluez-devel] Qualification Testing Daryl Van Vorst
2003-05-07 10:56 ` Stephen Crane
2003-05-07 16:44 ` Daryl Van Vorst
2003-05-08 2:18 ` Daryl Van Vorst
2003-05-12 16:37 ` Stephen Crane
2003-05-12 19:38 ` Daryl Van Vorst
2003-05-08 13:43 ` Marcel Holtmann
2003-05-08 18:11 ` Daryl Van Vorst
2003-05-08 19:53 ` Marcel Holtmann
2003-05-08 21:04 ` Daryl Van Vorst
2003-05-08 21:55 ` Daryl Van Vorst
2003-05-09 0:10 ` Marcel Holtmann
2003-05-08 22:06 ` Daryl Van Vorst
2003-05-08 18:33 ` Daryl Van Vorst
2003-05-09 0:51 ` Max Krasnyansky
2003-05-09 1:14 ` Marcel Holtmann [this message]
2003-05-09 18:11 ` Daryl Van Vorst
2003-05-09 18:36 ` Marcel Holtmann
2003-05-09 21:15 ` Max Krasnyansky
2003-05-09 21:52 ` Daryl Van Vorst
2003-05-09 22:51 ` Max Krasnyansky
2003-05-09 23:16 ` Daryl Van Vorst
2003-05-09 23:40 ` Daryl Van Vorst
2003-05-10 0:26 ` Marcel Holtmann
2003-05-10 2:33 ` Daryl Van Vorst
2003-05-10 6:17 ` Max Krasnyansky
2003-05-10 11:25 ` Marcel Holtmann
2003-05-11 3:57 ` Daryl Van Vorst
2003-05-12 22:51 ` Daryl Van Vorst
2003-05-12 23:05 ` Marcel Holtmann
2003-05-13 17:37 ` Max Krasnyansky
2003-05-13 17:55 ` Daryl Van Vorst
2003-05-13 22:31 ` Marcel Holtmann
2003-05-13 23:02 ` Max Krasnyansky
2003-05-13 23:19 ` Marcel Holtmann
2003-05-14 0:05 ` Max Krasnyansky
2003-05-14 0:30 ` Marcel Holtmann
2003-05-14 16:02 ` Daryl Van Vorst
2003-05-14 16:34 ` Max Krasnyansky
2003-05-14 21:12 ` Daryl Van Vorst
2003-05-14 22:24 ` Daryl Van Vorst
2003-05-14 22:27 ` Marcel Holtmann
2003-05-14 22:35 ` Daryl Van Vorst
2003-05-16 0:43 ` Max Krasnyansky
2003-05-16 14:43 ` Daryl Van Vorst
2003-05-16 17:38 ` Max Krasnyansky
2003-05-16 17:54 ` Daryl Van Vorst
2003-05-16 7:17 ` Marcel Holtmann
2003-05-10 6:16 ` Max Krasnyansky
2003-05-10 16:30 ` Marcel Holtmann
2003-05-11 7:19 ` Max Krasnyansky
2003-05-11 7:44 ` Marcel Holtmann
2003-05-12 23:37 ` Daryl Van Vorst
2003-05-13 0:04 ` Marcel Holtmann
2003-05-13 0:43 ` Daryl Van Vorst
2003-05-13 17:49 ` Max Krasnyansky
2003-05-13 17:44 ` Max Krasnyansky
2003-05-13 18:36 ` Daryl Van Vorst
2003-05-15 21:25 ` Daryl Van Vorst
2003-05-16 17:35 ` Max Krasnyansky
2003-05-16 18:01 ` Daryl Van Vorst
2003-05-16 18:23 ` Marcel Holtmann
2003-05-19 21:17 ` Max Krasnyansky
2003-05-19 21:19 ` Max Krasnyansky
2003-05-20 16:40 ` Daryl Van Vorst
2003-05-29 22:51 ` Daryl Van Vorst
2003-06-12 18:08 ` Max Krasnyansky
2003-06-12 18:49 ` Daryl Van Vorst
2003-06-12 19:11 ` Max Krasnyansky
2003-06-12 20:54 ` Daryl Van Vorst
2003-06-12 21:28 ` Marcel Holtmann
2003-06-13 1:22 ` Max Krasnyansky
2003-05-13 13:30 ` Daryl Van Vorst
2003-05-13 14:02 ` Marcel Holtmann
-- strict thread matches above, loose matches on Subject: below --
2004-12-01 0:32 [Bluez-devel] Qualification testing Daryl Van Vorst
2004-12-01 6:42 ` Marcel Holtmann
2004-12-01 19:09 ` Daryl Van Vorst
2004-12-01 19:32 ` Marcel Holtmann
2004-12-01 23:02 ` Daryl Van Vorst
2004-12-02 7:35 ` Marcel Holtmann
2004-12-02 17:56 ` Daryl Van Vorst
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1052442873.1069.35.camel@pegasus.local \
--to=marcel@rvs.uni-bielefeld.de \
--cc=bluez-devel@lists.sourceforge.net \
--cc=daryl@wideray.com \
--cc=maxk@qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox