ChangeSet 1.1043.1.9, 2003/02/16 09:40:01-08:00, duncan.sands@math.u-psud.fr

[PATCH] USB speedtouch: speedtouch dead code elimination

Eliminate a pile of code that isn't used anymore now the new send code
is in place, and make some cosmetic changes.


diff -Nru a/drivers/usb/misc/atmsar.c b/drivers/usb/misc/atmsar.c
--- a/drivers/usb/misc/atmsar.c	Tue Feb 18 16:41:30 2003
+++ b/drivers/usb/misc/atmsar.c	Tue Feb 18 16:41:30 2003
@@ -213,70 +213,6 @@
 }
 #endif
 
-/* initialization routines. not used at the moment
- * I will avoid these as long as possible !!
- */
-
-int open_atmsar (void)
-{
-	return 0;
-}
-
-int remove_atmsar (void)
-{
-	return 0;
-}
-
-/* ATOMIC version of alloc_tx */
-struct sk_buff *atmsar_alloc_skb_wrapper (struct atm_vcc *vcc, unsigned int size)
-{
-	struct sk_buff *skb;
-
-	if (atomic_read (&vcc->tx_inuse) && !atm_may_send (vcc, size)) {
-		PDEBUG ("Sorry: tx_inuse = %d, size = %d, sndbuf = %d\n",
-			atomic_read (&vcc->tx_inuse), size, vcc->sk->sndbuf);
-		return NULL;
-	}
-	skb = alloc_skb (size, GFP_ATOMIC);
-	if (!skb)
-		return NULL;
-	atomic_add (skb->truesize + ATM_PDU_OVHD, &vcc->tx_inuse);
-	return skb;
-}
-
-struct sk_buff *atmsar_alloc_tx (struct atmsar_vcc_data *vcc, unsigned int size)
-{
-	struct sk_buff *tmp = NULL;
-	int bufsize = 0;
-
-	switch (vcc->type) {
-	case ATMSAR_TYPE_AAL0:
-		/* reserving adequate headroom */
-		bufsize =
-		    size + (((size / 48) + 1) * ((vcc->flags & ATMSAR_USE_53BYTE_CELL) ? 5 : 4));
-		break;
-	case ATMSAR_TYPE_AAL1:
-		/* reserving adequate headroom */
-		bufsize =
-		    size + (((size / 47) + 1) * ((vcc->flags & ATMSAR_USE_53BYTE_CELL) ? 5 : 4));
-		break;
-	case ATMSAR_TYPE_AAL2:
-	case ATMSAR_TYPE_AAL34:
-		/* not supported */
-		break;
-	case ATMSAR_TYPE_AAL5:
-		/* reserving adequate tailroom */
-		bufsize = size + (((size + 8 + 47) / 48) * 48);
-		break;
-	}
-
-	PDEBUG ("Requested size %d, Allocating size %d\n", size, bufsize);
-	tmp = vcc->alloc_tx (vcc->vcc, bufsize);
-	skb_put (tmp, bufsize);
-
-	return tmp;
-}
-
 struct atmsar_vcc_data *atmsar_open (struct atmsar_vcc_data **list, struct atm_vcc *vcc, uint type,
 				     ushort vpi, ushort vci, unchar pti, unchar gfc, uint flags)
 {
@@ -292,18 +228,6 @@
 
 	memset (new, 0, sizeof (struct atmsar_vcc_data));
 	new->vcc = vcc;
-/*
- * This gives problems with the ATM layer alloc_tx().
- * It is not usable from interrupt context and for
- * some reason this is used in interrupt context
- * with br2684.c
- *
-  if (vcc->alloc_tx)
-    new->alloc_tx  = vcc->alloc_tx;
-  else
-*/
-	new->alloc_tx = atmsar_alloc_skb_wrapper;
-
 	new->stats = vcc->stats;
 	new->type = type;
 	new->next = NULL;
@@ -372,216 +296,6 @@
 	kfree (vcc);
 }
 
