Bluetooth: Fix incorrect setting of remote_tx_win for L2CAP ERTM
remote_tx_win is intended to be set on receipt of an L2CAP configuration request. The value is used to determine the size of the transmit window on the remote side of an ERTM connection, so L2CAP can stop sending frames when that remote window is full. An incorrect remote_tx_win value will cause the stack to not fully utilize the tx window (performance impact), or to overfill the remote tx window (causing dropped frames or a disconnect). This patch removes an extra setting of remote_tx_win when a configuration response is received. The transmit window has a different meaning in a response - it is an informational value less than or equal to the local tx_win. Signed-off-by: Mat Martineau <mathewm@codeaurora.org> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
fa235562fb
commit
cff70fae11
|
@ -2807,7 +2807,6 @@ static int l2cap_parse_conf_rsp(struct sock *sk, void *rsp, int len, void *data,
|
||||||
if (*result == L2CAP_CONF_SUCCESS) {
|
if (*result == L2CAP_CONF_SUCCESS) {
|
||||||
switch (rfc.mode) {
|
switch (rfc.mode) {
|
||||||
case L2CAP_MODE_ERTM:
|
case L2CAP_MODE_ERTM:
|
||||||
pi->remote_tx_win = rfc.txwin_size;
|
|
||||||
pi->retrans_timeout = le16_to_cpu(rfc.retrans_timeout);
|
pi->retrans_timeout = le16_to_cpu(rfc.retrans_timeout);
|
||||||
pi->monitor_timeout = le16_to_cpu(rfc.monitor_timeout);
|
pi->monitor_timeout = le16_to_cpu(rfc.monitor_timeout);
|
||||||
pi->mps = le16_to_cpu(rfc.max_pdu_size);
|
pi->mps = le16_to_cpu(rfc.max_pdu_size);
|
||||||
|
@ -2863,7 +2862,6 @@ static void l2cap_conf_rfc_get(struct sock *sk, void *rsp, int len)
|
||||||
done:
|
done:
|
||||||
switch (rfc.mode) {
|
switch (rfc.mode) {
|
||||||
case L2CAP_MODE_ERTM:
|
case L2CAP_MODE_ERTM:
|
||||||
pi->remote_tx_win = rfc.txwin_size;
|
|
||||||
pi->retrans_timeout = le16_to_cpu(rfc.retrans_timeout);
|
pi->retrans_timeout = le16_to_cpu(rfc.retrans_timeout);
|
||||||
pi->monitor_timeout = le16_to_cpu(rfc.monitor_timeout);
|
pi->monitor_timeout = le16_to_cpu(rfc.monitor_timeout);
|
||||||
pi->mps = le16_to_cpu(rfc.max_pdu_size);
|
pi->mps = le16_to_cpu(rfc.max_pdu_size);
|
||||||
|
|
Loading…
Reference in New Issue