at76c505a and berliOS driver

Меринов Алексей <[email protected]>
Newsgroups gmane.linux.drivers.at76c503a.user
Message-ID <[email protected]>
Hello.

Configuration:

FC2 with 2.6.7-1.494.2.2 kernel
atmel at76c505a
USB ids 03eb:7614
berliOS driver v0.12beta14

Aug 10 00:41:00 leshik kernel: usb 5-1: new full speed USB device using 
address 2
Aug 10 00:41:00 leshik kernel: /usr/src/at76c503a/usbdfu.c: USB Device 
Firmware Upgrade (DFU) handler v0.12beta14 loading
Aug 10 00:41:00 leshik kernel: /usr/src/at76c503a/at76c503.c: Generic 
Atmel at76c503/at76c505 routines v0.12beta14
Aug 10 00:41:00 leshik kernel: /usr/src/at76c503a/at76c503-fw_skel.c: 
Atmel at76c505a (RFMD2958) Wireless LAN Driver v0.12beta14 loading
Aug 10 00:41:00 leshik kernel: /usr/src/at76c503a/at76c503.c: $Id: 
at76c503.c,v 1.61 2004/06/29 21:26:24 jal2 Exp $ compiled Aug 10 2004 
00:18:24
Aug 10 00:41:00 leshik kernel: /usr/src/at76c503a/at76c503.c: firmware 
version 1.103.0 #164 (fcs_len 4)
Aug 10 00:41:00 leshik kernel: /usr/src/at76c503a/at76c503.c: device's 
MAC 00:06:f4:06:e0:01, regulatory domain ETSI (Europe - (Spain+France) 
(id 48)
Aug 10 00:41:00 leshik kernel: /usr/src/at76c503a/at76c503.c: registered 
wlan0
Aug 10 00:41:00 leshik kernel: usbcore: registered new driver 
at76c505a-rfmd2958

Problem 1 (already posted trouble):

There is wrong case string in at76c502.c (line 972)

  case BOARDTYPE_505_RFMD_2958:

but in the header file the corresponding constant is

  #define BOARDTYPE_505A_RFMD_2958    7

with 'A' after 505

therefore, the first time i have inserted USB card the driver reported:

Bad board type set (7).  Unable to get hardware config.

Solving 1:

Just change BOARDTYPE_505_RFMD_2958: to    case 
BOARDTYPE_505A_RFMD_2958: in at76c502.c

Problem 2:

When trying to "ifup wlan0" -

Aug 10 00:43:38 leshik kernel: usb 5-1: control timeout on ep0in
Aug 10 00:43:38 leshik kernel: /usr/src/at76c503a/at76c503.c: wlan0: 
get_cmd_status failed: -110
Aug 10 00:43:38 leshik kernel: /usr/src/at76c503a/at76c503.c: wlan0 
start_scan completed with -110
Aug 10 00:44:26 leshik kernel: usb 5-1: control timeout on ep0out
Aug 10 00:44:26 leshik kernel: /usr/src/at76c503a/at76c503.c: wlan0: 
set_card_command(CMD_RADIO) failed: -110
Aug 10 00:45:44 leshik kernel: usb 5-1: control timeout on ep0out
Aug 10 00:45:44 leshik kernel: /usr/src/at76c503a/at76c503.c: wlan0: 
set_card_command failed: -110


Solving 2:

i added same timeout in get_cmd_status in  at76c502.c

static inline
int get_cmd_status(struct usb_device *udev,
          u8 cmd, u8 *cmd_status)
{
   return usb_control_msg(udev, usb_rcvctrlpipe(udev,0),
                  0x22, INTERFACE_VENDOR_REQUEST_IN,
                  cmd, 0,
                  cmd_status, 40, HZ * USB_CTRL_GET_TIMEOUT);  <--- line 
1041
}

and in set_card_command

static
int set_card_command(struct usb_device *udev, int cmd,
           unsigned char *buf, int buf_size)
{
   int ret;
   struct at76c503_command *cmd_buf =
       (struct at76c503_command *)kmalloc(
           sizeof(struct at76c503_command) + buf_size,
           GFP_KERNEL);

   if(cmd_buf){
       cmd_buf->cmd = cmd;
       cmd_buf->reserved = 0;
       cmd_buf->size = cpu_to_le16(buf_size);
       if(buf_size > 0)
           memcpy(&(cmd_buf[1]), buf, buf_size);
       ret = usb_control_msg(udev, usb_sndctrlpipe(udev,0),
                     0x0e, DEVICE_VENDOR_REQUEST_OUT,
                     0, 0,
                     cmd_buf,
                     sizeof(struct at76c503_command) + buf_size,
                     HZ * 
USB_CTRL_GET_TIMEOUT);                          <-- line 1106
       kfree(cmd_buf);
       return ret;
   }

   return -ENOMEM;
}

then make && make install

and everything works fine now :)

Thanks all, hope it'll be usefull.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.