This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / drivers / usb / atm / usb_atm.c
index d1e271e..9180dda 100644 (file)
@@ -111,7 +111,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    "Generic USB ATM/DSL I/O, version " DRIVER_VERSION
+#define DRIVER_DESC    "Alcatel SpeedTouch USB driver version " DRIVER_VERSION
 
 static unsigned int num_rcv_urbs = UDSL_DEFAULT_RCV_URBS;
 static unsigned int num_snd_urbs = UDSL_DEFAULT_SND_URBS;
@@ -311,15 +311,6 @@ 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)
@@ -329,6 +320,11 @@ 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;
@@ -370,7 +366,7 @@ static unsigned int udsl_write_cells(struct udsl_instance_data *instance,
        ne = min(howmany, ctrl->num_entire);
 
        for (i = 0; i < ne; i++) {
-               udsl_fill_cell_header(target, ctrl->atm_data.vcc);
+               memcpy(target, ctrl->cell_header, ATM_CELL_HEADER);
                target += ATM_CELL_HEADER;
                memcpy(target, skb->data, ATM_CELL_PAYLOAD);
                target += ATM_CELL_PAYLOAD;
@@ -386,7 +382,11 @@ static unsigned int udsl_write_cells(struct udsl_instance_data *instance,
        if (!(ctrl->num_cells -= ne) || !(howmany -= ne))
                goto out;
 
-       udsl_fill_cell_header(target, ctrl->atm_data.vcc);
+       if (instance->snd_padding) {
+               memset(target, 0, instance->snd_padding);
+               target += instance->snd_padding;
+       }
+       memcpy(target, ctrl->cell_header, ATM_CELL_HEADER);
        target += ATM_CELL_HEADER;
        memcpy(target, skb->data, skb->len);
        target += skb->len;
@@ -400,11 +400,7 @@ static unsigned int udsl_write_cells(struct udsl_instance_data *instance,
                        goto out;
                }
 
-               if (instance->snd_padding) {
-                       memset(target, 0, instance->snd_padding);
-                       target += instance->snd_padding;
-               }
-               udsl_fill_cell_header(target, ctrl->atm_data.vcc);
+               memcpy(target, ctrl->cell_header, ATM_CELL_HEADER);
                target += ATM_CELL_HEADER;
                memset(target, 0, ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER);
                target += ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER;