All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: Emeltchenko Andrei <Andrei.Emeltchenko.news@gmail.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [RFCv3 05/34] Bluetooth: Allocate skb depending on sk
Date: Thu, 19 Jan 2012 10:56:06 +0100	[thread overview]
Message-ID: <1326966966.1955.3.camel@aeonflux> (raw)
In-Reply-To: <1326964823-26747-6-git-send-email-Andrei.Emeltchenko.news@gmail.com>

Hi Andrei,

> Some channels might not have sk so we allocate skbuff directly.
> The idea is to use l2cap_chan_send for sending packets not through
> sockets.
> 
> Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> ---
>  net/bluetooth/l2cap_core.c |   34 +++++++++++++++++++++++++++-------
>  1 files changed, 27 insertions(+), 7 deletions(-)
> 
> diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
> index 598805b..bc42ee8 100644
> --- a/net/bluetooth/l2cap_core.c
> +++ b/net/bluetooth/l2cap_core.c
> @@ -1531,7 +1531,12 @@ static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan, struct msghdr
>  	while (len) {
>  		count = min_t(unsigned int, conn->mtu, len);
>  
> -		*frag = bt_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err);
> +		if (sk)
> +			*frag = bt_skb_send_alloc(sk, count,
> +					msg->msg_flags & MSG_DONTWAIT, &err);
> +		else
> +			*frag = bt_skb_alloc(count, GFP_KERNEL);
> +
>  		if (!*frag)
>  			return err;
>  		if (memcpy_fromiovec(skb_put(*frag, count), msg->msg_iov, count))
> @@ -1561,8 +1566,13 @@ static struct sk_buff *l2cap_create_connless_pdu(struct l2cap_chan *chan,
>  	BT_DBG("sk %p len %d priority %u", sk, (int)len, priority);
>  
>  	count = min_t(unsigned int, (conn->mtu - hlen), len);
> -	skb = bt_skb_send_alloc(sk, count + hlen,
> -			msg->msg_flags & MSG_DONTWAIT, &err);
> +
> +	if (sk)
> +		skb = bt_skb_send_alloc(sk, count + hlen,
> +					msg->msg_flags & MSG_DONTWAIT, &err);
> +	else
> +		skb = bt_skb_alloc(count, GFP_KERNEL);
> +
>  	if (!skb)
>  		return ERR_PTR(err);
>  
> @@ -1595,8 +1605,13 @@ static struct sk_buff *l2cap_create_basic_pdu(struct l2cap_chan *chan,
>  	BT_DBG("sk %p len %d", sk, (int)len);
>  
>  	count = min_t(unsigned int, (conn->mtu - hlen), len);
> -	skb = bt_skb_send_alloc(sk, count + hlen,
> -			msg->msg_flags & MSG_DONTWAIT, &err);
> +
> +	if (sk)
> +		skb = bt_skb_send_alloc(sk, count + hlen,
> +					msg->msg_flags & MSG_DONTWAIT, &err);
> +	else
> +		skb = bt_skb_alloc(count, GFP_KERNEL);
> +
>  	if (!skb)
>  		return ERR_PTR(err);
>  
> @@ -1642,8 +1657,13 @@ static struct sk_buff *l2cap_create_iframe_pdu(struct l2cap_chan *chan,
>  		hlen += L2CAP_FCS_SIZE;
>  
>  	count = min_t(unsigned int, (conn->mtu - hlen), len);
> -	skb = bt_skb_send_alloc(sk, count + hlen,
> -			msg->msg_flags & MSG_DONTWAIT, &err);
> +
> +	if (sk)
> +		skb = bt_skb_send_alloc(sk, count + hlen,
> +					msg->msg_flags & MSG_DONTWAIT, &err);
> +	else
> +		skb = bt_skb_alloc(count, GFP_KERNEL);
> +
>  	if (!skb)
>  		return ERR_PTR(err);
>  

so I am not sure that I wanna change all these functions this way. It
might be a good way of handling this, but I am right now convinced.

Care to explain first on how you are using them.

Regards

Marcel



  reply	other threads:[~2012-01-19  9:56 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-19  9:19 [RFCv3 00/34] RFC Bluetooth A2MP implementation Emeltchenko Andrei
2012-01-19  9:19 ` [RFCv3 01/34] Bluetooth: trivial: space correction Emeltchenko Andrei
2012-01-19  9:50   ` Marcel Holtmann
2012-01-23  8:58     ` Johan Hedberg
2012-01-19  9:19 ` [RFCv3 02/34] Bluetooth: trivial: clean up of l2cap_chan_connect Emeltchenko Andrei
2012-01-19  9:51   ` Marcel Holtmann
2012-01-19  9:19 ` [RFCv3 03/34] Bluetooth: Make ertm_init available Emeltchenko Andrei
2012-01-19  9:19 ` [RFCv3 04/34] Bluetooth: Make l2cap_ertm_data_rcv available Emeltchenko Andrei
2012-01-19  9:19 ` [RFCv3 05/34] Bluetooth: Allocate skb depending on sk Emeltchenko Andrei
2012-01-19  9:56   ` Marcel Holtmann [this message]
2012-01-19 13:18     ` Emeltchenko Andrei
2012-01-19  9:19 ` [RFCv3 06/34] Bluetooth: Check sk before assigning sk_err Emeltchenko Andrei
2012-01-19  9:19 ` [RFCv3 07/34] Bluetooth: Add send function to chan ops Emeltchenko Andrei
2012-01-19  9:19 ` [RFCv3 08/34] Bluetooth: Make l2cap_chan_add available Emeltchenko Andrei
2012-01-19  9:19 ` [RFCv3 09/34] Bluetooth: A2MP: Create A2MP channel Emeltchenko Andrei
2012-01-19  9:19 ` [RFCv3 10/34] Bluetooth: A2MP: AMP Manager basic functions Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 11/34] Bluetooth: A2MP: Add channel close callback Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 12/34] Bluetooth: Add state_change for A2MP channel Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 13/34] Bluetooth: A2MP: Build and Send msg helpers Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 14/34] Bluetooth: A2MP: Definitions for A2MP commands Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 15/34] Bluetooth: A2MP: Define A2MP status codes Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 16/34] Bluetooth: A2MP: Process A2MP messages Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 17/34] Bluetooth: A2MP: Process A2MP Command Reject Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 18/34] Bluetooth: A2MP: Helper functions to count HCI devs Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 19/34] Bluetooth: A2MP: Process A2MP Discover Request Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 20/34] Bluetooth: A2MP: Process A2MP Change Notify Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 21/34] Bluetooth: A2MP: Process A2MP Get Info Request Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 22/34] Bluetooth: A2MP: Process A2MP Get AMP Assoc Request Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 23/34] Bluetooth: A2MP: Process A2MP Create Physlink Request Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 24/34] Bluetooth: A2MP: Process A2MP Disc " Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 25/34] Bluetooth: A2MP: Process A2MP Command Responses Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 26/34] Bluetooth: Clean up l2cap_chan_add Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 27/34] Bluetooth: A2MP: Handling fixed channels Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 28/34] Bluetooth: A2MP: Manage incoming connections Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 29/34] Bluetooth: physical link HCI interface to AMP Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 30/34] Bluetooth: Define AMP controller statuses Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 31/34] Bluetooth: General HCI callback implementation Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 32/34] Bluetooth: Process HCI callbacks in a workqueue Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 33/34] Bluetooth: AMP: Use HCI callback for Read AMP Info Emeltchenko Andrei
2012-01-19  9:20 ` [RFCv3 34/34] Bluetooth: AMP: Read Local Assoc support Emeltchenko Andrei

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1326966966.1955.3.camel@aeonflux \
    --to=marcel@holtmann.org \
    --cc=Andrei.Emeltchenko.news@gmail.com \
    --cc=linux-bluetooth@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.