svn commit: r188013 - head/usr.sbin/bluetooth/btpand

Maksim Yevmenkin emax at FreeBSD.org
Mon Feb 2 10:08:24 PST 2009


Author: emax
Date: Mon Feb  2 18:08:22 2009
New Revision: 188013
URL: http://svn.freebsd.org/changeset/base/188013

Log:
  Fix client mode. Pick up service availability changes.
  
  Obtained from:	NetBSD
  MFC after:	1 month

Modified:
  head/usr.sbin/bluetooth/btpand/btpand.c
  head/usr.sbin/bluetooth/btpand/btpand.h
  head/usr.sbin/bluetooth/btpand/server.c

Modified: head/usr.sbin/bluetooth/btpand/btpand.c
==============================================================================
--- head/usr.sbin/bluetooth/btpand/btpand.c	Mon Feb  2 16:56:58 2009	(r188012)
+++ head/usr.sbin/bluetooth/btpand/btpand.c	Mon Feb  2 18:08:22 2009	(r188013)
@@ -54,8 +54,8 @@ uint16_t	service_class;
 
 bdaddr_t	local_bdaddr;		/* -d <addr> */
 bdaddr_t	remote_bdaddr;		/* -a <addr> */
-uint16_t	l2cap_psm = 15;		/* -p <psm> */
-int		l2cap_mode = 0;		/* -m <mode> */
+uint16_t	l2cap_psm;		/* -p <psm> */
+int		l2cap_mode;		/* -m <mode> */
 
 int		server_limit;		/* -n <limit> */
 
@@ -177,6 +177,9 @@ main(int argc, char *argv[])
 	if (interface_name == NULL)
 		interface_name = "/dev/tap";
 
+	if (l2cap_psm == 0)
+		l2cap_psm = L2CAP_PSM_BNEP;
+
 	if (bdaddr_any(&remote_bdaddr) && server_limit == 0) {
 		if (service_class == SDP_SERVICE_CLASS_PANU)
 			server_limit = 1;

Modified: head/usr.sbin/bluetooth/btpand/btpand.h
==============================================================================
--- head/usr.sbin/bluetooth/btpand/btpand.h	Mon Feb  2 16:56:58 2009	(r188012)
+++ head/usr.sbin/bluetooth/btpand/btpand.h	Mon Feb  2 18:08:22 2009	(r188013)
@@ -51,6 +51,10 @@
 #define	L2CAP_PSM_INVALID(psm)	(((psm) & 0x0101) != 0x0001)
 #endif
 
+#ifndef	L2CAP_PSM_BNEP
+#define	L2CAP_PSM_BNEP	15
+#endif
+
 typedef struct channel	channel_t;
 typedef struct pfilter	pfilter_t;
 typedef struct mfilter	mfilter_t;

Modified: head/usr.sbin/bluetooth/btpand/server.c
==============================================================================
--- head/usr.sbin/bluetooth/btpand/server.c	Mon Feb  2 16:56:58 2009	(r188012)
+++ head/usr.sbin/bluetooth/btpand/server.c	Mon Feb  2 18:08:22 2009	(r188013)
@@ -1,4 +1,4 @@
-/*	$NetBSD: server.c,v 1.1 2008/08/17 13:20:57 plunky Exp $	*/
+/*	$NetBSD: server.c,v 1.2 2009/01/24 17:29:28 plunky Exp $	*/
 
 /*-
  * Copyright (c) 2008 Iain Hibbert
@@ -28,11 +28,12 @@
 /* $FreeBSD$ */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: server.c,v 1.1 2008/08/17 13:20:57 plunky Exp $");
+__RCSID("$NetBSD: server.c,v 1.2 2009/01/24 17:29:28 plunky Exp $");
 
 #include <sys/ioctl.h>
 
 #include <bluetooth.h>
+#include <inttypes.h>
 #include <errno.h>
 #include <sdp.h>
 #include <unistd.h>
@@ -42,7 +43,7 @@ __RCSID("$NetBSD: server.c,v 1.1 2008/08
 
 static struct event	server_ev;
 static int		server_fd;
-static int		server_load;
+static int		server_avail;
 
 static void *		server_ss;
 static uint32_t		server_handle;
@@ -73,13 +74,13 @@ server_update(int count)
 
 	log_debug("count %d", count);
 
-	server_load = (count - 1) * 100 / server_limit;
-	log_info("server_load: %d%%", server_load);
+	server_avail = UINT8_MAX - (count - 1) * UINT8_MAX / server_limit;
+	log_info("Service Availability: %d/%d", server_avail, UINT8_MAX);
 
-	if (server_load > 99 && server_fd != -1)
+	if (server_avail == 0 && server_fd != -1)
 		server_close();
 
-	if (server_load < 100 && server_fd == -1)
+	if (server_avail > 0 && server_fd == -1)
 		server_open();
 
 	if (service_name)
@@ -257,19 +258,9 @@ server_register(void)
 	}
 
 	memset(&p, 0, sizeof(p));
-
 	p.psm = l2cap_psm;
-
-	if (server_load < 1)		p.load_factor = 0;
-	else if (server_load <= 17)	p.load_factor = 1;
-	else if (server_load <= 33)	p.load_factor = 2;
-	else if (server_load <= 50)	p.load_factor = 3;
-	else if (server_load <= 67)	p.load_factor = 4;
-	else if (server_load <= 83)	p.load_factor = 5;
-	else if (server_load <= 99)	p.load_factor = 6;
-	else				p.load_factor = 7;
-
-	if (l2cap_mode != 0)		p.security_description = 0x0001;
+	p.load_factor = server_avail;
+	p.security_description = (l2cap_mode == 0 ? 0x0000 : 0x0001);
 
 	if (server_handle)
 		rv = sdp_change_service(server_ss, server_handle,


More information about the svn-src-head mailing list