Re: RFC: QuIC's AMP + eL2CAP Technical Plans

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Tim,

> >> >> QuIC (Qualcomm Innovation Center, Inc., a member of the Code Aurora
> >> >> Forum)
> >> >> is planning an implementation of AMP for BlueZ.  Here are some
> >> details
> >> >> of
> >> >> our technical approach.  We are interested in comments from the BlueZ
> >> >> development community on validity and whether there are areas we have
> >> >> missed.
> >> >>
> >> >> Features:
> >> >> - Completion of L2CAP with ERTM
> >> >>
> >> >> - Addition of L2CAP Channel Management and AMP Manager
> >> >>
> >> >> - DBUS support to access AMP features, control AMP settings, etc.
> >> >>
> >> >> - Updates to Test Programs (hcidump, hciemu, l2test, ...)
> >> >>
> >> >> - Creation of a Fake PAL to facilitate desktop development using
> >> wired
> >> >> TCP
> >> >>
> >> >> - Legacy L2CAP sockets take advantage of AMP, if so enabled using new
> >> >> controls (sockopts or DBUS)
> >> >>
> >> >> - Key Management extended for AMP Controller Keys
> >> >>
> >> >>
> >> >> L2CAP and ERTM
> >> >> --------------
> >> >>
> >> >> A prerequisite for AMP support is a fully functional L2CAP ERTM
> >> >> implementation, including optional L2CAP features not currently
> >> included
> >> >> in BlueZ.
> >> >>
> >> >> Our overall approach is to build on the existing ERTM code in the
> >> >> bluetooth-testing tree, extending the present socket interfaces that
> >> are
> >> >> visible to userspace.  The extensions we foresee are sockopt
> >> >> configuration
> >> >> of MPS (max PDU size), TX window size (currently hard coded), and a
> >> >> simple
> >> >> AMP control policy ("BR/EDR only", "initiate on or move to AMP", or
> >> >> "initiate on or move to BR/EDR, allow incoming move").
> >> >
> >> > I was under the impression it is best to match the MPS with the ACL
> >> MTU
> >> > from the controller? So do we need really an option less. Less options
> >> > are less confusing for users.
> >>
> >> I consulted the team. They say: Yes, it's reasonable to not allow the
> >> application to override automatic MPS values.  For BR/EDR controllers,
> >> MPS
> >> should be sized appropriately for 3-DH5 packets (1021 bytes minus
> >> overhead).  AMP controllers report their MTU/MPS size, which will be
> >> used
> >> by L2CAP on AMP channels.
> >
> > we are not doing this right now, but using the ACL MTU is what seems to
> > be best. Also for most Bluetooth chips these days, it is 1021 bytes.
> >
> > And even if we wanna play with it, we either make it a module parameter
> > or just a debugfs value for testing. However in the end I expect the
> > default value here will be fine.
> >
> >> >> There are a few protocol-level enhancements required.  One is to
> >> support
> >> >> L2CAP lockstep configuration, in addition to the present standard
> >> >> configuration process.  Another addition is support for the extended
> >> TX
> >> >> window option.
> >> >>
> >> >> Core ERTM functionality (without the proposed additional features) is
> >> >> still a work in progress, and the main area that needs attention is
> >> the
> >> >> implementation of the transmitter (XMIT and WAIT_F) and receiver
> >> (RECV
> >> >> and
> >> >> SREJ_SENT) state tables as defined in the ERTM spec.
> >> >>
> >> >>
> >> >> L2CAP and Channel Management for AMP
> >> >> ------------------------------------
> >> >>
> >> >> Once ERTM is working without AMP, the state machine will have to be
> >> >> extended to account for the extra demands of creating channels
> >> directly
> >> >> on
> >> >> an AMP controller and AMP channel moves.  L2CAP will have to deal
> >> with
> >> >> two
> >> >> controllers (BR/EDR and AMP) while the channel move is taking place,
> >> and
> >> >> correctly handle lockstep reconfiguration of the L2CAP channel when
> >> the
> >> >> move is completing.
> >> >>
> >> >> To enable AMP, L2CAP itself will need to be enhanced to support the
> >> A2MP
> >> >> fixed channel and to use the AMP Manager to create/disconnect
> >> physical
> >> >> and
> >> >> logical links on an AMP controller.  Additionally L2CAP will need to
> >> >> manage channels according to the new AMP control, moving them as
> >> >> appropriate and handling remote move requests.
> >> >>
> >> >> The AMP Manager function will need to be created. It will support
> >> >> signaling on the A2MP channel and the create/disconnect of AMP
> >> physical
> >> >> and logical links.
> >> >>
> >> >> HCI will need to be extended to support data-block-based flow
> >> control.
> >> >> AMP
> >> >> Controllers will be presented to BlueZ as HCI devices of a new type.
> >> >
> >> > The block-based flow control is a missing piece, but the AMP type
> >> > extension has been merged upstream. We can create HCI_BREDR and
> >> > HCI_80211 controllers now. The AMP controllers are for now forced to
> >> be
> >> > raw devices, but that can be changed easily once we have the
> >> controller
> >> > init for AMP up and ready.
> >>
> >> I saw that patch, thanks. Any thoughts on how HCI_80211 controllers are
> >> associated to the parent HCI_BREDR? Maybe they simply have the same BT
> >> Addr?
> >
> > I don't think that the AMP controller and BR/EDR controller can have the
> > same BD_ADDR. That would make no sense since they are actually two
> > different entities. Also we don't need to assign parent relationship
> > here at all. We have AMP discovery and every BR/EDR controller can
> > potentially use any AMP controller in the whole system. There is no
> > requirement to tie it to an BR/EDR controller. Just once an AMP
> > controller is in use we can mark it as busy. Other than that they are
> > two independent controllers.
> 
> Well, the BT Spec says that the HCI_Read_BD_ADDR command only applies to
> the BR/EDR, so I agree that an AMP controller can't even have a BD_ADDR.

