From: Tilman Schmidt <[EMAIL PROTECTED]>

The following patch to the common part of the Siemens Gigaset driver
prevents it from trying to send the +++ break sequence if the device
has been disconnected, and removes a couple of assignments which
didn't have any effect.

Signed-off-by: Tilman Schmidt <[EMAIL PROTECTED]>
Acked-by: Hansjoerg Lipp <[EMAIL PROTECTED]>
---

 ev-layer.c |   13 ++++---------
 1 files changed, 4 insertions(+), 9 deletions(-)

diff -rup linux-2.6.17-rc6-retrystall/drivers/isdn/gigaset/ev-layer.c 
linux-2.6.17-rc6-evclnup/drivers/isdn/gigaset/ev-layer.c
--- linux-2.6.17-rc6-submitted/drivers/isdn/gigaset/ev-layer.c  2006-06-08 
01:03:36.000000000 +0200
+++ linux-2.6.17-rc6-evclnup/drivers/isdn/gigaset/ev-layer.c    2006-06-08 
18:18:44.000000000 +0200
@@ -1262,7 +1262,8 @@ static void do_action(int action, struct
                break;
        case ACT_HUPMODEM:
                /* send "+++" (hangup in unimodem mode) */
-               cs->ops->write_cmd(cs, "+++", 3, NULL);
+               if (cs->connected)
+                       cs->ops->write_cmd(cs, "+++", 3, NULL);
                break;
        case ACT_RING:
                /* get fresh AT state structure for new CID */
@@ -1294,7 +1295,6 @@ static void do_action(int action, struct
                break;
        case ACT_ICALL:
                handle_icall(cs, bcs, p_at_state);
-               at_state = *p_at_state;
                break;
        case ACT_FAILSDOWN:
                dev_warn(cs->dev, "Could not shut down the device.\n");
@@ -1334,10 +1334,8 @@ static void do_action(int action, struct
                         */
                        at_state->pending_commands |= PC_DLE0;
                        atomic_set(&cs->commands_pending, 1);
-               } else {
+               } else
                        disconnect(p_at_state);
-                       at_state = *p_at_state;
-               }
                break;
        case ACT_FAKEDLE0:
                at_state->int_var[VAR_ZDLE] = 0;
@@ -1354,10 +1352,8 @@ static void do_action(int action, struct
                at_state->cid = -1;
                if (bcs && cs->onechannel)
                        at_state->pending_commands |= PC_DLE0;
-               else {
+               else
                        disconnect(p_at_state);
-                       at_state = *p_at_state;
-               }
                schedule_init(cs, MS_RECOVER);
                break;
        case ACT_FAILDLE0:
@@ -1410,7 +1406,6 @@ static void do_action(int action, struct
 
        case ACT_ABORTACCEPT:   /* hangup/error/timeout during ICALL processing 
*/
                disconnect(p_at_state);
-               at_state = *p_at_state;
                break;
 
        case ACT_ABORTDIAL:     /* error/timeout during dial preparation */


_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to