diff options
Diffstat (limited to 'net/bluetooth/l2cap_core.c')
| -rw-r--r-- | net/bluetooth/l2cap_core.c | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index a5bde5db58ef..40daa38276f3 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -3415,7 +3415,7 @@ static int l2cap_parse_conf_req(struct l2cap_chan *chan, void *data, size_t data  	struct l2cap_conf_rfc rfc = { .mode = L2CAP_MODE_BASIC };  	struct l2cap_conf_efs efs;  	u8 remote_efs = 0; -	u16 mtu = L2CAP_DEFAULT_MTU; +	u16 mtu = 0;  	u16 result = L2CAP_CONF_SUCCESS;  	u16 size; @@ -3520,6 +3520,13 @@ done:  		/* Configure output options and let the other side know  		 * which ones we don't like. */ +		/* If MTU is not provided in configure request, use the most recently +		 * explicitly or implicitly accepted value for the other direction, +		 * or the default value. +		 */ +		if (mtu == 0) +			mtu = chan->imtu ? chan->imtu : L2CAP_DEFAULT_MTU; +  		if (mtu < L2CAP_DEFAULT_MIN_MTU)  			result = L2CAP_CONF_UNACCEPT;  		else {  | 