that is fine. We just have to handle AMP controllers with BDADDR_ANY
then. And since you can't really bind a L2CAP socket to a specific AMP
anyway (you always bind to a BR/EDR controller), I don't see any
problems with this.

> If the association between BR/EDR and a local AMP is temporary, perhaps
> only for the duration of an AMP connection, I could see that local AMP
> controllers in general could be thought of as a generic resource.
> 
> However, I am thinking of the use case where the Linux box is being used
> for development, and there are two instances of BR/EDR plus AMP
> controller, and they are talking to each other. Maybe they are both real
> hardware of different manufacture, maybe part of the system is fake PAL,
> hci emu, etc. If a BR/EDR is simply allowed to find any available local
> AMP controller and grab it for temporary use, are there cases where the
> BR/EDR under test grabs the wrong intended local AMP? Further, considering
> that each AMP can be doing things with or without an infrastructure
> connection, the test case being set up may not play out correctly?
> 
> So this is why I am thinking of there being some sort of association to be
> set up between a given BR/EDR and 0 or more local AMPs, which would
> simulate what's happening an actual target device.

In real devices, you only get one BR/EDR controller and 0..n AMP
controllers. So that is not a problem at all.

With test or development systems, we can just use special debugfs files
to force the relationship. However I don't see a big problem either here
since the AMP manager protocol is capable of deciding between 802.11 and
fake PALs. So we might have an option on the L2CAP socket to select a
controller type like 802.11, UWB, fake etc., but everything else should
really not matter and multiple BR/EDR controllers could share one or
more AMP controllers.

I really wanna keep this flexible. So if you need more AMP, you just
attach a WiFi USB dongle. If its driver allows AMP support, then you
automatically another AMP and any BR/EDR controller could use it.

Trying to express and configure relationships just makes it more
complicated for no benefit. The simple use case with one BR/EDR
controller will always work.

Regards

Marcel


--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux