Re: [PATCH -v2 12/12] Bluetooth: Used void * as parameter in alloc_skb()
From: Marcel Holtmann <marcel@holtmann.org>
Date: 2012-05-27 05:11:34
Hi Gustavo,
quoted
On Fri, May 25, 2012 at 09:31:04AM -0300, Gustavo Padovan wrote:quoted
From: Gustavo Padovan <redacted> This keep l2cap chan ops functions parameters in sync. Signed-off-by: Gustavo Padovan <redacted>...quoted
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h index 25a85ab..0f8886b 100644 --- a/include/net/bluetooth/l2cap.h +++ b/include/net/bluetooth/l2cap.h@@ -532,8 +532,8 @@ struct l2cap_ops { void (*close) (void *data); void (*teardown) (void *data, int err); void (*state_change) (void *data, int state); - struct sk_buff *(*alloc_skb) (struct l2cap_chan *chan, - unsigned long len, int nb); + struct sk_buff *(*alloc_skb) (void *data, unsigned long len, + int nb);...quoted
@@ -1893,7 +1893,7 @@ static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan, count = min_t(unsigned int, conn->mtu, len); - tmp = chan->ops->alloc_skb(chan, count, + tmp = chan->ops->alloc_skb(chan->data, count,Why do we need to pass chan->data instead of chan?We are changing this to make this call have the same parameter as the other ops calls, i.e., a void *, so we just pass chan->data here which is the user data (struct sock *sk in the l2cap_sock.c case).
so what is the problem to just pass l2cap_chan in here for all calls and then have the it do chan->data inside the callback. This void *data thing is dead ugly. Regards Marcel