Eliminate a pile of code that isn't used anymore now the new send code
is in place, and make some cosmetic changes. You got this one but it
didn't apply.
atmsar.c | 286 -----------------------------------------------------------
atmsar.h | 8 -
speedtouch.c | 42 +++-----
3 files changed, 15 insertions(+), 321 deletions(-)
diff -Nru a/drivers/usb/misc/atmsar.c b/drivers/usb/misc/atmsar.c
--- a/drivers/usb/misc/atmsar.c Wed Feb 5 16:25:21 2003
+++ b/drivers/usb/misc/atmsar.c Wed Feb 5 16:25:21 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 Wed Feb 5 16:25:21 2003
+++ b/drivers/usb/misc/atmsar.h Wed Feb 5 16:25:21 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 Wed Feb 5 16:25:21 2003
+++ b/drivers/usb/misc/speedtouch.c Wed Feb 5 16:25:21 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++)
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel