Skip to contentSkip to conversation

ISDN patches for net-next

PATCH In review Tilman Schmidt 2 participants 6 messages Oct 3, 2014 – Oct 6, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

cover ISDN patches for net-next

Here's a series of patches for the ISDN CAPI subsystem and the Gigaset ISDN driver. Please merge via net-next.

Tilman Schmidt (4):
isdn/gigaset: improve error handling when leaving DLE mode isdn/gigaset: drop unused cardstate structure member isdn/gigaset: use USB API function usb_endpoint_num() isdn/capi: drop two dead if branches

 drivers/isdn/capi/capiutil.c       |    3 ---
 drivers/isdn/gigaset/ev-layer.c    |    3 ++-
 drivers/isdn/gigaset/usb-gigaset.c |   14 +++++---------
 3 files changed, 7 insertions(+), 13 deletions(-)
#4 lore raw

PATCH 4/4 isdn/capi: drop two dead if branches

The last branch in command_2_index() cannot be reached since c==0xff is already caught by the first "if".
The empty second branch makes no difference since no other branch will be taken for c<0x0f.

---
 drivers/isdn/capi/capiutil.c | 3 ---
 1 file changed, 3 deletions(-)
drivers/isdn/capi/capiutil.c +0 -3
index 6e797e5..4073d16 100644
@@ -205,11 +205,8 @@ static unsigned command_2_index(unsigned c, unsigned sc)
 {
 	if (c & 0x80)
 		c = 0x9 + (c & 0x0f);
-	else if (c <= 0x0f);
 	else if (c == 0x41)
 		c = 0x9 + 0x1;
-	else if (c == 0xff)
-		c = 0x00;
 	return (sc & 3) * (0x9 + 0x9) + c;
 }
 
Signature · 1 line
1.9.2.459.g68773ac
#1 lore raw

PATCH 1/4 isdn/gigaset: improve error handling when leaving DLE mode

In reply to Tilman Schmidt

Avoid cascading warnings when leaving DLE mode fails by clearing the DLE flag before entering recovery.

---
 drivers/isdn/gigaset/ev-layer.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/isdn/gigaset/ev-layer.c +2 -1
index 7459b12..dcae14a 100644
@@ -1243,7 +1243,8 @@ static void do_action(int action, struct cardstate *cs,
 		break;
 	case ACT_FAILDLE0:
 		cs->cur_at_seq = SEQ_NONE;
-		dev_warn(cs->dev, "Could not leave DLE mode.\n");
+		dev_warn(cs->dev, "Error leaving DLE mode.\n");
+		cs->dle = 0;
 		at_state2 = &cs->bcs[cs->curchannel].at_state;
 		disconnect(&at_state2);
 		schedule_init(cs, MS_RECOVER);
Signature · 1 line
1.9.2.459.g68773ac
#2 lore raw

PATCH 2/4 isdn/gigaset: drop unused cardstate structure member

In reply to Tilman Schmidt

Field int_in_endpointAddr was set but never used. Drop it.

---
 drivers/isdn/gigaset/usb-gigaset.c | 2 --
 1 file changed, 2 deletions(-)
drivers/isdn/gigaset/usb-gigaset.c +0 -2
index 00d4077..8bda5c8 100644
@@ -142,7 +142,6 @@ struct usb_cardstate {
 	unsigned char		*rcvbuf;
 	int			rcvbuf_size;
 	struct urb		*read_urb;
-	__u8			int_in_endpointAddr;
 
 	char			bchars[6];		/* for request 0x19 */
 };
@@ -741,7 +740,6 @@ static int gigaset_probe(struct usb_interface *interface,
 	}
 	buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
 	ucs->rcvbuf_size = buffer_size;
-	ucs->int_in_endpointAddr = endpoint->bEndpointAddress;
 	ucs->rcvbuf = kmalloc(buffer_size, GFP_KERNEL);
 	if (!ucs->rcvbuf) {
 		dev_err(cs->dev, "Couldn't allocate rcvbuf\n");
Signature · 1 line
1.9.2.459.g68773ac
#3 lore raw

PATCH 3/4 isdn/gigaset: use USB API function usb_endpoint_num()

In reply to Tilman Schmidt

Use function usb_endpoint_num() for the bulk endpoint and store the endpoint number in the cardstate structure instead of the raw endpoint address value.

---
 drivers/isdn/gigaset/usb-gigaset.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)
drivers/isdn/gigaset/usb-gigaset.c +5 -7
index 8bda5c8..82e91ba 100644
@@ -135,7 +135,7 @@ struct usb_cardstate {
 	/* Output buffer */
 	unsigned char		*bulk_out_buffer;
 	int			bulk_out_size;
-	__u8			bulk_out_endpointAddr;
+	int			bulk_out_epnum;
 	struct urb		*bulk_out_urb;
 
 	/* Input buffer */
@@ -465,7 +465,7 @@ static int send_cb(struct cardstate *cs, struct cmdbuf_t *cb)
 
 			usb_fill_bulk_urb(ucs->bulk_out_urb, ucs->udev,
 					  usb_sndbulkpipe(ucs->udev,
-							  ucs->bulk_out_endpointAddr & 0x0f),
+							  ucs->bulk_out_epnum),
 					  cb->buf + cb->offset, count,
 					  gigaset_write_bulk_callback, cs);
 
@@ -627,8 +627,7 @@ static int write_modem(struct cardstate *cs)
 	if (cs->connected) {
 		usb_fill_bulk_urb(ucs->bulk_out_urb, ucs->udev,
 				  usb_sndbulkpipe(ucs->udev,
-						  ucs->bulk_out_endpointAddr &
-						  0x0f),
+						  ucs->bulk_out_epnum),
 				  ucs->bulk_out_buffer, count,
 				  gigaset_write_bulk_callback, cs);
 		ret = usb_submit_urb(ucs->bulk_out_urb, GFP_ATOMIC);
@@ -713,7 +712,7 @@ static int gigaset_probe(struct usb_interface *interface,
 
 	buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
 	ucs->bulk_out_size = buffer_size;
-	ucs->bulk_out_endpointAddr = endpoint->bEndpointAddress;
+	ucs->bulk_out_epnum = usb_endpoint_num(endpoint);
 	ucs->bulk_out_buffer = kmalloc(buffer_size, GFP_KERNEL);
 	if (!ucs->bulk_out_buffer) {
 		dev_err(cs->dev, "Couldn't allocate bulk_out_buffer\n");
@@ -748,8 +747,7 @@ static int gigaset_probe(struct usb_interface *interface,
 	}
 	/* Fill the interrupt urb and send it to the core */
 	usb_fill_int_urb(ucs->read_urb, udev,
-			 usb_rcvintpipe(udev,
-					usb_endpoint_num(endpoint)),
+			 usb_rcvintpipe(udev, usb_endpoint_num(endpoint)),
 			 ucs->rcvbuf, buffer_size,
 			 gigaset_read_int_callback,
 			 cs, endpoint->bInterval);
Signature · 1 line
1.9.2.459.g68773ac