mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 17:44:14 +08:00
tty: n_gsm: fix flow control handling in tx path
The current implementation constipates all transmission paths during flow
control except for flow control frames. However, these may not be located
at the beginning of the transmission queue of the control channel.
Ensure that flow control frames in the transmission queue for the control
channel are always handled even if constipated by skipping through other
messages.
Fixes: 0af021678d
("tty: n_gsm: fix deadlock and link starvation in outgoing data path")
Signed-off-by: Daniel Starke <daniel.starke@siemens.com>
Link: https://lore.kernel.org/r/20220707113223.3685-3-daniel.starke@siemens.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
18a948c7d9
commit
59ff0680ec
@ -891,7 +891,7 @@ static int gsm_data_kick(struct gsm_mux *gsm)
|
||||
/* Serialize control messages and control channel messages first */
|
||||
list_for_each_entry_safe(msg, nmsg, &gsm->tx_ctrl_list, list) {
|
||||
if (gsm->constipated && !gsm_is_flow_ctrl_msg(msg))
|
||||
return -EAGAIN;
|
||||
continue;
|
||||
ret = gsm_send_packet(gsm, msg);
|
||||
switch (ret) {
|
||||
case -ENOSPC:
|
||||
|
Loading…
Reference in New Issue
Block a user