* [gentoo-user] Problem with open source driver Devolo dLAN USB
@ 2007-06-25 13:53 Florian Philipp
2007-06-25 15:23 ` Alex Schuster
0 siblings, 1 reply; 12+ messages in thread
From: Florian Philipp @ 2007-06-25 13:53 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1.1: Type: text/plain, Size: 523 bytes --]
Hi!
Currently I'm trying to istall a Devolo dLAN-USB adapter, also known as Power
Line. [1]
They even provide an open source driver for Linux as a 400kb tarball [2].
Unfortunately "make" isn't successful (see make_1.txt). I'll attach the
problematic devolo_usb.c file and their readme, too.
I hope you can help me.
Thanks in advance!
Florian Philipp
[1] http://en.wikipedia.org/wiki/Power_line_communication
[2]
http://download.devolo.biz/webcms/0518732001164965747/dLAN-linux-package-v3.tar.gz
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: README --]
[-- Type: text/plain; charset="us-ascii"; name="README", Size: 11851 bytes --]
README file for
USB drivers and dlanconfig for devolo dLAN;
tested under SUSE Linux and Debian Linux
with kernel versions 2.4 and 2.6
01.03.2005
--------------------------------------------------------------------------------
Contents
1. Overview
2. Requirements
2.1 SUSE
2.2 Debian
2.3 libpcap
3. USB-driver installation (for USB connection)
and the configuration program dlanconfig
3.1 Unpack the compressed tar file
3.2 Installation
4. dLAN duo
4.1 Configuration - one-time application
(e.g. to test the installation)
4.2 Configuration under SUSE Linux permanent installation
4.3 Configuration under Debian Linux permanent installation
5. dlanconfig
5.1 Change password
5.2 Overview of the dLAN network
--------------------------------------------------------------------------------
1. Overview
This readme file contains information about installing the USB driver
and the configuration program dlanconfig under SUSE Linux and
Debian Linux.
We also describe the configuration of the dLAN adapters.
The dLAN duo can be connected either via Ethernet or USB ports.
If both are installed, USB has priority.
More detailed information about Linux commands is available in the
man pages. These are accessed by entering: man ifconfig.
--------------------------------------------------------------------------------
2. Requirements
First of all check that your system and installation are optimised:
2.1 SUSE
SUSE users can use the YAST program to set up the required system
components or to check that they are selected in advance. Use the SUSE
menu system to select -> Yast and enter your root password. In the
selection dialogue 'Install and Remove software' choose the 'Selections'
filter for a list of all of the system components.
To install the USB driver and the configuration program dlanconfig,
the following system components must be selected:
'C/C++ Compiler and Tools'
'Kernel Development' (for installing the USB driver)
2.2 Debian
Debian users wishing to install the USB driver need the appropriate
kernel-headers-xxx, which must be installed in advance. You will find
the exact description (e.g. kernel-headers-2.4.27) by entering
'uname -a'. Type in the following command to install the kernel
headers:
apt-get install kernel-headers-xxx
Depending on the configuration, the subsequent installation takes place
either automatically from the CD or from the Internet, assuming you
have access.
2.3 libpcap
libpcap is a library used by network sniffer programs. It offers these
programs an interface for processing and analysing data packets in
networks. You will need this library if you translate or write this
type of software yourself or if you wish to use the dlanconfig
configuration program.
Under SuSE Linux, the latest libpcap library is installed as standard.
We advise you to check you installation anyway.
Debian users will have to install the libpcab library themselves. Do
this by entering the following command:
apt-get install libpcap0.8-dev
Depending on the configuration, the subsequent installation takes place
either automatically from the CD or from the Internet, assuming you have
access.
Note: The devolo package includes a source text version of the libpcap
library. You should use this source text version if you have a different
distribution which does not include libpcap.
--------------------------------------------------------------------------------
3. USB-driver installation (for USB connection) and the configuration program dlanconfig
3.1 Unpack the compressed tar file
The following command unpacks the compressed tar file on your local
computer:
tar xzvf dLAN-linux-package-1.2.tar.gz
3.2 Installation
After unpacking the tar file, change to the subdirectory dlanconfig and
continue with the installation as follows:
There are three ways to carry out the installation:
- The dLAN configuration program dlanconfig only
- The USB driver for dLAN duo only
- The dLAN configuration program dlanconfig and the USB driver
To install the program dlanconfig only:
./configure
make cfgtool
make install-cfgtool (as root)
To install the USB driver for dLAN duo only:
./configure
make usbdriver
make install-usbdriver (as root)
To install dlanconfig and the USB driver:
./configure
make
make install (as root)
Note: Entering the following command will cause the USB driver to be
automatically loaded after a restart:
cd driver
make installboot (as root)
Note: If error messages are displayed or if the installation aborts,
check that your system meets with the system requirements.
--------------------------------------------------------------------------------
4. dLAN duo
The dLAN duo can be connected either via Ethernet or USB ports.
If both are installed, USB has priority.
After you install the USB driver from devolo, your computer will
recognise all connected dLAN duo adapters as network
interfaces. This means that a dLAN duo can be treated like
any other interface, such as an Ethernet port, for example.
Entering the command 'ifconfig -a' displays all network interfaces.
Each dLAN duo adapter has an identifier that consists of
'dlanusb' and a unique number (e.g. "0" for the first device, "1" for
the second, etc.).
Note: The command 'ifconfig -a' can only be executed as "root".
4.1 Configuration - one-time application
(e.g. to test the installation)
Note: All of the IP addresses named here are examples only.
After listing all of the network interfaces with the command
'ifconfig -a', continue with the configuration with the following
example entries:
ifconfig dlanusb0 198.168.0.1 netmask 255.255.255.0 up
Note: Make sure that the new IP addresses are not already being used in
your network and that they lie within your existing range of IP
addresses!
4.2 Configuration under SUSE Linux permanent installation
Note: This procedure can only be executed as "root".
For the permanent installation of the dLAN duo under SUSE
Linux, you should create a text file with the necessary information for
the adapter.
Enter the following information with any text editor (e.g. edit, pico):
- if IP addresses are to be assigned dynamically:
BOOTPROTO='dhcp'
STARTMODE='hotplug'
Finally, the file is saved under the unique identifier for the
dLAN duo adapter as follows:
/etc/sysconfig/network/ifcfg-dlanusb0
- if IP addresses are to be assigned statically:
BOOTPROTO='static'
STARTMODE='hotplug'
IPADDR='192.168.0.1'
NETMASK='255.255.255.0'
Note: Make sure that the new IP addresses are not already being used in
your network and that they lie within your existing range of IP
addresses!
Finally, the file is saved under the unique identifier for the
dLAN duo adapter as follows:
/etc/sysconfig/network/ifcfg-dlanusb0
To define a gateway, create the file
/etc/sysconfig/network/ifroute-dlanusb0
and enter the following information:
default 192.168.0.253 - -
Note: Make sure that the IP address is the same as that for your
gateway. In most cases the network router is the gateway.
To set the DNS server edit the file /etc/resolv.conf as follows:
nameserver 192.168.0.253
(IP address corresponds to that of the DNS server)
Note: Ensure that the IP address corresponds to that of your DNS server.
In most cases the network router is the DNS server.
Note: dLAN duo adapters cannot be configured graphically with
Yast.
4.3 Configuration under Debian Linux permanent installation
Note: This procedure can only be executed as "root".
Under Debian Linux, the following information is appended to the file
'/etc/interfaces':
- if IP addresses are to be assigned dynamically:
auto dlanusb0
iface dlanusb0 inet dhcp
- if IP addresses are to be assigned statically:
auto dlanusb0
iface dlanusb0 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.253 (only required for Internet access)
The file '/etc/resolv.conf' must be edited to ensure that the name
resolution is executed correctly. Enter the IP address for the DNS
server into this file, e.g.
nameserver 192.168.0.253 (only required for Internet
access)
Note: Ensure that the IP address corresponds to that of your DNS server.
In most cases the network router is the DNS server.
Note: Operating multiple network interfaces can potentially cause
problems with DNS and routing. We recommend the use of DHCP for the
assignment of IP addresses so that the DNS and gateway are adapted
automatically.
--------------------------------------------------------------------------------
5. dlanconfig
Note: The following procedure can only be executed as "root".
Entering 'dlanconfig' allows you to configure a HomePlug network. The
following entry is an example that adds your first local dLAN adapter
(dlanusb0) to your network:
/usr/local/sbin/dlanconfig dlanusb0
Note: If a local dLAN adapter is connected via Ethernet, then
dlanconfig will be started with the identifier of the appropriate
network card, i.e. if it is connected to the first network card,
then the entry is as follows:
/usr/local/sbin/dlanconfig eth0
A menu assists you to set the network password for the local and/or
remote dLAN devices. You also have an overview of all dLAN devices
installed in your network.
5.1 Change password
You can change the HomePlug password for the local dLAN adapter in the
menu by selecting the option 'Set local network password' and entering
the new network password. You will then see a brief confirmation if the
password was changed without error.
You can change the HomePlug password for a remote dLAN adapter in the
menu by selecting the option 'Set remote network password'. Enter the
new network password and the Security ID of the remote dLAN adapter. The
Security ID is printed on the back of every dLAN adapter. Please observe
that entering the Security ID (XXXX-XXXX-XXXX-XXXX) is case sensitive.
You will then see a brief confirmation if the password was changed
without error.
5.2 Overview of the dLAN network
For an overview of all of the remote dLAN adapters installed in your
dLAN network, use the menu to access the option 'List remote devices'.
dlanconfig also displays the connection rates between the local and the
remote dLAN devices.
If a remote dLAN adapter is highlighted with the * symbol, then the
connection rate value has not been updated.
--------------------------------------------------------------------------------
[-- Attachment #1.3: devolo_usb.c --]
[-- Type: text/x-csrc, Size: 16691 bytes --]
/*
devolo_usb.c: dLAN USB driver for linux.
Only for use with dLAN adaptors from devolo.
Copyright 2006 devolo AG
*/
/*
* Include
*/
#include </usr/include/linux/sched.h>
#include </usr/include/linux/slab.h>
#include </usr/include/linux/init.h>
#include </usr/include/linux/delay.h>
#include </usr/include/linux/netdevice.h>
#include </usr/include/linux/etherdevice.h>
#include </usr/include/linux/usb.h>
#include </usr/include/linux/module.h>
#include </usr/include/linux/ethtool.h>
#include </usr/include/asm/uaccess.h>
#include </usr/include/linux/config.h>
#include </usr/include/linux/kmod.h>
#include </usr/include/linux/random.h>
#include </usr/include/asm/unaligned.h>
#include </usr/include/linux/netdevice.h>
#include </usr/include/linux/rtnetlink.h>
#include "devolo_usb.h"
static int multicast_filter_limit = 32;
/*
* List of supported vendor_id/device_id
*/
static struct usb_device_id plUsb_ids[] = {
{
USB_DEVICE (USB_INTELLON_VENDOR_ID, USB_INTELLON_PRODUCT_ID),
},
{},
};
#if defined(MODULE_LICENSE)
MODULE_LICENSE ("devolo AG");
#endif
MODULE_AUTHOR (DRIVER_AUTHOR);
MODULE_DESCRIPTION (DRIVER_DESC);
MODULE_DEVICE_TABLE (usb, plUsb_ids);
static void
ctrl_callback (struct urb * urb)
{
devoloUSB_t *devolo = urb->context;
if (!devolo)
return;
switch (urb->status)
{
case 0:
break;
case -EINPROGRESS:
return;
case -ENOENT:
break;
default:
warn("%s: status %d",__FUNCTION__, urb->status);
}
wake_up (&devolo->ctrl_wait);
}
/*
* Function that send packet to upper level
*/
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
static void devolo_read_bulk_callback (struct urb *urb, struct pt_regs * unused)
#else
static void devolo_read_bulk_callback (struct urb *urb)
#endif
{
devoloUSB_t *devolo = urb->context;
struct net_device *net;
int count = urb->actual_length;
int res;
struct sk_buff *skb;
if (!devolo || !(devolo->flags & DEVOLO_RUNNING))
return;
net = devolo->net;
if (!netif_device_present (net))
return;
if (devolo->flags & DEVOLO_RX_BUSY){
/*
* Update stats
*/
devolo->stats.rx_errors++;
return;
}
devolo->flags |= DEVOLO_RX_BUSY;
switch (urb->status){
case 0:
break;
case -ETIMEDOUT:
devolo->flags &= ~DEVOLO_RX_BUSY;
break;
case -EPIPE:
/* stall or disconnect */
warn("%s: no rx stall recovery", net->name);
return;
case -ENOENT:
case -ECONNRESET:
case -ESHUTDOWN:
return;
default:
goto goon;
}
if (!count)
goto goon;
if (!(skb = dev_alloc_skb (count)))
goto goon;
skb->dev = net;
eth_copy_and_sum (skb, devolo->rx_buff, count, 0);
/* bug 1180*/
skb_put (skb, count-2);
skb->protocol = eth_type_trans (skb, net);
/*
* Sending packet to upper level
*/
netif_rx (skb);
/*
* Update stats
*/
devolo->stats.rx_packets++;
devolo->stats.rx_bytes += count;
goon:
FILL_BULK_URB (devolo->rx_urb, devolo->usb,
usb_rcvbulkpipe (devolo->usb, 1), devolo->rx_buff,
DEVOLO_MAX_MTU, devolo_read_bulk_callback, devolo);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
if ((res = usb_submit_urb (devolo->rx_urb,GFP_ATOMIC)))
#else
if ((res = usb_submit_urb (devolo->rx_urb)))
#endif
printk(KERN_ERR "Failed submit rx_urb %d\n", res);
devolo->flags &= ~DEVOLO_RX_BUSY;
return;
}
/*
* Callback called after packet transmission
*/
static void
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
devolo_write_bulk_callback (struct urb *urb,struct pt_regs * unused)
#else
devolo_write_bulk_callback (struct urb *urb)
#endif
{
devoloUSB_t *devolo = urb->context;
if (!devolo || !(devolo->flags & DEVOLO_RUNNING))
return;
if (!netif_device_present (devolo->net))
return;
devolo->net->trans_start = jiffies;
/*
* Restart packet queue
*/
netif_wake_queue (devolo->net);
}
/*
* Timeout function
*/
static void
devolo_tx_timeout (struct net_device *net)
{
devoloUSB_t * devolo = net->priv;
if (!devolo)
return;
#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) && (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,14)))
devolo->tx_urb->transfer_flags |= URB_ASYNC_UNLINK;
#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
devolo->tx_urb->transfer_flags |= USB_ASYNC_UNLINK;
#endif
usb_unlink_urb (devolo->tx_urb);
/*
* Update stats
*/
devolo->stats.tx_errors++;
}
/*
* Function called when kernel need to transmit a packet
*/
static int
devolo_start_xmit (struct sk_buff *skb, struct net_device *net)
{
devoloUSB_t *devolo = net->priv;
int count = skb->len+2;
int res;
__u16 l16 = skb->len;
if (!(count % 64)){
count++;
l16++;
}
if (count < 64){
count=65;
l16=63;
}
/*
* Stop packet queue
*/
netif_stop_queue (net);
((unsigned char *) devolo->tx_buff)[0] = l16 & 0xFF;
((unsigned char *) devolo->tx_buff)[1] = (l16 & 0x700) >> 8;
memcpy (devolo->tx_buff+2, skb->data, skb->len);
FILL_BULK_URB (devolo->tx_urb, devolo->usb,
usb_sndbulkpipe (devolo->usb, 2), devolo->tx_buff,
count, devolo_write_bulk_callback, devolo);
/*
* Submit urb and update stats
*/
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
if ((res = usb_submit_urb (devolo->tx_urb,GFP_ATOMIC))){
#else
if ((res = usb_submit_urb (devolo->tx_urb))){
#endif
warn("failed tx_urb %d",res);
switch (res){
case -EPIPE:
/* stall or disconnect... cleanup should
already have been scheduled */
break;
case -ENODEV:
/* disconnect() upcoming */
break;
default:
devolo->stats.tx_errors++;
netif_start_queue (net);
}
}else{
devolo->stats.tx_packets++;
devolo->stats.tx_bytes += skb->len;
net->trans_start = jiffies;
}
dev_kfree_skb (skb);
return 0;
}
/*
* Function that manage stats of the device
*/
static struct net_device_stats *
devolo_netdev_stats (struct net_device *dev)
{
return &((devoloUSB_t *) dev->priv)->stats;
}
/*
* Function that convert hex value to decimal value
*/
static inline unsigned char hex2dec( unsigned char digit )
{
if ( (digit >= '0') && (digit <= '9') )
return (digit - '0');
if ( (digit >= 'a') && (digit <= 'f') )
return (digit - 'a' + 10);
if ( (digit >= 'A') && (digit <= 'F') )
return (digit - 'A' + 10);
return 16;
}
/*
* Function that fill MAC address
*/
static void set_ethernet_addr( devoloUSB_t *devolo)
{
int i;
int len;
unsigned char buffer[13];
unsigned char mac_addr[6];
len = usb_string(devolo->usb, 3, buffer, 13);
if (len != 12) {
printk(KERN_ERR "Attempting to get MAC address returned %d bytes\n", len);
return;
}
/*
* Fill in the mac_addr
*/
for (i = 0; i < 6; i++){
mac_addr[i] = ( hex2dec( buffer[2 * i] ) << 4 ) + hex2dec( buffer[2 * i + 1] );
}
/*
* Now copy into the kernel's network driver.
*/
memcpy(devolo->net->dev_addr, mac_addr, SIZEOF_MAC);
}
/*
* Open function called every time you plug a device
*/
static int
devolo_open (struct net_device *net)
{
devoloUSB_t *devolo = (devoloUSB_t *) net->priv;
int res;
// set_ethernet_addr(devolo);
devolo->flags &= ~DEVOLO_RX_BUSY;
FILL_BULK_URB (devolo->rx_urb, devolo->usb,
usb_rcvbulkpipe (devolo->usb, 1),
devolo->rx_buff, DEVOLO_MAX_MTU,
devolo_read_bulk_callback,devolo);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
if ((res = usb_submit_urb (devolo->rx_urb,GFP_KERNEL/*GFP_ATOMIC??*/)))
#else
if ((res = usb_submit_urb (devolo->rx_urb)))
#endif
{
printk(KERN_ERR "Failed rx_urb %d\n", res);
}
netif_start_queue (net);
devolo->flags |= DEVOLO_RUNNING;
return 0;
}
/*
* Close function called every time you unplug a device
*/
static int
devolo_close (struct net_device *net)
{
devoloUSB_t * devolo = net->priv;
devolo->flags &= ~DEVOLO_RUNNING;
netif_stop_queue (net);
usb_unlink_urb (devolo->rx_urb);
usb_unlink_urb (devolo->tx_urb);
usb_unlink_urb (devolo->ctrl_urb);
return 0;
}
/*
* Manager for ethernet ioctl
*/
static int
netdev_ethtool_ioctl (struct net_device *dev, void *useraddr)
{
u32 ethcmd;
if (copy_from_user (ðcmd, useraddr, sizeof (ethcmd)))
return -EFAULT;
switch (ethcmd)
{
case ETHTOOL_GDRVINFO:
{
struct ethtool_drvinfo info = { ETHTOOL_GDRVINFO };
strncpy (info.driver, "devolo", sizeof (info.driver) - 1);
if (copy_to_user (useraddr, &info, sizeof (info)))
return -EFAULT;
return 0;
}
}
return -EOPNOTSUPP;
}
static int read_mii_word( devoloUSB_t *devolo, __u8 phy, __u8 indx, __u16 *regd ){
return 0;
}
static int write_mii_word( devoloUSB_t *devolo, __u8 phy, __u8 indx, __u16 regd ){
return 0;
}
/*
* Function that manage standard ioctl system calls
*/
static int
devolo_ioctl (struct net_device *net, struct ifreq *rq, int cmd)
{
__u16 *data = (__u16 *) & rq->ifr_data;
devoloUSB_t *devolo = net->priv;
switch (cmd)
{
case SIOCETHTOOL:
return netdev_ethtool_ioctl (net, (void *) rq->ifr_data);
case SIOCDEVPRIVATE:
data[0] = devolo->phy;
case SIOCDEVPRIVATE + 1:
read_mii_word (devolo, data[0], data[1] & 0x1f, &data[3]);
return 0;
case SIOCDEVPRIVATE + 2:
if (!capable (CAP_NET_ADMIN))
return -EPERM;
write_mii_word (devolo, devolo->phy, data[1] & 0x1f, data[2]);
return 0;
default:
return -EOPNOTSUPP;
}
}
/*
* Function for multicast set
*/
static void
devolo_set_multicast (struct net_device *net)
{
devoloUSB_t *devolo = net->priv;
/*
* Stop packet queue
*/
netif_stop_queue (net);
if (net->flags & IFF_PROMISC)
printk(KERN_INFO "%s: Promiscuous mode enabled\n", net->name);
else if ((net->mc_count > multicast_filter_limit) ||
(net->flags & IFF_ALLMULTI))
printk(KERN_INFO "%s set allmulti\n", net->name);
devolo->flags |= ETH_REGS_CHANGE;
ctrl_callback (devolo->ctrl_urb);
/*
* Restart packet queue
*/
netif_wake_queue (net);
}
/*
* Function that allocate, initialize
* and register a new device
*/
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
static int
devolo_probe (struct usb_interface* intf,
const struct usb_device_id *id)
{
struct usb_device *dev=interface_to_usbdev(intf);
#else
static void *
devolo_probe (struct usb_device *dev, unsigned int ifnum,
const struct usb_device_id *id)
{
#endif
struct net_device *net;
devoloUSB_t *devolo;
int dev_index = 0;
int err;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
if (usb_reset_configuration (dev))
#else
if (usb_set_configuration (dev, dev->config[0].bConfigurationValue))
#endif
{
printk(KERN_ERR "usb_set_configuration failed\n");
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
return -ENODEV;
#else
return NULL;
#endif
}
if (!(devolo = kmalloc (sizeof (struct devoloUSB), GFP_KERNEL)))
{
printk(KERN_ERR "Out of memory allocating device structure\n");
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
return -ENOMEM;
#else
return NULL;
#endif
}
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
usb_get_dev(dev);
#else
usb_inc_dev_use (dev);
#endif
memset (devolo, 0, sizeof (struct devoloUSB));
devolo->dev_index = dev_index;
init_waitqueue_head (&devolo->ctrl_wait);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
devolo->ctrl_urb=usb_alloc_urb(0,GFP_KERNEL);
if(!devolo->ctrl_urb) return -ENOMEM;
devolo->rx_urb=usb_alloc_urb(0,GFP_KERNEL);
if(!devolo->rx_urb) {
usb_free_urb(devolo->ctrl_urb);
return -ENOMEM;
}
devolo->tx_urb=usb_alloc_urb(0,GFP_KERNEL);
if(!devolo->tx_urb) {
usb_free_urb(devolo->ctrl_urb);
usb_free_urb(devolo->rx_urb);
return -ENOMEM;
}
devolo->intr_urb=usb_alloc_urb(0,GFP_KERNEL);
if(!devolo->intr_urb) {
usb_free_urb(devolo->ctrl_urb);
usb_free_urb(devolo->rx_urb);
usb_free_urb(devolo->tx_urb);
return -ENOMEM;
}
#else
devolo->ctrl_urb=usb_alloc_urb(0);
devolo->rx_urb=usb_alloc_urb(0);
devolo->tx_urb=usb_alloc_urb(0);
devolo->intr_urb=usb_alloc_urb(0);
#endif
/*
* Allocate a device
*/
net = alloc_etherdev(NET_SIZE_OF_PRIV);
if(net==NULL)
{
usb_free_urb(devolo->ctrl_urb);
usb_free_urb(devolo->rx_urb);
usb_free_urb(devolo->tx_urb);
usb_free_urb(devolo->intr_urb);
kfree (devolo);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
return -ENOMEM;
#else
return NULL;
#endif
}
/*
* Allocate a name
*/
strcpy(net->name, DEVICE_NAME_MASK);
if (dev_alloc_name(net, DEVICE_NAME_MASK)<0) {
usb_free_urb(devolo->ctrl_urb);
usb_free_urb(devolo->rx_urb);
usb_free_urb(devolo->tx_urb);
usb_free_urb(devolo->intr_urb);
kfree(net);
kfree (devolo);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
return -ENOMEM;
#else
return NULL;
#endif
}
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
init_etherdev (net, NET_SIZE_OF_PRIV);
#endif
/*
* Register the device
*/
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
rtnl_lock();
err = register_netdevice(net);
rtnl_unlock();
if (err < 0)
{
usb_free_urb(devolo->ctrl_urb);
usb_free_urb(devolo->rx_urb);
usb_free_urb(devolo->tx_urb);
usb_free_urb(devolo->intr_urb);
kfree(net);
kfree(devolo);
net = NULL;
return NULL;
}
#endif
/*
* Implement operations needed by the device
*/
ether_setup (net);
devolo->usb = dev;
devolo->net = net;
SET_MODULE_OWNER (net);
net->priv = devolo;
net->open = devolo_open;
net->stop = devolo_close;
net->watchdog_timeo = DEVOLO_TX_TIMEOUT;
net->tx_timeout = devolo_tx_timeout;
net->do_ioctl = devolo_ioctl;
net->hard_start_xmit = devolo_start_xmit;
net->set_multicast_list = devolo_set_multicast;
net->get_stats = devolo_netdev_stats;
net->mtu = DEVOLO_MTU;
devolo->phy = 1;
set_ethernet_addr(devolo);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
usb_set_intfdata(intf, devolo);
SET_NETDEV_DEV(net, &intf->dev);
rtnl_lock();
err = register_netdevice(net);
rtnl_unlock();
return 0;
#else
return devolo;
#endif
}
/*
* Function that free all allocated resource
*/
static void
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
devolo_disconnect (struct usb_interface* intf){
struct devoloUSB *devoloUSB = usb_get_intfdata(intf);
struct usb_device *dev=interface_to_usbdev(intf);
#else
devolo_disconnect (struct usb_device *dev, void *ptr){
struct devoloUSB *devoloUSB = ptr;
#endif
if (!devoloUSB)
{
printk(KERN_ERR "Unregistering non-existant device\n");
return;
}
devoloUSB->flags |= DEVOLO_UNPLUG;
unregister_netdev (devoloUSB->net);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
usb_put_dev(dev);
#else
usb_dec_dev_use (dev);
#endif
usb_free_urb(devoloUSB->rx_urb);
usb_free_urb(devoloUSB->tx_urb);
usb_free_urb(devoloUSB->intr_urb);
usb_free_urb(devoloUSB->ctrl_urb);
kfree (devoloUSB->net);
kfree (devoloUSB);
devoloUSB = NULL;
}
/*
* Structure needed to register our objects
* and find our hardware device
*/
static struct usb_driver devolo_driver = {
name:"devolo",
probe:devolo_probe,
disconnect:devolo_disconnect,
id_table:plUsb_ids,
};
int __init
devolo_init (void)
{
printk (KERN_INFO DRIVER_DESC ":" DRIVER_VERSION "\n");
/* char usbmgr[9]={0}; */
#ifdef USBMGR
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
#define usbmgr USBMGR"_hcd"
/* sprintf(usbmgr,"%s_hcd",USBMGR); */
#else
#define usbmgr "usb-"USBMGR
/* sprintf(usbmgr,"usb-%s",USBMGR); */
#endif
request_module(usbmgr);
#endif
return usb_register (&devolo_driver);
}
void __exit
devolo_exit (void)
{
usb_deregister (&devolo_driver);
}
module_init (devolo_init);
module_exit (devolo_exit);
[-- Attachment #1.4: make_1.txt --]
[-- Type: text/plain, Size: 1570 bytes --]
making all in tool
make[1]: Entering directory `/home/dsl/dLAN-linux-package-v3/tool'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/dsl/dLAN-linux-package-v3/tool'
making all in driver
make[1]: Entering directory `/home/dsl/dLAN-linux-package-v3/driver'
./kerneldir.sh /lib/modules/2.6.21-gentoo-r3/build
make[2]: Entering directory `/usr/src/linux-2.6.21-gentoo-r3'
CC [M] /home/dsl/dLAN-linux-package-v3/driver/devolo_usb.o
/home/dsl/dLAN-linux-package-v3/driver/devolo_usb.c:22:26: error: linux/config.h: No such file or directory
/home/dsl/dLAN-linux-package-v3/driver/devolo_usb.c: In function 'devolo_read_bulk_callback':
/home/dsl/dLAN-linux-package-v3/driver/devolo_usb.c:153: warning: passing argument 6 of 'usb_fill_bulk_urb' from incompatible pointer type
/home/dsl/dLAN-linux-package-v3/driver/devolo_usb.c: In function 'devolo_start_xmit':
/home/dsl/dLAN-linux-package-v3/driver/devolo_usb.c:249: warning: passing argument 6 of 'usb_fill_bulk_urb' from incompatible pointer type
/home/dsl/dLAN-linux-package-v3/driver/devolo_usb.c: In function 'devolo_open':
/home/dsl/dLAN-linux-package-v3/driver/devolo_usb.c:358: warning: passing argument 6 of 'usb_fill_bulk_urb' from incompatible pointer type
make[3]: *** [/home/dsl/dLAN-linux-package-v3/driver/devolo_usb.o] Error 1
make[2]: *** [_module_/home/dsl/dLAN-linux-package-v3/driver] Error 2
make[2]: Leaving directory `/usr/src/linux-2.6.21-gentoo-r3'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/home/dsl/dLAN-linux-package-v3/driver'
make: *** [all] Error 2
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [gentoo-user] Problem with open source driver Devolo dLAN USB
2007-06-25 13:53 [gentoo-user] Problem with open source driver Devolo dLAN USB Florian Philipp
@ 2007-06-25 15:23 ` Alex Schuster
2007-06-25 15:37 ` Florian Philipp
0 siblings, 1 reply; 12+ messages in thread
From: Alex Schuster @ 2007-06-25 15:23 UTC (permalink / raw
To: gentoo-user
Florian Philipp writes:
[...]
> #include </usr/include/linux/config.h>
[...]
> making all in tool
> make[1]: Entering directory `/home/dsl/dLAN-linux-package-v3/tool'
> make[1]: Nothing to be done for `all'.
> make[1]: Leaving directory `/home/dsl/dLAN-linux-package-v3/tool'
> making all in driver
> make[1]: Entering directory `/home/dsl/dLAN-linux-package-v3/driver'
> ./kerneldir.sh /lib/modules/2.6.21-gentoo-r3/build
> make[2]: Entering directory `/usr/src/linux-2.6.21-gentoo-r3'
> CC [M] /home/dsl/dLAN-linux-package-v3/driver/devolo_usb.o
> /home/dsl/dLAN-linux-package-v3/driver/devolo_usb.c:22:26: error: linux/config.h: No such file or directory
[..]
The missing config.h belongs to the linux-headers package. I thought it
needs to be installed on any gentoo system, did you remove it?
Try "emerge linux-headers". The source compiles fine on my system.
Alex
--
gentoo-user@gentoo.org mailing list
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [gentoo-user] Problem with open source driver Devolo dLAN USB
2007-06-25 15:23 ` Alex Schuster
@ 2007-06-25 15:37 ` Florian Philipp
2007-06-25 16:01 ` Florian Philipp
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: Florian Philipp @ 2007-06-25 15:37 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 1199 bytes --]
Am Montag 25 Juni 2007 17:23 schrieb Alex Schuster:
> Florian Philipp writes:
>
> [...]
>
> > #include </usr/include/linux/config.h>
>
> [...]
>
> > making all in tool
> > make[1]: Entering directory `/home/dsl/dLAN-linux-package-v3/tool'
> > make[1]: Nothing to be done for `all'.
> > make[1]: Leaving directory `/home/dsl/dLAN-linux-package-v3/tool'
> > making all in driver
> > make[1]: Entering directory `/home/dsl/dLAN-linux-package-v3/driver'
> > ./kerneldir.sh /lib/modules/2.6.21-gentoo-r3/build
> > make[2]: Entering directory `/usr/src/linux-2.6.21-gentoo-r3'
> > CC [M] /home/dsl/dLAN-linux-package-v3/driver/devolo_usb.o
> > /home/dsl/dLAN-linux-package-v3/driver/devolo_usb.c:22:26: error:
> > linux/config.h: No such file or directory
>
> [..]
>
> The missing config.h belongs to the linux-headers package. I thought it
> needs to be installed on any gentoo system, did you remove it?
> Try "emerge linux-headers". The source compiles fine on my system.
>
> Alex
2.6.17-r2 is the latest stable version and is installed...
I'll try 2.6.21 with the gcc64 useflag which is currently disabled (seems to
date back to 2006.1)
Thanks for the hint!
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [gentoo-user] Problem with open source driver Devolo dLAN USB
2007-06-25 15:37 ` Florian Philipp
@ 2007-06-25 16:01 ` Florian Philipp
2007-06-25 21:52 ` Alex Schuster
` (2 subsequent siblings)
3 siblings, 0 replies; 12+ messages in thread
From: Florian Philipp @ 2007-06-25 16:01 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 1344 bytes --]
Am Montag 25 Juni 2007 17:37 schrieb Florian Philipp:
> Am Montag 25 Juni 2007 17:23 schrieb Alex Schuster:
> > Florian Philipp writes:
> >
> > [...]
> >
> > > #include </usr/include/linux/config.h>
> >
> > [...]
> >
> > > making all in tool
> > > make[1]: Entering directory `/home/dsl/dLAN-linux-package-v3/tool'
> > > make[1]: Nothing to be done for `all'.
> > > make[1]: Leaving directory `/home/dsl/dLAN-linux-package-v3/tool'
> > > making all in driver
> > > make[1]: Entering directory `/home/dsl/dLAN-linux-package-v3/driver'
> > > ./kerneldir.sh /lib/modules/2.6.21-gentoo-r3/build
> > > make[2]: Entering directory `/usr/src/linux-2.6.21-gentoo-r3'
> > > CC [M] /home/dsl/dLAN-linux-package-v3/driver/devolo_usb.o
> > > /home/dsl/dLAN-linux-package-v3/driver/devolo_usb.c:22:26: error:
> > > linux/config.h: No such file or directory
> >
> > [..]
> >
> > The missing config.h belongs to the linux-headers package. I thought it
> > needs to be installed on any gentoo system, did you remove it?
> > Try "emerge linux-headers". The source compiles fine on my system.
> >
> > Alex
>
> 2.6.17-r2 is the latest stable version and is installed...
>
> I'll try 2.6.21 with the gcc64 useflag which is currently disabled (seems
> to date back to 2006.1)
>
> Thanks for the hint!
No, did not change anything. Still the same make output...
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [gentoo-user] Problem with open source driver Devolo dLAN USB
2007-06-25 15:37 ` Florian Philipp
2007-06-25 16:01 ` Florian Philipp
@ 2007-06-25 21:52 ` Alex Schuster
2007-06-26 10:07 ` Florian Philipp
2007-06-26 6:56 ` [gentoo-user] " Alexander Skwar
2007-06-26 7:07 ` [gentoo-user] " Mick
3 siblings, 1 reply; 12+ messages in thread
From: Alex Schuster @ 2007-06-25 21:52 UTC (permalink / raw
To: gentoo-user
I am confused now. I tried another system, and get the same error as you.
But my source of devolo_usb.c looks different from yours.
Florian Philipp writes:
> Am Montag 25 Juni 2007 17:23 schrieb Alex Schuster:
> > Florian Philipp writes:
> >
> > [...]
> >
> > > #include </usr/include/linux/config.h>
Here I have the same include files, but with a local path (linux) instead
of /usr/include/linux:
#include <linux/config.h>
While I do have /usr/include/linux/config.h, it is not being used. I
have /usr/src/linux/include/linux/config.h on one machine, but not on the
other, where compiling fails. Both machines use gentoo-sources. 2.6.18-r2
has it, 2.6.20-r7 does not. Seems it has become obslete, a comment in the
file states this, too. Anyway, it seems to be the same
as /usr/include/linux/config.h, so can just copy or symlink this one.
#ifndef _LINUX_CONFIG_H
#define _LINUX_CONFIG_H
/* This file is no longer in use and kept only for backward compatibility.
* autoconf.h is now included via -imacros on the commandline
*/
#include <linux/autoconf.h>
#endif
Alex
--
gentoo-user@gentoo.org mailing list
^ permalink raw reply [flat|nested] 12+ messages in thread
* [gentoo-user] Re: Problem with open source driver Devolo dLAN USB
2007-06-25 15:37 ` Florian Philipp
2007-06-25 16:01 ` Florian Philipp
2007-06-25 21:52 ` Alex Schuster
@ 2007-06-26 6:56 ` Alexander Skwar
2007-06-26 10:09 ` Florian Philipp
2007-06-26 7:07 ` [gentoo-user] " Mick
3 siblings, 1 reply; 12+ messages in thread
From: Alexander Skwar @ 2007-06-26 6:56 UTC (permalink / raw
To: gentoo-user
Florian Philipp <f.philipp@addcom.de> wrote:
> 2.6.17-r2 is the latest stable version and is installed...
Hm. Maybe you need to compile the kernel first?
Alexander Skwar
--
gentoo-user@gentoo.org mailing list
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [gentoo-user] Problem with open source driver Devolo dLAN USB
2007-06-25 15:37 ` Florian Philipp
` (2 preceding siblings ...)
2007-06-26 6:56 ` [gentoo-user] " Alexander Skwar
@ 2007-06-26 7:07 ` Mick
2007-06-26 10:21 ` [gentoo-user] Problem with open source driver Devolo dLAN USB [SOLVED] Florian Philipp
3 siblings, 1 reply; 12+ messages in thread
From: Mick @ 2007-06-26 7:07 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 740 bytes --]
On Monday 25 June 2007 16:37, Florian Philipp wrote:
> Am Montag 25 Juni 2007 17:23 schrieb Alex Schuster:
> > The missing config.h belongs to the linux-headers package. I thought it
> > needs to be installed on any gentoo system, did you remove it?
> > Try "emerge linux-headers". The source compiles fine on my system.
> >
> > Alex
>
> 2.6.17-r2 is the latest stable version and is installed...
This is what equery shows me:
sys-kernel/linux-headers-2.6.17-r2 (/usr/include/linux/config.h)
So I assume that emerging these headers will sort it out for you. The access
rights are:
-rw-r--r-- 1 root root 225 Dec 4 2006 /usr/include/linux/config.h
(this is on a x86 32bit system)
HTH.
--
Regards,
Mick
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [gentoo-user] Problem with open source driver Devolo dLAN USB
2007-06-25 21:52 ` Alex Schuster
@ 2007-06-26 10:07 ` Florian Philipp
2007-06-26 16:23 ` Alex Schuster
0 siblings, 1 reply; 12+ messages in thread
From: Florian Philipp @ 2007-06-26 10:07 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 1649 bytes --]
Am Montag 25 Juni 2007 23:52 schrieb Alex Schuster:
> I am confused now. I tried another system, and get the same error as you.
> But my source of devolo_usb.c looks different from yours.
>
> Florian Philipp writes:
> > Am Montag 25 Juni 2007 17:23 schrieb Alex Schuster:
> > > Florian Philipp writes:
> > >
> > > [...]
> > >
> > > > #include </usr/include/linux/config.h>
>
> Here I have the same include files, but with a local path (linux) instead
> of /usr/include/linux:
>
> #include <linux/config.h>
>
> While I do have /usr/include/linux/config.h, it is not being used. I
> have /usr/src/linux/include/linux/config.h on one machine, but not on the
> other, where compiling fails. Both machines use gentoo-sources. 2.6.18-r2
> has it, 2.6.20-r7 does not. Seems it has become obslete, a comment in the
> file states this, too. Anyway, it seems to be the same
> as /usr/include/linux/config.h, so can just copy or symlink this one.
>
> #ifndef _LINUX_CONFIG_H
> #define _LINUX_CONFIG_H
> /* This file is no longer in use and kept only for backward compatibility.
> * autoconf.h is now included via -imacros on the commandline
> */
> #include <linux/autoconf.h>
>
> #endif
>
> Alex
Ooops, seems I've attached the wrong file. I played around with it before
sending an email. Just remove the "/usr/include" in every include command and
you get the original.
Anyway, it doesn't make things better. If I change the include line to
linux/autoconf.h, the other errors do not disappear.
For me it seems like the shared libraries are not compatible any longer.
Something in usb_fill_bulk_urb changed.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [gentoo-user] Re: Problem with open source driver Devolo dLAN USB
2007-06-26 6:56 ` [gentoo-user] " Alexander Skwar
@ 2007-06-26 10:09 ` Florian Philipp
0 siblings, 0 replies; 12+ messages in thread
From: Florian Philipp @ 2007-06-26 10:09 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 375 bytes --]
Am Dienstag 26 Juni 2007 08:56 schrieb Alexander Skwar:
> Florian Philipp <f.philipp@addcom.de> wrote:
> > 2.6.17-r2 is the latest stable version and is installed...
>
> Hm. Maybe you need to compile the kernel first?
>
> Alexander Skwar
As far as I know, kernel headers and the kernel itself do not need to be of
the same version, they are completely unrelated.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [gentoo-user] Problem with open source driver Devolo dLAN USB [SOLVED]
2007-06-26 7:07 ` [gentoo-user] " Mick
@ 2007-06-26 10:21 ` Florian Philipp
0 siblings, 0 replies; 12+ messages in thread
From: Florian Philipp @ 2007-06-26 10:21 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 1107 bytes --]
Am Dienstag 26 Juni 2007 09:07 schrieb Mick:
> On Monday 25 June 2007 16:37, Florian Philipp wrote:
> > Am Montag 25 Juni 2007 17:23 schrieb Alex Schuster:
> > > The missing config.h belongs to the linux-headers package. I thought it
> > > needs to be installed on any gentoo system, did you remove it?
> > > Try "emerge linux-headers". The source compiles fine on my system.
> > >
> > > Alex
> >
> > 2.6.17-r2 is the latest stable version and is installed...
>
> This is what equery shows me:
>
> sys-kernel/linux-headers-2.6.17-r2 (/usr/include/linux/config.h)
>
> So I assume that emerging these headers will sort it out for you. The
> access rights are:
>
> -rw-r--r-- 1 root root 225 Dec 4 2006 /usr/include/linux/config.h
>
> (this is on a x86 32bit system)
>
> HTH.
Success!
I don't understand it but it works now. I've switched back to
linux-headers-2.6.17-r2 and suddenly it compiles.
I don't understand it because I had them installed while compiling the first
few times. Maybe they had to be compiled with the current version of gcc...
Thanks everyone!
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [gentoo-user] Problem with open source driver Devolo dLAN USB
2007-06-26 10:07 ` Florian Philipp
@ 2007-06-26 16:23 ` Alex Schuster
2007-06-27 11:55 ` Florian Philipp
0 siblings, 1 reply; 12+ messages in thread
From: Alex Schuster @ 2007-06-26 16:23 UTC (permalink / raw
To: gentoo-user
Florian Philipp writes:
> > While I do have /usr/include/linux/config.h, it is not being used. I
> > have /usr/src/linux/include/linux/config.h on one machine, but not on
> > the other, where compiling fails. Both machines use gentoo-sources.
> > 2.6.18-r2 has it, 2.6.20-r7 does not. Seems it has become obslete, a
> > comment in the file states this, too. Anyway, it seems to be the same
> > as /usr/include/linux/config.h, so can just copy or symlink this one.
> Anyway, it doesn't make things better. If I change the include line to
> linux/autoconf.h, the other errors do not disappear.
Aren't these errors warnings only? I get them, too, but I guess they don't
matter.
I just compiled the code after replacing linux/config.h by linux/autoconf.h,
except for the warnings all seems to be fine, I can insmod the
devolo_usb.ko module.
Glad you had success, but at some time you will probably need a newer
kernel...
Alex
--
gentoo-user@gentoo.org mailing list
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [gentoo-user] Problem with open source driver Devolo dLAN USB
2007-06-26 16:23 ` Alex Schuster
@ 2007-06-27 11:55 ` Florian Philipp
0 siblings, 0 replies; 12+ messages in thread
From: Florian Philipp @ 2007-06-27 11:55 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 1391 bytes --]
Am Dienstag 26 Juni 2007 18:23 schrieb Alex Schuster:
> Florian Philipp writes:
> > > While I do have /usr/include/linux/config.h, it is not being used. I
> > > have /usr/src/linux/include/linux/config.h on one machine, but not on
> > > the other, where compiling fails. Both machines use gentoo-sources.
> > > 2.6.18-r2 has it, 2.6.20-r7 does not. Seems it has become obslete, a
> > > comment in the file states this, too. Anyway, it seems to be the same
> > > as /usr/include/linux/config.h, so can just copy or symlink this one.
> >
> > Anyway, it doesn't make things better. If I change the include line to
> > linux/autoconf.h, the other errors do not disappear.
>
> Aren't these errors warnings only? I get them, too, but I guess they don't
> matter.
>
> I just compiled the code after replacing linux/config.h by
> linux/autoconf.h, except for the warnings all seems to be fine, I can
> insmod the
> devolo_usb.ko module.
>
> Glad you had success, but at some time you will probably need a newer
> kernel...
>
> Alex
You mean kernel-header (or linux-header), I presume.
Anyway, I'll write an email to Devolo and if they do not react ... well, I
hope I'll know how to rewrite the driver in half a year :)
By the way, did you notice the warnings that GPL'ed functions are used in this
driver although it is under another licence? Is that allowed?
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2007-06-27 12:02 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-25 13:53 [gentoo-user] Problem with open source driver Devolo dLAN USB Florian Philipp
2007-06-25 15:23 ` Alex Schuster
2007-06-25 15:37 ` Florian Philipp
2007-06-25 16:01 ` Florian Philipp
2007-06-25 21:52 ` Alex Schuster
2007-06-26 10:07 ` Florian Philipp
2007-06-26 16:23 ` Alex Schuster
2007-06-27 11:55 ` Florian Philipp
2007-06-26 6:56 ` [gentoo-user] " Alexander Skwar
2007-06-26 10:09 ` Florian Philipp
2007-06-26 7:07 ` [gentoo-user] " Mick
2007-06-26 10:21 ` [gentoo-user] Problem with open source driver Devolo dLAN USB [SOLVED] Florian Philipp
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox