patch-2.4.0-test3 linux/net/atm/svc.c

Next file: linux/net/ax25/af_ax25.c
Previous file: linux/net/atm/signaling.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test2/linux/net/atm/svc.c linux/net/atm/svc.c
@@ -77,8 +77,7 @@
 	   as_indicate has been answered */
 	while ((skb = skb_dequeue(&vcc->listenq))) {
 		DPRINTK("LISTEN REL\n");
-		sigd_enq(NULL,as_reject,vcc,NULL,NULL); /* @@@ should include
-							       the reason */
+		sigd_enq2(NULL,as_reject,vcc,NULL,NULL,&vcc->qos,0);
 		dev_kfree_skb(skb);
 	}
 	clear_bit(ATM_VF_REGIS,&vcc->flags);
@@ -310,8 +309,8 @@
 		dev_kfree_skb(skb);
 		old_vcc->backlog_quota++;
 		if (error) {
-			sigd_enq(NULL,as_reject,old_vcc,NULL,NULL);
-				/* @@@ should include the reason */
+			sigd_enq2(NULL,as_reject,old_vcc,NULL,NULL,
+			    &old_vcc->qos,error);
 			return error == -EAGAIN ? -EBUSY : error;
 		}
 		/* wait should be short, so we ignore the non-blocking flag */
@@ -348,13 +347,9 @@
 int svc_change_qos(struct atm_vcc *vcc,struct atm_qos *qos)
 {
 	DECLARE_WAITQUEUE(wait,current);
-	struct atm_qos save_qos;
 
 	vcc->reply = WAITING;
-	save_qos = vcc->qos; /* @@@ really gross hack ... */
-	vcc->qos = *qos;
-	sigd_enq(vcc,as_modify,NULL,NULL,&vcc->local);
-	vcc->qos = save_qos;
+	sigd_enq2(vcc,as_modify,NULL,NULL,&vcc->local,qos,0);
 	add_wait_queue(&vcc->sleep,&wait);
 	while (vcc->reply == WAITING && !test_bit(ATM_VF_RELEASED,&vcc->flags)
 	    && sigd) {

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)