linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] hcidump: decode extended flow spec option
@ 2011-07-27  9:23 Emeltchenko Andrei
  2011-07-29 10:07 ` Johan Hedberg
  0 siblings, 1 reply; 3+ messages in thread
From: Emeltchenko Andrei @ 2011-07-27  9:23 UTC (permalink / raw)
  To: linux-bluetooth

From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>

Decode EFS option in l2cap configuration packets
---
 parser/l2cap.c |   52 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 44 insertions(+), 8 deletions(-)

diff --git a/parser/l2cap.c b/parser/l2cap.c
index f7f0c3e..6345f8d 100644
--- a/parser/l2cap.c
+++ b/parser/l2cap.c
@@ -277,14 +277,18 @@ static char *status2str(uint16_t status)
 static char *confresult2str(uint16_t result)
 {
 	switch (result) {
-	case 0x0000:
+	case L2CAP_CONF_SUCCESS:
 		return "Success";
-	case 0x0001:
+	case L2CAP_CONF_UNACCEPT:
 		return "Failure - unacceptable parameters";
-	case 0x0002:
+	case L2CAP_CONF_REJECT:
 		return "Failure - rejected (no reason provided)";
-	case 0x0003:
+	case L2CAP_CONF_UNKNOWN:
 		return "Failure - unknown options";
+	case L2CAP_CONF_PENDING:
+		return "Pending";
+	case L2CAP_CONF_EFS_REJECT:
+		return "Failure - flowspec reject";
 	default:
 		return "Reserved";
 	}
@@ -304,11 +308,11 @@ static char *inforesult2str(uint16_t result)
 static char *type2str(uint8_t type)
 {
 	switch (type) {
-	case 0x00:
+	case L2CAP_SERVTYPE_NOTRAFFIC:
 		return "No traffic";
-	case 0x01:
-		return "Best effort";
-	case 0x02:
+	case L2CAP_SERVTYPE_BESTEFFORT:
+		return "Best Effort";
+	case L2CAP_SERVTYPE_GUARANTEED:
 		return "Guaranteed";
 	default:
 		return "Reserved";
@@ -477,6 +481,25 @@ static void conf_rfc(void *ptr, int len, int in, uint16_t cid)
 	printf(")");
 }
 
+static void conf_efs(void *ptr)
+{
+	uint8_t id, ser_type;
+	uint16_t max_sdu;
+	uint32_t sdu_itime, access_lat, flush_to;
+
+	id = get_val(ptr, sizeof(id));
+	ser_type = get_val(ptr + 1, sizeof(ser_type));
+	max_sdu = get_val(ptr + 2, sizeof(max_sdu));
+	sdu_itime = get_val(ptr + 4, sizeof(sdu_itime));
+	access_lat = get_val(ptr + 8, sizeof(access_lat));
+	flush_to = get_val(ptr + 12, sizeof(flush_to));
+
+	printf("EFS (Id 0x%02x, SerType %s, MaxSDU 0x%04x, SDUitime 0x%08x, "
+			"AccLat 0x%08x, FlushTO 0x%08x)",
+			id, type2str(ser_type), max_sdu, sdu_itime,
+			access_lat, flush_to);
+}
+
 static void conf_fcs(void *ptr, int len)
 {
 	uint8_t fcs;
@@ -489,6 +512,7 @@ static void conf_fcs(void *ptr, int len)
 
 static void conf_opt(int level, void *ptr, int len, int in, uint16_t cid)
 {
+	int indent = 0;
 	p_indent(level, 0);
 	while (len > 0) {
 		l2cap_conf_opt *h = ptr;
@@ -499,6 +523,11 @@ static void conf_opt(int level, void *ptr, int len, int in, uint16_t cid)
 		if (h->type & 0x80)
 			printf("[");
 
+		if (indent++) {
+			printf("\n");
+			p_indent(level, 0);
+		}
+
 		switch (h->type & 0x7f) {
 		case L2CAP_CONF_MTU:
 			set_mode(in, cid, 0x00);
@@ -527,6 +556,10 @@ static void conf_opt(int level, void *ptr, int len, int in, uint16_t cid)
 			conf_fcs(h->val, h->len);
 			break;
 
+		case L2CAP_CONF_EFS:
+			conf_efs(h->val);
+			break;
+
 		default:
 			printf("Unknown (type %2.2x, len %d)", h->type & 0x7f, h->len);
 			break;
@@ -562,6 +595,9 @@ static void conf_list(int level, uint8_t *list, int len)
 		case L2CAP_CONF_FCS:
 			printf("FCS ");
 			break;
+		case L2CAP_CONF_EFS:
+			printf("EFS ");
+			break;
 		default:
 			printf("%2.2x ", list[i] & 0x7f);
 			break;
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] hcidump: decode extended flow spec option
  2011-07-27  9:23 [PATCH] hcidump: decode extended flow spec option Emeltchenko Andrei
@ 2011-07-29 10:07 ` Johan Hedberg
  2011-07-29 16:59   ` Luiz Augusto von Dentz
  0 siblings, 1 reply; 3+ messages in thread
From: Johan Hedberg @ 2011-07-29 10:07 UTC (permalink / raw)
  To: Emeltchenko Andrei; +Cc: linux-bluetooth

Hi Andrei,

On Wed, Jul 27, 2011, Emeltchenko Andrei wrote:
> From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> 
> Decode EFS option in l2cap configuration packets
> ---
>  parser/l2cap.c |   52 ++++++++++++++++++++++++++++++++++++++++++++--------
>  1 files changed, 44 insertions(+), 8 deletions(-)

Applied. Thanks.

Johan

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] hcidump: decode extended flow spec option
  2011-07-29 10:07 ` Johan Hedberg
@ 2011-07-29 16:59   ` Luiz Augusto von Dentz
  0 siblings, 0 replies; 3+ messages in thread
From: Luiz Augusto von Dentz @ 2011-07-29 16:59 UTC (permalink / raw)
  To: Emeltchenko Andrei, linux-bluetooth

Hi Andrei,

On Fri, Jul 29, 2011 at 1:07 PM, Johan Hedberg <johan.hedberg@gmail.com> wrote:
> Hi Andrei,
>
> On Wed, Jul 27, 2011, Emeltchenko Andrei wrote:
>> From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
>>
>> Decode EFS option in l2cap configuration packets
>> ---
>>  parser/l2cap.c |   52 ++++++++++++++++++++++++++++++++++++++++++++--------
>>  1 files changed, 44 insertions(+), 8 deletions(-)
>
> Applied. Thanks.
>
> Johan
> --

I think we might want to check the version of libbluetooth, otherwise
this might fail to compile with older version.

-- 
Luiz Augusto von Dentz

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-07-29 16:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-27  9:23 [PATCH] hcidump: decode extended flow spec option Emeltchenko Andrei
2011-07-29 10:07 ` Johan Hedberg
2011-07-29 16:59   ` Luiz Augusto von Dentz

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).