-/***********************
- **
- **    ENCODE FUNCTIONS
- **
- ***********************/
-
-/* encapsulate in an AAL5 frame, which is then split into ATM cells */
-unsigned int atmsar_encode (struct atmsar_vcc_data *ctx, char *source, char *target, unsigned int pdu_length)
-{
-	unsigned int num_cells = (pdu_length + ATM_AAL5_TRAILER + ATM_CELL_PAYLOAD - 1) / ATM_CELL_PAYLOAD;
-	unsigned int num_pdu_cells = pdu_length / ATM_CELL_PAYLOAD + 1;
-	unsigned int aal5_length = num_cells * ATM_CELL_PAYLOAD;
-	unsigned int zero_padding = aal5_length - pdu_length - ATM_AAL5_TRAILER;
-	unsigned int final_length = num_cells * ATM_CELL_SIZE;
-	unsigned char aal5_trailer [ATM_AAL5_TRAILER];
-	unsigned char cell_header [ATM_CELL_HEADER];
-	u32 crc;
-	int i;
-
-	PDEBUG ("atmsar_encode entered\n");
-
-	PDEBUG ("pdu_length %d, num_cells %d, num_pdu_cells %d, aal5_length %d, zero_padding %d, final_length %d\n", pdu_length, num_cells, num_pdu_cells, aal5_length, zero_padding, final_length);
-
-	PDEBUG ("source 0x=%p, target 0x%p\n", source, target);
-
-	aal5_trailer [0] = 0; /* UU = 0 */
-	aal5_trailer [1] = 0; /* CPI = 0 */
-	aal5_trailer [2] = pdu_length >> 8;
-	aal5_trailer [3] = pdu_length;
-
-	crc = crc32 (~0, source, pdu_length);
-	for (i = 0; i < zero_padding; i++)
-		crc = CRC32 (0, crc);
-	crc = crc32 (crc, aal5_trailer, 4);
-	crc = ~crc;
-
-	aal5_trailer [4] = crc >> 24;
-	aal5_trailer [5] = crc >> 16;
-	aal5_trailer [6] = crc >> 8;
-	aal5_trailer [7] = crc;
-
-	cell_header [0] = ctx->atmHeader >> 24;
-	cell_header [1] = ctx->atmHeader >> 16;
-	cell_header [2] = ctx->atmHeader >> 8;
-	cell_header [3] = ctx->atmHeader;
-	cell_header [4] = 0xec;
-
-	for (i = 1; i < num_pdu_cells; i++) {
-		memcpy (target, cell_header, ATM_CELL_HEADER);
-		target += ATM_CELL_HEADER;
-		memcpy (target, source, ATM_CELL_PAYLOAD);
-		target += ATM_CELL_PAYLOAD;
-		source += ATM_CELL_PAYLOAD;
-		PDEBUG ("source 0x=%p, target 0x%p\n", source, target);
-	}
-	memcpy (target, cell_header, ATM_CELL_HEADER);
-	target += ATM_CELL_HEADER;
-	memcpy (target, source, pdu_length % ATM_CELL_PAYLOAD);
-	target += pdu_length % ATM_CELL_PAYLOAD;
-	if (num_pdu_cells < num_cells) {
-		memset (target, 0, zero_padding + ATM_AAL5_TRAILER - ATM_CELL_PAYLOAD);
-		target += zero_padding + ATM_AAL5_TRAILER - ATM_CELL_PAYLOAD;
-		memcpy (target, cell_header, ATM_CELL_HEADER);
-		target += ATM_CELL_HEADER;
-		zero_padding = ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER;
-	}
-	memset (target, 0, zero_padding);
-	target += zero_padding;
-	memcpy (target, aal5_trailer, ATM_AAL5_TRAILER);
-
-	/* set pti bit in last cell */
-	*(target + ATM_AAL5_TRAILER + 3 - ATM_CELL_SIZE) |= 0x2;
-
-	/* update stats */
-	if (ctx->stats)
-		atomic_inc (&ctx->stats->tx);
-
-	if (ctx->stats && (ctx->type <= ATMSAR_TYPE_AAL1))
-		atomic_add (num_cells, &(ctx->stats->tx));
-
-	return final_length;
-}
-
-struct sk_buff *atmsar_encode_rawcell (struct atmsar_vcc_data *ctx, struct sk_buff *skb)
-{
-	int number_of_cells = (skb->len) / 48;
-	int total_length = number_of_cells * (ctx->flags & ATMSAR_USE_53BYTE_CELL ? 53 : 52);
-	unsigned char *source;
-	unsigned char *target;
-	struct sk_buff *out = NULL;
-	int i;
-
-	PDEBUG ("atmsar_encode_rawcell (0x%p, 0x%p) called\n", ctx, skb);
-
-	if (skb_cloned (skb)
-	    || (skb_headroom (skb) <
-		(number_of_cells * (ctx->flags & ATMSAR_USE_53BYTE_CELL ? 5 : 4)))) {
-		PDEBUG
-		    ("atmsar_encode_rawcell allocating new skb. ctx->alloc_tx = 0x%p, ctx->vcc = 0x%p\n",
-		     ctx->alloc_tx, ctx->vcc);
-		/* get new skb */
-		out = ctx->alloc_tx (ctx->vcc, total_length);
-		if (!out)
-			return NULL;
-
-		skb_put (out, total_length);
-		source = skb->data;
-		target = out->data;
-	} else {
-		PDEBUG ("atmsar_encode_rawcell: sufficient headroom\n");
-		source = skb->data;
-		skb_push (skb, number_of_cells * ((ctx->flags & ATMSAR_USE_53BYTE_CELL) ? 5 : 4));
-		target = skb->data;
-		out = skb;
-	}
-
-	PDEBUG ("source 0x=%p, target 0x%p\n", source, target);
-
-	if (ctx->flags & ATMSAR_USE_53BYTE_CELL) {
-		for (i = 0; i < number_of_cells; i++) {
-			ADD_HEADER (target, ctx->atmHeader);
-			*target++ = (char) 0xEC;
-			memcpy (target, source, 48);
-			target += 48;
-			source += 48;
-			PDEBUG ("source 0x=%p, target 0x%p\n", source, target);
-		}
-	} else {
-		for (i = 0; i < number_of_cells; i++) {
-			ADD_HEADER (target, ctx->atmHeader);
-			memcpy (target, source, 48);
-			target += 48;
-			source += 48;
-			PDEBUG ("source 0x=%p, target 0x%p\n", source, target);
-		};
-	}
-
-	if (ctx->flags & ATMSAR_SET_PTI) {
-		/* setting pti bit in last cell */
-		*(target - (ctx->flags & ATMSAR_USE_53BYTE_CELL ? 50 : 49)) |= 0x2;
-	}
-
-	/* update stats */
-	if (ctx->stats && (ctx->type <= ATMSAR_TYPE_AAL1))
-		atomic_add (number_of_cells, &(ctx->stats->tx));
-
-	PDEBUG ("atmsar_encode_rawcell return 0x%p (length %d)\n", out, out->len);
-	return out;
-}
-
-struct sk_buff *atmsar_encode_aal5 (struct atmsar_vcc_data *ctx, struct sk_buff *skb)
-{
-	int length, pdu_length;
-	unsigned char *trailer;
-	unsigned char *pad;
-	uint crc = 0xffffffff;
-
-	PDEBUG ("atmsar_encode_aal5 (0x%p, 0x%p) called\n", ctx, skb);
-
-	/* determine aal5 length */
-	pdu_length = skb->len;
-	length = ((pdu_length + 8 + 47) / 48) * 48;
-
-	if (skb_tailroom (skb) < (length - pdu_length)) {
-		struct sk_buff *out;
-		PDEBUG
-		    ("atmsar_encode_aal5 allocating new skb. ctx->alloc_tx = 0x%p, ctx->vcc = 0x%p\n",
-		     ctx->alloc_tx, ctx->vcc);
-		/* get new skb */
-		out = ctx->alloc_tx (ctx->vcc, length);
-		if (!out)
-			return NULL;
-
-		PDEBUG ("out->data = 0x%p\n", out->data);
-		PDEBUG ("atmsar_encode_aal5 pdu length %d, allocated length %d\n", skb->len,
-			length);
-		memcpy (out->data, skb->data, skb->len);
-		skb_put (out, skb->len);
-
-		skb = out;
-	}
-
-	PDEBUG ("skb->data = 0x%p\n", skb->data);
-	/* note end of pdu and add length */
-	pad = skb_put (skb, length - pdu_length);
-	trailer = skb->tail - 8;
-
-	PDEBUG ("trailer = 0x%p\n", trailer);
-
-	/* zero padding space */
-	memset (pad, 0, length - pdu_length - 8);
-
-	/* add trailer */
-	*trailer++ = (unsigned char) 0;	/* UU  = 0 */
-	*trailer++ = (unsigned char) 0;	/* CPI = 0 */
-	*trailer++ = (unsigned char) (pdu_length >> 8);
-	*trailer++ = (unsigned char) (pdu_length & 0xff);
-	crc = ~crc32 (crc, skb->data, length - 4);
-	*trailer++ = (unsigned char) (crc >> 24);
-	*trailer++ = (unsigned char) (crc >> 16);
-	*trailer++ = (unsigned char) (crc >> 8);
-	*trailer++ = (unsigned char) (crc & 0xff);
-
-	/* update stats */
-	if (ctx->stats)
-		atomic_inc (&ctx->stats->tx);
-
-	PDEBUG ("atmsar_encode_aal5 return 0x%p (length %d)\n", skb, skb->len);
-	return skb;
-}
 
 /***********************
  **
diff -Nru a/drivers/usb/misc/atmsar.h b/drivers/usb/misc/atmsar.h
--- a/drivers/usb/misc/atmsar.h	Tue Feb 18 16:41:30 2003
+++ b/drivers/usb/misc/atmsar.h	Tue Feb 18 16:41:30 2003
@@ -63,7 +63,6 @@
 	int type;
 
 	/* connection specific non-atmsar data */
