vserver 1.9.5.x5
[linux-2.6.git] / drivers / usb / atm / usb_atm.c
index 9180dda..a4cd447 100644 (file)
 
 #include "usb_atm.h"
 
-/*
-#define DEBUG
-#define VERBOSE_DEBUG
-*/
-
-#if !defined (DEBUG) && defined (CONFIG_USB_DEBUG)
-#      define DEBUG
-#endif
-
-#include <linux/usb.h>
-
-#ifdef DEBUG
-#define UDSL_ASSERT(x) BUG_ON(!(x))
-#else
-#define UDSL_ASSERT(x) do { if (!(x)) warn("failed assertion '" #x "' at line %d", __LINE__); } while(0)
-#endif
-
 #ifdef VERBOSE_DEBUG
 static int udsl_print_packet(const unsigned char *data, int len);
 #define PACKETDEBUG(arg...)    udsl_print_packet (arg)
@@ -111,7 +94,7 @@ static int udsl_print_packet(const unsigned char *data, int len);
 
 #define DRIVER_AUTHOR  "Johan Verrept, Duncan Sands <duncan.sands@free.fr>"
 #define DRIVER_VERSION "1.8"
-#define DRIVER_DESC    "Alcatel SpeedTouch USB driver version " DRIVER_VERSION
+#define DRIVER_DESC    "Generic USB ATM/DSL I/O, version " DRIVER_VERSION
 
 static unsigned int num_rcv_urbs = UDSL_DEFAULT_RCV_URBS;
 static unsigned int num_snd_urbs = UDSL_DEFAULT_SND_URBS;
@@ -311,6 +294,15 @@ static void udsl_extract_cells(struct udsl_instance_data *instance,
 **  encode  **
 *************/
 
+static inline void udsl_fill_cell_header(unsigned char *target, struct atm_vcc *vcc)
+{
+       target[0] = vcc->vpi >> 4;
+       target[1] = (vcc->vpi << 4) | (vcc->vci >> 12);
+       target[2] = vcc->vci >> 4;
+       target[3] = vcc->vci << 4;
+       target[4] = 0xec;
+}
+
 static const unsigned char zeros[ATM_CELL_PAYLOAD];
 
 static void udsl_groom_skb(struct atm_vcc *vcc, struct sk_buff *skb)
@@ -320,11 +312,6 @@ static void udsl_groom_skb(struct atm_vcc *vcc, struct sk_buff *skb)
        u32 crc;
 
        ctrl->atm_data.vcc = vcc;
-       ctrl->cell_header[0] = vcc->vpi >> 4;
-       ctrl->cell_header[1] = (vcc->vpi << 4) | (vcc->vci >> 12);
-       ctrl->cell_header[2] = vcc->vci >> 4;
-       ctrl->cell_header[3] = vcc->vci << 4;
-       ctrl->cell_header[4] = 0xec;
 
        ctrl->num_cells = UDSL_NUM_CELLS(skb->len);
        ctrl->num_entire = skb->len / ATM_CELL_PAYLOAD;
@@ -366,7 +353,7 @@ static unsigned int udsl_write_cells(struct udsl_instance_data *instance,
        ne = min(howmany, ctrl->num_entire);
 
        for (i = 0; i < ne; i++) {
-               memcpy(target, ctrl->cell_header, ATM_CELL_HEADER);
+               udsl_fill_cell_header(target, ctrl->atm_data.vcc);
                target += ATM_CELL_HEADER;
                memcpy(target, skb->data, ATM_CELL_PAYLOAD);
                target += ATM_CELL_PAYLOAD;
@@ -382,11 +369,7 @@ static unsigned int udsl_write_cells(struct udsl_instance_data *instance,
        if (!(ctrl->num_cells -= ne) || !(howmany -= ne))
                goto out;
 
-       if (instance->snd_padding) {
-               memset(target, 0, instance->snd_padding);
-               target += instance->snd_padding;
-       }
-       memcpy(target, ctrl->cell_header, ATM_CELL_HEADER);
+       udsl_fill_cell_header(target, ctrl->atm_data.vcc);
        target += ATM_CELL_HEADER;
        memcpy(target, skb->data, skb->len);
        target += skb->len;
@@ -400,7 +383,11 @@ static unsigned int udsl_write_cells(struct udsl_instance_data *instance,
                        goto out;
                }
 
-               memcpy(target, ctrl->cell_header, ATM_CELL_HEADER);
+               if (instance->snd_padding) {
+                       memset(target, 0, instance->snd_padding);
+                       target += instance->snd_padding;
+               }
+               udsl_fill_cell_header(target, ctrl->atm_data.vcc);
                target += ATM_CELL_HEADER;
                memset(target, 0, ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER);
                target += ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER;