* [PATCH 1/4] l2test: add option to use SOCK_STREAM @ 2010-03-30 18:53 Gustavo F. Padovan 2010-03-30 18:53 ` [PATCH 2/4] Add duplex test case to l2test Gustavo F. Padovan 2010-04-28 15:55 ` [PATCH 1/4] l2test: add option to use SOCK_STREAM Johan Hedberg 0 siblings, 2 replies; 5+ messages in thread From: Gustavo F. Padovan @ 2010-03-30 18:53 UTC (permalink / raw) To: linux-bluetooth; +Cc: marcel, gustavo --- test/l2test.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/test/l2test.c b/test/l2test.c index 714604a..bfffab2 100644 --- a/test/l2test.c +++ b/test/l2test.c @@ -1046,6 +1046,7 @@ static void usage(void) "\t[-F fcs] use CRC16 check (default = 1)\n" "\t[-R] reliable mode\n" "\t[-G] use connectionless channel (datagram)\n" + "\t[-U] use sock stream\n" "\t[-A] request authentication\n" "\t[-E] request encryption\n" "\t[-S] secure connection\n" @@ -1060,7 +1061,7 @@ int main(int argc, char *argv[]) bacpy(&bdaddr, BDADDR_ANY); - while ((opt=getopt(argc,argv,"rdscuwmnxyzpb:i:P:I:O:B:N:L:W:C:D:X:F:RGAESMT")) != EOF) { + while ((opt=getopt(argc,argv,"rdscuwmnxyzpb:i:P:I:O:B:N:L:W:C:D:X:F:RGUAESMT")) != EOF) { switch(opt) { case 'r': mode = RECV; @@ -1199,6 +1200,10 @@ int main(int argc, char *argv[]) socktype = SOCK_DGRAM; break; + case 'U': + socktype = SOCK_STREAM; + break; + case 'T': timestamp = 1; break; -- 1.6.4.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/4] Add duplex test case to l2test 2010-03-30 18:53 [PATCH 1/4] l2test: add option to use SOCK_STREAM Gustavo F. Padovan @ 2010-03-30 18:53 ` Gustavo F. Padovan 2010-03-30 18:53 ` [PATCH 3/4] Add txWindow and MaxTt to l2cap_options Gustavo F. Padovan 2010-04-28 15:55 ` [PATCH 1/4] l2test: add option to use SOCK_STREAM Johan Hedberg 1 sibling, 1 reply; 5+ messages in thread From: Gustavo F. Padovan @ 2010-03-30 18:53 UTC (permalink / raw) To: linux-bluetooth; +Cc: marcel, gustavo Use a SOCK_NONBLOCK to send and receive at the same time. --- test/l2test.c | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 42 insertions(+), 1 deletions(-) diff --git a/test/l2test.c b/test/l2test.c index bfffab2..d11992f 100644 --- a/test/l2test.c +++ b/test/l2test.c @@ -60,6 +60,8 @@ enum { LSEND, SENDDUMP, LSENDDUMP, + LSENDRECV, + CSENDRECV, INFOREQ, PAIRING, }; @@ -775,6 +777,22 @@ static void senddump_mode(int sk) dump_mode(sk); } +static void send_and_recv_mode(int sk) +{ + int flags; + + if ((flags = fcntl(sk, F_GETFL, 0)) < 0) + flags = 0; + fcntl(sk, F_SETFL, flags | O_NONBLOCK); + + /* fork for duplex channel */ + if (fork()) + send_mode(sk); + else + recv_mode(sk); + return; +} + static void reconnect_mode(char *svr) { while (1) { @@ -1024,6 +1042,8 @@ static void usage(void) "\t-w listen and send\n" "\t-d listen and dump incoming data\n" "\t-x listen, then send, then dump incoming data\n" + "\t-t listen, then send and receive at the same time\n" + "\t-q connect, then send and receive at the same time\n" "\t-s connect and send\n" "\t-u connect and receive\n" "\t-n connect and be silent\n" @@ -1061,7 +1081,7 @@ int main(int argc, char *argv[]) bacpy(&bdaddr, BDADDR_ANY); - while ((opt=getopt(argc,argv,"rdscuwmnxyzpb:i:P:I:O:B:N:L:W:C:D:X:F:RGUAESMT")) != EOF) { + while ((opt=getopt(argc,argv,"rdscuwmntqxyzpb:i:P:I:O:B:N:L:W:C:D:X:F:RUGAESMT")) != EOF) { switch(opt) { case 'r': mode = RECV; @@ -1100,6 +1120,15 @@ int main(int argc, char *argv[]) need_addr = 1; break; + case 't': + mode = LSENDRECV; + break; + + case 'q': + mode = CSENDRECV; + need_addr = 1; + break; + case 'x': mode = LSENDDUMP; break; @@ -1286,6 +1315,18 @@ int main(int argc, char *argv[]) do_listen(senddump_mode); break; + case LSENDRECV: + do_listen(send_and_recv_mode); + break; + + case CSENDRECV: + sk = do_connect(argv[optind]); + if (sk < 0) + exit(1); + + send_and_recv_mode(sk); + break; + case INFOREQ: info_request(argv[optind]); exit(0); -- 1.6.4.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/4] Add txWindow and MaxTt to l2cap_options 2010-03-30 18:53 ` [PATCH 2/4] Add duplex test case to l2test Gustavo F. Padovan @ 2010-03-30 18:53 ` Gustavo F. Padovan 2010-03-30 18:53 ` [PATCH 4/4] Add options to test MaxTx and TxWindow Gustavo F. Padovan 0 siblings, 1 reply; 5+ messages in thread From: Gustavo F. Padovan @ 2010-03-30 18:53 UTC (permalink / raw) To: linux-bluetooth; +Cc: marcel, gustavo --- lib/l2cap.h | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/lib/l2cap.h b/lib/l2cap.h index 648615d..e59cfdd 100644 --- a/lib/l2cap.h +++ b/lib/l2cap.h @@ -52,6 +52,8 @@ struct l2cap_options { uint16_t flush_to; uint8_t mode; uint8_t fcs; + uint8_t max_tx; + uint16_t txwin_size; }; #define L2CAP_CONNINFO 0x02 -- 1.6.4.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 4/4] Add options to test MaxTx and TxWindow 2010-03-30 18:53 ` [PATCH 3/4] Add txWindow and MaxTt to l2cap_options Gustavo F. Padovan @ 2010-03-30 18:53 ` Gustavo F. Padovan 0 siblings, 0 replies; 5+ messages in thread From: Gustavo F. Padovan @ 2010-03-30 18:53 UTC (permalink / raw) To: linux-bluetooth; +Cc: marcel, gustavo --- test/l2test.c | 22 +++++++++++++++++++++- 1 files changed, 21 insertions(+), 1 deletions(-) diff --git a/test/l2test.c b/test/l2test.c index d11992f..9413070 100644 --- a/test/l2test.c +++ b/test/l2test.c @@ -75,6 +75,12 @@ static int omtu = 0; /* Default FCS option */ static int fcs = 0x01; +/* Default Transmission Window */ +static int txwin_size = 63; + +/* Default Max Transmission */ +static int max_transmit = 3; + /* Default data size */ static long data_size = -1; static long buffer_size = 2048; @@ -226,6 +232,8 @@ static int do_connect(char *svr) opts.mode = rfcmode; opts.fcs = fcs; + opts.txwin_size = txwin_size; + opts.max_tx = max_transmit; if (setsockopt(sk, SOL_L2CAP, L2CAP_OPTIONS, &opts, sizeof(opts)) < 0) { syslog(LOG_ERR, "Can't set L2CAP options: %s (%d)", @@ -388,6 +396,8 @@ static void do_listen(void (*handler)(int sk)) opts.mode = rfcmode; opts.fcs = fcs; + opts.txwin_size = txwin_size; + opts.max_tx = max_transmit; if (setsockopt(sk, SOL_L2CAP, L2CAP_OPTIONS, &opts, sizeof(opts)) < 0) { syslog(LOG_ERR, "Can't set L2CAP options: %s (%d)", @@ -1064,6 +1074,8 @@ static void usage(void) "\t[-D milliseconds] delay after sending num frames (default = 0)\n" "\t[-X mode] select retransmission/flow-control mode\n" "\t[-F fcs] use CRC16 check (default = 1)\n" + "\t[-Q num] Max Transmit value (default = 3)\n" + "\t[-Z size] Transmission Window size (default = 63)\n" "\t[-R] reliable mode\n" "\t[-G] use connectionless channel (datagram)\n" "\t[-U] use sock stream\n" @@ -1081,7 +1093,7 @@ int main(int argc, char *argv[]) bacpy(&bdaddr, BDADDR_ANY); - while ((opt=getopt(argc,argv,"rdscuwmntqxyzpb:i:P:I:O:B:N:L:W:C:D:X:F:RUGAESMT")) != EOF) { + while ((opt=getopt(argc,argv,"rdscuwmntqxyzpb:i:P:I:O:B:N:L:W:C:D:X:F:Q:Z:RUGAESMT")) != EOF) { switch(opt) { case 'r': mode = RECV; @@ -1237,6 +1249,14 @@ int main(int argc, char *argv[]) timestamp = 1; break; + case 'Q': + max_transmit = atoi(optarg); + break; + + case 'Z': + txwin_size = atoi(optarg); + break; + default: usage(); exit(1); -- 1.6.4.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/4] l2test: add option to use SOCK_STREAM 2010-03-30 18:53 [PATCH 1/4] l2test: add option to use SOCK_STREAM Gustavo F. Padovan 2010-03-30 18:53 ` [PATCH 2/4] Add duplex test case to l2test Gustavo F. Padovan @ 2010-04-28 15:55 ` Johan Hedberg 1 sibling, 0 replies; 5+ messages in thread From: Johan Hedberg @ 2010-04-28 15:55 UTC (permalink / raw) To: Gustavo F. Padovan; +Cc: linux-bluetooth, marcel, gustavo Hi, On Tue, Mar 30, 2010, Gustavo F. Padovan wrote: > --- > test/l2test.c | 7 ++++++- > 1 files changed, 6 insertions(+), 1 deletions(-) All four patches have now been pushed upstream. Thanks. Johan ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-04-28 15:55 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-03-30 18:53 [PATCH 1/4] l2test: add option to use SOCK_STREAM Gustavo F. Padovan 2010-03-30 18:53 ` [PATCH 2/4] Add duplex test case to l2test Gustavo F. Padovan 2010-03-30 18:53 ` [PATCH 3/4] Add txWindow and MaxTt to l2cap_options Gustavo F. Padovan 2010-03-30 18:53 ` [PATCH 4/4] Add options to test MaxTx and TxWindow Gustavo F. Padovan 2010-04-28 15:55 ` [PATCH 1/4] l2test: add option to use SOCK_STREAM Johan Hedberg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).