From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gwenn =?ISO-8859-1?Q?Bourr=E9e?= Subject: [PATCH]: Mux n_gsm: Add a DLCI hangup state and callback Date: Mon, 29 Jun 2015 17:53:56 +0200 Message-ID: <1435593236.25711.3.camel@tldlab125> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Sender: linux-api-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org, jslaby-AlSwsSmVLrQ@public.gmane.org Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-api@vger.kernel.org CkRlYXIga2VybmVsIHR0eSBtYWludGFpbmVycywKIApQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dp bmcgcGF0Y2g6CgpGcm9tIDZlMDA2YmQ1MjIxMjRkMGU4YTJmNjA3NTA5OWEyMWY3MDUxYTQyNmYg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEd3ZW5uIEJvdXJyZWUgPGd3ZW5uLmJvdXJy ZWVAaW50ZWwuY29tPgpEYXRlOiBNb24sIDI5IEp1biAyMDE1IDE3OjI2OjAxICswMjAwClN1Ympl Y3Q6IFtQQVRDSF0gTXV4IG5fZ3NtOiBBZGQgYSBETENJIGhhbmd1cCBzdGF0ZSBhbmQgY2FsbGJh Y2sKClVzZSBvZiBhc3luY2hyb25vdXMgaGFuZ3VwIGluc3RlYWQgb2Ygdmhhbmd1cC4KClNpZ25l ZC1vZmYtYnk6IEd3ZW5uIEJvdXJyZWUgPGd3ZW5uLmJvdXJyZWVAaW50ZWwuY29tPgpTaWduZWQt b2ZmLWJ5OiBHd2VubiBCb3VycmVlIDxnd2Vubi5ib3VycmVlQGludGVsLmNvbT4KU2lnbmVkLW9m Zi1ieTogTXVzdGFwaGEgQmVuIFpvdWJlaXIgPG11c3RhcGhheC5iZW4uem91YmVpckBpbnRlbC5j b20+ClNpZ25lZC1vZmYtYnk6IE5pY29sYXMgTE9VSVMgPG5pY29sYXN4LmxvdWlzQGludGVsLmNv bT4KUmV2aWV3ZWQtYnk6IFJhdmluZHJhbiwgQXJ1biA8YXJ1bi5yYXZpbmRyYW5AaW50ZWwuY29t CgotLS0KIGRyaXZlcnMvdHR5L25fZ3NtLmMgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysr LS0KIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdHR5L25fZ3NtLmMgYi9kcml2ZXJzL3R0eS9uX2dzbS5jCmluZGV4 IGQ2ZTBlYTAuLjc2MmY1NTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L25fZ3NtLmMKKysrIGIv ZHJpdmVycy90dHkvbl9nc20uYwpAQCAtMTM1LDYgKzEzNSw3IEBAIHN0cnVjdCBnc21fZGxjaSB7 CiAjZGVmaW5lIERMQ0lfT1BFTklORwkJMQkvKiBTZW5kaW5nIFNBQk0gbm90IHNlZW4gVUEgKi8K ICNkZWZpbmUgRExDSV9PUEVOCQkyCS8qIFNBQk0vVUEgY29tcGxldGUgKi8KICNkZWZpbmUgRExD SV9DTE9TSU5HCQkzCS8qIFNlbmRpbmcgRElTQyBub3Qgc2VlbiBVQS9ETSAqLworI2RlZmluZSBE TENJX0hBTkdVUAkJNAkvKkhBTkdVUCByZWNlaXZlZCAgKi8KIAlzdHJ1Y3QgbXV0ZXggbXV0ZXg7 CiAKIAkvKiBMaW5rIGxheWVyICovCkBAIC0xNTMwLDcgKzE1MzEsOCBAQCBzdGF0aWMgdm9pZCBn c21fZGxjaV9iZWdpbl9vcGVuKHN0cnVjdCBnc21fZGxjaQoqZGxjaSkKIHN0YXRpYyB2b2lkIGdz bV9kbGNpX2JlZ2luX2Nsb3NlKHN0cnVjdCBnc21fZGxjaSAqZGxjaSkKIHsKIAlzdHJ1Y3QgZ3Nt X211eCAqZ3NtID0gZGxjaS0+Z3NtOwotCWlmIChkbGNpLT5zdGF0ZSA9PSBETENJX0NMT1NFRCB8 fCBkbGNpLT5zdGF0ZSA9PSBETENJX0NMT1NJTkcpCisJaWYgKGRsY2ktPnN0YXRlID09IERMQ0lf Q0xPU0VEIHx8IGRsY2ktPnN0YXRlID09IERMQ0lfQ0xPU0lORyB8fAorCQlkbGNpLT5zdGF0ZSA9 PSBETENJX0hBTkdVUCkKIAkJcmV0dXJuOwogCWRsY2ktPnJldHJpZXMgPSBnc20tPm4yOwogCWRs Y2ktPnN0YXRlID0gRExDSV9DTE9TSU5HOwpAQCAtMTcxNyw3ICsxNzE5LDcgQEAgc3RhdGljIHZv aWQgZ3NtX2RsY2lfcmVsZWFzZShzdHJ1Y3QgZ3NtX2RsY2kKKmRsY2kpCiAJCWdzbV9kZXN0cm95 X25ldHdvcmsoZGxjaSk7CiAJCW11dGV4X3VubG9jaygmZGxjaS0+bXV0ZXgpOwogCi0JCXR0eV92 aGFuZ3VwKHR0eSk7CisJCXR0eV9oYW5ndXAodHR5KTsKIAogCQl0dHlfcG9ydF90dHlfc2V0KCZk bGNpLT5wb3J0LCBOVUxMKTsKIAkJdHR5X2tyZWZfcHV0KHR0eSk7CkBAIC0yMzM5LDYgKzIzNDEs MjYgQEAgc3RhdGljIHZvaWQgZ3NtbGRfZmx1c2hfYnVmZmVyKHN0cnVjdCB0dHlfc3RydWN0Cip0 dHkpCiB9CiAKIC8qKgorICoJZ3NtbGRfaGFuZ3VwCQktCWhhbmd1cCB0aGUgbGRpc2MgZm9yIHRo aXMgdHR5CisgKglAdHR5OiBkZXZpY2UKKyAqLworCitzdGF0aWMgaW50IGdzbWxkX2hhbmd1cChz dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KQoreworCXN0cnVjdCBnc21fbXV4ICpnc20gPSB0dHktPmRp c2NfZGF0YTsKKwlpbnQgaTsKKwlzdHJ1Y3QgZ3NtX2RsY2kgKmRsY2k7CisKKwlmb3IgKGkgPSBO VU1fRExDSS0xOyBpID49IDA7IGktLSkgeworCQlkbGNpID0gZ3NtLT5kbGNpW2ldOworCQlpZiAo ZGxjaSkKKwkJCWRsY2ktPnN0YXRlID0gRExDSV9IQU5HVVA7CisJfQorCisJcmV0dXJuIDA7Cit9 CisKKy8qKgogICoJZ3NtbGRfY2xvc2UJCS0JY2xvc2UgdGhlIGxkaXNjIGZvciB0aGlzIHR0eQog ICoJQHR0eTogZGV2aWNlCiAgKgpAQCAtMjgzNiw2ICsyODU4LDcgQEAgc3RhdGljIHN0cnVjdCB0 dHlfbGRpc2Nfb3BzIHR0eV9sZGlzY19wYWNrZXQgPSB7CiAJLm5hbWUgICAgICAgICAgICA9ICJu X2dzbSIsCiAJLm9wZW4gICAgICAgICAgICA9IGdzbWxkX29wZW4sCiAJLmNsb3NlICAgICAgICAg ICA9IGdzbWxkX2Nsb3NlLAorCS5oYW5ndXAgICAgICAgICAgPSBnc21sZF9oYW5ndXAsCiAJLmZs dXNoX2J1ZmZlciAgICA9IGdzbWxkX2ZsdXNoX2J1ZmZlciwKIAkuY2hhcnNfaW5fYnVmZmVyID0g Z3NtbGRfY2hhcnNfaW5fYnVmZmVyLAogCS5yZWFkICAgICAgICAgICAgPSBnc21sZF9yZWFkLAoK Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpJbnRlbCBDb3Jwb3JhdGlvbiBTQVMgKEZyZW5jaCBzaW1wbGlmaWVkIGpv aW50IHN0b2NrIGNvbXBhbnkpClJlZ2lzdGVyZWQgaGVhZHF1YXJ0ZXJzOiAiTGVzIE1vbnRhbGV0 cyItIDIsIHJ1ZSBkZSBQYXJpcywgCjkyMTk2IE1ldWRvbiBDZWRleCwgRnJhbmNlClJlZ2lzdHJh dGlvbiBOdW1iZXI6ICAzMDIgNDU2IDE5OSBSLkMuUy4gTkFOVEVSUkUKQ2FwaXRhbDogNCw1NzIs MDAwIEV1cm9zCgpUaGlzIGUtbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIG1heSBjb250YWluIGNv bmZpZGVudGlhbCBtYXRlcmlhbCBmb3IKdGhlIHNvbGUgdXNlIG9mIHRoZSBpbnRlbmRlZCByZWNp cGllbnQocykuIEFueSByZXZpZXcgb3IgZGlzdHJpYnV0aW9uCmJ5IG90aGVycyBpcyBzdHJpY3Rs eSBwcm9oaWJpdGVkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQKcmVjaXBpZW50LCBwbGVh c2UgY29udGFjdCB0aGUgc2VuZGVyIGFuZCBkZWxldGUgYWxsIGNvcGllcy4K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753269AbbF2P4w (ORCPT ); Mon, 29 Jun 2015 11:56:52 -0400 Received: from mga14.intel.com ([192.55.52.115]:38749 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752755AbbF2P4o (ORCPT ); Mon, 29 Jun 2015 11:56:44 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,699,1427785200"; d="scan'208";a="736979914" Message-ID: <1435593236.25711.3.camel@tldlab125> Subject: [PATCH]: Mux n_gsm: Add a DLCI hangup state and callback From: Gwenn =?ISO-8859-1?Q?Bourr=E9e?= To: gregkh@linuxfoundation.org, jslaby@suse.cz Cc: linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Date: Mon, 29 Jun 2015 17:53:56 +0200 X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id t5TFuwjU006719 Dear kernel tty maintainers, Please review the following patch: >>From 6e006bd522124d0e8a2f6075099a21f7051a426f Mon Sep 17 00:00:00 2001 From: Gwenn Bourree Date: Mon, 29 Jun 2015 17:26:01 +0200 Subject: [PATCH] Mux n_gsm: Add a DLCI hangup state and callback Use of asynchronous hangup instead of vhangup. Signed-off-by: Gwenn Bourree Signed-off-by: Gwenn Bourree Signed-off-by: Mustapha Ben Zoubeir Signed-off-by: Nicolas LOUIS Reviewed-by: Ravindran, Arun gsm; - if (dlci->state == DLCI_CLOSED || dlci->state == DLCI_CLOSING) + if (dlci->state == DLCI_CLOSED || dlci->state == DLCI_CLOSING || + dlci->state == DLCI_HANGUP) return; dlci->retries = gsm->n2; dlci->state = DLCI_CLOSING; @@ -1717,7 +1719,7 @@ static void gsm_dlci_release(struct gsm_dlci *dlci) gsm_destroy_network(dlci); mutex_unlock(&dlci->mutex); - tty_vhangup(tty); + tty_hangup(tty); tty_port_tty_set(&dlci->port, NULL); tty_kref_put(tty); @@ -2339,6 +2341,26 @@ static void gsmld_flush_buffer(struct tty_struct *tty) } /** + * gsmld_hangup - hangup the ldisc for this tty + * @tty: device + */ + +static int gsmld_hangup(struct tty_struct *tty) +{ + struct gsm_mux *gsm = tty->disc_data; + int i; + struct gsm_dlci *dlci; + + for (i = NUM_DLCI-1; i >= 0; i--) { + dlci = gsm->dlci[i]; + if (dlci) + dlci->state = DLCI_HANGUP; + } + + return 0; +} + +/** * gsmld_close - close the ldisc for this tty * @tty: device * @@ -2836,6 +2858,7 @@ static struct tty_ldisc_ops tty_ldisc_packet = { .name = "n_gsm", .open = gsmld_open, .close = gsmld_close, + .hangup = gsmld_hangup, .flush_buffer = gsmld_flush_buffer, .chars_in_buffer = gsmld_chars_in_buffer, .read = gsmld_read, --------------------------------------------------------------------- Intel Corporation SAS (French simplified joint stock company) Registered headquarters: "Les Montalets"- 2, rue de Paris, 92196 Meudon Cedex, France Registration Number: 302 456 199 R.C.S. NANTERRE Capital: 4,572,000 Euros This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I