#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)
#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;
** 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)
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;
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;
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;
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;