Hi Andrei, * Andrei Emeltchenko <Andrei.Emeltchenko.news@xxxxxxxxx> [2012-03-15 14:30:02 +0200]: > From: Andrei Emeltchenko <andrei.emeltchenko@xxxxxxxxx> > > Helper function to build and send A2MP messages. > > Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@xxxxxxxxx> > --- > include/net/bluetooth/a2mp.h | 7 ++++++ > net/bluetooth/a2mp.c | 49 ++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 56 insertions(+), 0 deletions(-) > > diff --git a/include/net/bluetooth/a2mp.h b/include/net/bluetooth/a2mp.h > index 0fe8ddd..995f1c0 100644 > --- a/include/net/bluetooth/a2mp.h > +++ b/include/net/bluetooth/a2mp.h > @@ -24,6 +24,13 @@ struct amp_mgr { > unsigned long flags; > }; > > +struct a2mp_cmd { > + __u8 code; > + __u8 ident; > + __le16 len; > + __u8 data[0]; > +} __packed; > + > void amp_mgr_get(struct amp_mgr *mgr); > int amp_mgr_put(struct amp_mgr *mgr); > > diff --git a/net/bluetooth/a2mp.c b/net/bluetooth/a2mp.c > index 63970b5..19a8ac3 100644 > --- a/net/bluetooth/a2mp.c > +++ b/net/bluetooth/a2mp.c > @@ -16,6 +16,54 @@ > #include <net/bluetooth/l2cap.h> > #include <net/bluetooth/a2mp.h> > > +/* A2MP build & send command helper functions */ > +static struct a2mp_cmd *__a2mp_build(u8 code, u8 ident, u16 len, void *data) > +{ > + struct a2mp_cmd *cmd; > + int plen; > + > + plen = sizeof(*cmd) + len; > + cmd = kzalloc(plen, GFP_KERNEL); > + if (!cmd) > + return NULL; > + > + cmd->code = code; > + cmd->ident = ident; > + cmd->len = cpu_to_le16(len); > + > + memcpy(cmd->data, data, len); > + > + return cmd; > +} > + > +static inline int __a2mp_send(struct amp_mgr *mgr, u8 *data, int len) > +{ > + struct l2cap_chan *chan = mgr->a2mp_chan; > + struct kvec iv = { data, len }; > + struct msghdr msg; > + > + memset(&msg, 0, sizeof(msg)); > + > + msg.msg_iov = (struct iovec *) &iv; > + msg.msg_iovlen = 1; > + > + return chan->ops->send(chan, &msg, len, 0); Why do you need this? Just call l2cap_chan_send() directly here. Gustavo -- 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