-	struct sk_buff *(*alloc_tx) (struct atm_vcc * vcc, unsigned int size);
 	struct atm_vcc *vcc;
 	struct k_atm_aal_stats *stats;
 	unsigned short mtu;	/* max is actually  65k for AAL5... */
@@ -86,16 +85,9 @@
 					    unchar gfc, uint flags);
 extern void atmsar_close (struct atmsar_vcc_data **list, struct atmsar_vcc_data *vcc);
 
-extern struct sk_buff *atmsar_encode_rawcell (struct atmsar_vcc_data *ctx, struct sk_buff *skb);
-extern struct sk_buff *atmsar_encode_aal5 (struct atmsar_vcc_data *ctx, struct sk_buff *skb);
-
 struct sk_buff *atmsar_decode_rawcell (struct atmsar_vcc_data *list, struct sk_buff *skb,
 				       struct atmsar_vcc_data **ctx);
 struct sk_buff *atmsar_decode_aal5 (struct atmsar_vcc_data *ctx, struct sk_buff *skb);
-
-struct sk_buff *atmsar_alloc_tx (struct atmsar_vcc_data *vcc, unsigned int size);
-
-unsigned int atmsar_encode (struct atmsar_vcc_data *ctx, char *source, char *target, unsigned int pdu_length);
 
 unsigned long calc_crc (char *mem, int len, unsigned initial);
 
