Bluetooth: Fix regression with L2CAP configuration in Basic Mode
Basic Mode is the default mode of operation of a L2CAP entity. In this case the RFC (Retransmission and Flow Control) configuration option should not be used at all. Normally remote L2CAP implementation should just ignore this option, but it can cause various side effects with other Bluetooth stacks that are not capable of handling unknown options. Signed-off-by: Gustavo F. Padovan <gustavo@las.ic.unicamp.br> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
Родитель
a0e55a32af
Коммит
68ae6639b6
|
@ -2394,6 +2394,10 @@ done:
|
||||||
rfc.monitor_timeout = L2CAP_DEFAULT_MONITOR_TO;
|
rfc.monitor_timeout = L2CAP_DEFAULT_MONITOR_TO;
|
||||||
|
|
||||||
pi->conf_state |= L2CAP_CONF_MODE_DONE;
|
pi->conf_state |= L2CAP_CONF_MODE_DONE;
|
||||||
|
|
||||||
|
l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC,
|
||||||
|
sizeof(rfc), (unsigned long) &rfc);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2CAP_MODE_STREAMING:
|
case L2CAP_MODE_STREAMING:
|
||||||
|
@ -2401,6 +2405,10 @@ done:
|
||||||
pi->max_pdu_size = rfc.max_pdu_size;
|
pi->max_pdu_size = rfc.max_pdu_size;
|
||||||
|
|
||||||
pi->conf_state |= L2CAP_CONF_MODE_DONE;
|
pi->conf_state |= L2CAP_CONF_MODE_DONE;
|
||||||
|
|
||||||
|
l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC,
|
||||||
|
sizeof(rfc), (unsigned long) &rfc);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -2410,9 +2418,6 @@ done:
|
||||||
rfc.mode = pi->mode;
|
rfc.mode = pi->mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC,
|
|
||||||
sizeof(rfc), (unsigned long) &rfc);
|
|
||||||
|
|
||||||
if (result == L2CAP_CONF_SUCCESS)
|
if (result == L2CAP_CONF_SUCCESS)
|
||||||
pi->conf_state |= L2CAP_CONF_OUTPUT_DONE;
|
pi->conf_state |= L2CAP_CONF_OUTPUT_DONE;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче