Return-Path: MIME-Version: 1.0 In-Reply-To: References: <1324051799-21439-1-git-send-email-sancane@gmail.com> <1324051799-21439-2-git-send-email-sancane@gmail.com> Date: Mon, 19 Dec 2011 15:54:42 +0100 Message-ID: Subject: Re: [PATCH 01/11] attrib-server: Initial steps to provide multi-adapter GATT server support From: Santiago Carot To: Anderson Lizardo Cc: Claudio Takahasi , linux-bluetooth@vger.kernel.org Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-bluetooth-owner@vger.kernel.org List-ID: Hi, 2011/12/19 Santiago Carot : > Hi Anderson, > > 2011/12/19 Anderson Lizardo : >> Hi Santiago, >> >> On Mon, Dec 19, 2011 at 10:35 AM, Santiago Carot wrote: >>>> Is there race condition here? Remember that plugins can also register >>>> an adapter driver. >>>> If a GATT "plugin" wants to register attributes during the probing the >>>> attribute server needs to be ready. >>>> >>> >>> I know that, remember these are transactional patches towardas >>> multi-adapter support. They only prepare the environment to start >>> coding. The patch 11 fixes this issue. In fact, one could think that >>> it should in this place but when I started coding it I thought it was >>> easier to reutilize functions which were already implemented and >>> change it after multi-adapter started working. >> Sorry: patch 10 is supposed to deal with that :P >> I don't think patch 11 fixes the architectural issue of initializing >> the attribute databases on a adapter driver. You can't guarantee it >> will be initialized prior to other adapter drivers (registered by GATT >> plugins). >> > > Patch 11 removes the adapter driver usage and initializes the GATT > server (and related stuff) in the adapter during the adapter setup, > this is operation is done before any other adapter plugin is called: > > diff --git a/src/adapter.c b/src/adapter.c > index 1a701a4..200e9d9 100644 > --- a/src/adapter.c > +++ b/src/adapter.c > @@ -2483,6 +2483,10 @@ gboolean adapter_init(struct btd_adapter *adapter) > ? ? ? } > > ? ? ? sdp_init_services_list(&adapter->bdaddr); > + > + ? ? ? if (main_opts.attrib_server) > + ? ? ? ? ? ? ? btd_adapter_gatt_server_start(adapter); > + > ? ? ? load_drivers(adapter); > ? ? ? clear_blocked(adapter); > ? ? ? load_devices(adapter); > > Please, corect me if I'm wrong. > >> Please take our comments as responses to the RFC :) > > ?Of course, and they are very welcome ;) > Regards.