diff -Nru a/drivers/usb/misc/speedtouch.c b/drivers/usb/misc/speedtouch.c
--- a/drivers/usb/misc/speedtouch.c	Tue Feb 18 16:41:30 2003
+++ b/drivers/usb/misc/speedtouch.c	Tue Feb 18 16:41:30 2003
@@ -132,7 +132,7 @@
 	unsigned int free_cells;
 };
 
-struct udsl_usb_send_data_context {
+struct udsl_sender {
 	struct list_head list;
 	struct udsl_send_buffer *buffer;
 	struct urb *urb;
@@ -177,7 +177,7 @@
 	struct tasklet_struct receive_tasklet;
 
 	/* sending */
-	struct udsl_usb_send_data_context send_ctx [UDSL_NUMBER_SND_URBS];
+	struct udsl_sender all_senders [UDSL_NUMBER_SND_URBS];
 	struct udsl_send_buffer all_buffers [UDSL_NUMBER_SND_BUFS];
 
 	struct sk_buff_head sndqueue;
@@ -487,7 +487,7 @@
 static void udsl_complete_send (struct urb *urb, struct pt_regs *regs)
 {
 	struct udsl_instance_data *instance;
-	struct udsl_usb_send_data_context *snd;
+	struct udsl_sender *snd;
 	unsigned long flags;
 
 	PDEBUG ("udsl_complete_send entered\n");
@@ -509,7 +509,7 @@
 static void udsl_process_send (unsigned long data)
 {
 	struct udsl_instance_data *instance = (struct udsl_instance_data *) data;
-	struct udsl_usb_send_data_context *snd;
+	struct udsl_sender *snd;
 	struct udsl_send_buffer *buf;
 	unsigned int cells_to_write, i;
 	struct sk_buff *skb;
@@ -531,7 +531,7 @@
 		} else /* all buffers empty */
 			break;
 
-		snd = list_entry (instance->spare_senders.next, struct udsl_usb_send_data_context, list);
+		snd = list_entry (instance->spare_senders.next, struct udsl_sender, list);
 		list_del (&snd->list);
 		spin_unlock_irqrestore (&instance->send_lock, flags);
 
@@ -615,12 +615,12 @@
 	goto made_progress;
 }
 
-static void udsl_usb_cancelsends (struct udsl_instance_data *instance, struct atm_vcc *vcc)
+static void udsl_cancel_send (struct udsl_instance_data *instance, struct atm_vcc *vcc)
 {
 	unsigned long flags;
 	struct sk_buff *skb, *n;
 
-	PDEBUG ("udsl_usb_cancelsends entered\n");
+	PDEBUG ("udsl_cancel_send entered\n");
 	spin_lock_irqsave (&instance->sndqueue.lock, flags);
 	for (skb = instance->sndqueue.next, n = skb->next; skb != (struct sk_buff *)&instance->sndqueue; skb = n, n = skb->next)
 		if (UDSL_SKB (skb)->atm_data.vcc == vcc) {
@@ -643,7 +643,7 @@
 			kfree_skb (skb);
 	}
 	tasklet_enable (&instance->send_tasklet);
-	PDEBUG ("udsl_usb_cancelsends done\n");
+	PDEBUG ("udsl_cancel_send done\n");
 }
 
 static int udsl_atm_send (struct atm_vcc *vcc, struct sk_buff *skb)
@@ -716,17 +716,6 @@
 * ATM helper functions
 *
 ****************************************************************************/
-static struct sk_buff *udsl_atm_alloc_tx (struct atm_vcc *vcc, unsigned int size)
-{
-	struct atmsar_vcc_data *atmsar_vcc =
-	    ((struct udsl_atm_dev_data *) vcc->dev_data)->atmsar_vcc;
-	if (atmsar_vcc)
-		return atmsar_alloc_tx (atmsar_vcc, size);
-
-	printk (KERN_INFO
-		"SpeedTouch USB: udsl_atm_alloc_tx could not find correct alloc_tx function !\n");
-	return NULL;
-}
 
 static int udsl_atm_proc_read (struct atm_dev *atm_dev, loff_t *pos, char *page)
 {
@@ -805,7 +794,6 @@
 	set_bit (ATM_VF_PARTIAL, &vcc->flags);
 	set_bit (ATM_VF_READY, &vcc->flags);
 	vcc->dev_data = dev_data;
-	vcc->alloc_tx = udsl_atm_alloc_tx;
 
 	dev_data->atmsar_vcc->mtu = UDSL_MAX_AAL5_MRU;
 
@@ -830,7 +818,7 @@
 
 	/* freeing resources */
 	/* cancel all sends on this vcc */
-	udsl_usb_cancelsends (instance, vcc);
+	udsl_cancel_send (instance, vcc);
 
 	atmsar_close (&(instance->atmsar_vcc_list), dev_data->atmsar_vcc);
 	kfree (dev_data);
@@ -964,7 +952,7 @@
 
 	/* send init */
 	for (i = 0; i < UDSL_NUMBER_SND_URBS; i++) {
-		struct udsl_usb_send_data_context *snd = &(instance->send_ctx[i]);
+		struct udsl_sender *snd = &(instance->all_senders[i]);
 
 		if (!(snd->urb = usb_alloc_urb (0, GFP_KERNEL))) {
 			PDEBUG ("No memory for send urb %d!\n", i);
@@ -1022,15 +1010,15 @@
 		kfree (instance->all_buffers[i].base);
 
 	for (i = 0; i < UDSL_NUMBER_SND_URBS; i++)
-		usb_free_urb (instance->send_ctx[i].urb);
+		usb_free_urb (instance->all_senders[i].urb);
 
 	for (i = 0; i < UDSL_NUMBER_RCV_URBS; i++) {
 		struct udsl_receiver *rcv = &(instance->all_receivers[i]);
 
+		usb_free_urb (rcv->urb);
+
 		if (rcv->skb)
 			kfree_skb (rcv->skb);
-
-		usb_free_urb (rcv->urb);
 	}
 
 	kfree (instance);
@@ -1112,7 +1100,7 @@
 	tasklet_disable (&instance->send_tasklet);
 
 	for (i = 0; i < UDSL_NUMBER_SND_URBS; i++)
-		if ((result = usb_unlink_urb (instance->send_ctx[i].urb)) < 0)
+		if ((result = usb_unlink_urb (instance->all_senders[i].urb)) < 0)
 			PDEBUG ("udsl_usb_disconnect: usb_unlink_urb on send urb %d returned %d\n", i, result);
 
 	/* wait for completion handlers to finish */
@@ -1143,7 +1131,7 @@
 
 	PDEBUG ("udsl_usb_disconnect: freeing senders\n");
 	for (i = 0; i < UDSL_NUMBER_SND_URBS; i++)
-		usb_free_urb (instance->send_ctx[i].urb);
+		usb_free_urb (instance->all_senders[i].urb);
 
 	PDEBUG ("udsl_usb_disconnect: freeing buffers\n");
 	for (i = 0; i < UDSL_NUMBER_SND_BUFS; i++)
