This is a note to let you know that I've just added the patch titled char: n_gsm: remove message filtering for contipated DLCI to the 3.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: char-n_gsm-remove-message-filtering-for-contipated-dlci.patch and it can be found in the queue-3.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From ba3fd3d6cf4a97bcb934614295aa2ee4d2cd6ac9 Mon Sep 17 00:00:00 2001 From: "samix.lebsir" <samix.lebsir@xxxxxxxxx> Date: Mon, 13 Aug 2012 13:44:22 +0100 Subject: char: n_gsm: remove message filtering for contipated DLCI From: "samix.lebsir" <samix.lebsir@xxxxxxxxx> commit 10c6c383e43565c9c6ec07ff8eb2825f8091bdf0 upstream. The design of uplink flow control in the mux driver is that for constipated channels data will backup into the per-channel fifos, and any messages that make it to the outbound message queue will still go out. Code was added to also stop messages that were in the outbound queue but this requires filtering through all the messages on the queue for stopped dlcis and changes some of the mux logic unneccessarily. The message fiiltering was removed to be in line w/ the original design as the message filtering does not provide any solution. Extra debug messages used during investigation were also removed. Signed-off-by: samix.lebsir <samix.lebsir@xxxxxxxxx> Signed-off-by: Alan Cox <alan@xxxxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx> Cc: Rui Xiang <rui.xiang@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/tty/n_gsm.c | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) --- a/drivers/tty/n_gsm.c +++ b/drivers/tty/n_gsm.c @@ -691,10 +691,6 @@ static void gsm_data_kick(struct gsm_mux msg = msg->next; continue; } - if (gsm->dlci[msg->addr]->constipated) { - msg = msg->next; - continue; - } if (gsm->encoding != 0) { gsm->txframe[0] = GSM1_SOF; len = gsm_stuff_frame(msg->data, @@ -748,8 +744,6 @@ static void __gsm_data_queue(struct gsm_ u8 *dp = msg->data; u8 *fcs = dp + msg->len; - WARN_ONCE(dlci->constipated, "%s: queueing from a constipated DLCI", - __func__); /* Fill in the header */ if (gsm->encoding == 0) { if (msg->len < 128) @@ -959,9 +953,6 @@ static void gsm_dlci_data_sweep(struct g break; dlci = gsm->dlci[i]; if (dlci == NULL || dlci->constipated) { - if (dlci && (debug & 0x20)) - pr_info("%s: DLCI %d is constipated", - __func__, i); i++; continue; } @@ -991,12 +982,8 @@ static void gsm_dlci_data_kick(struct gs unsigned long flags; int sweep; - if (dlci->constipated) { - if (debug & 0x20) - pr_info("%s: DLCI %d is constipated", - __func__, dlci->addr); + if (dlci->constipated) return; - } spin_lock_irqsave(&dlci->gsm->tx_lock, flags); /* If we have nothing running then we need to fire up */ @@ -1072,15 +1059,9 @@ static void gsm_process_modem(struct tty /* Flow control/ready to communicate */ fc = (modem & MDM_FC) || !(modem & MDM_RTR); if (fc && !dlci->constipated) { - if (debug & 0x20) - pr_info("%s: DLCI %d START constipated (tx_bytes=%d)", - __func__, dlci->addr, dlci->gsm->tx_bytes); /* Need to throttle our output on this device */ dlci->constipated = 1; } else if (!fc && dlci->constipated) { - if (debug & 0x20) - pr_info("%s: DLCI %d END constipated (tx_bytes=%d)", - __func__, dlci->addr, dlci->gsm->tx_bytes); dlci->constipated = 0; gsm_dlci_data_kick(dlci); } @@ -1257,8 +1238,6 @@ static void gsm_control_message(struct g break; case CMD_FCON: /* Modem can accept data again */ - if (debug & 0x20) - pr_info("%s: GSM END constipation", __func__); gsm->constipated = 0; gsm_control_reply(gsm, CMD_FCON, NULL, 0); /* Kick the link in case it is idling */ @@ -1268,8 +1247,6 @@ static void gsm_control_message(struct g break; case CMD_FCOFF: /* Modem wants us to STFU */ - if (debug & 0x20) - pr_info("%s: GSM START constipation", __func__); gsm->constipated = 1; gsm_control_reply(gsm, CMD_FCOFF, NULL, 0); break; Patches currently in stable-queue which might be from samix.lebsir@xxxxxxxxx are queue-3.4/char-n_gsm-remove-message-filtering-for-contipated-dlci.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html