[iproute PATCH] utils.h: provide fallback CLOCK_TAI definition

2018-10-27 Thread Peter Korsgaard
q_{etf,taprio}.c uses CLOCK_TAI, which isn't exposed by glibc < 2.21 or
uClibc, breaking the build. Provide a fallback definition like it is done
for IPPROTO_MPLS and others.

Signed-off-by: Peter Korsgaard 
---
 include/utils.h | 4 
 1 file changed, 4 insertions(+)

diff --git a/include/utils.h b/include/utils.h
index 258d630e..685d2c1d 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -126,6 +126,10 @@ struct ipx_addr {
 #define IPPROTO_MPLS   137
 #endif
 
+#ifndef CLOCK_TAI
+# define CLOCK_TAI 11
+#endif
+
 __u32 get_addr32(const char *name);
 int get_addr_1(inet_prefix *dst, const char *arg, int family);
 int get_prefix_1(inet_prefix *dst, char *arg, int family);
-- 
2.11.0



Re: [linux-sunxi] [PATCH 03/21] net-next: stmmac: add optional setup function

2017-02-16 Thread Peter Korsgaard
>>>>> "Corentin" == Corentin Labbe <clabbe.montj...@gmail.com> writes:

 > Instead of ading more ifthen login for adding a new mac_device_info

s/login/logic/

-- 
Bye, Peter Korsgaard


Re: am335x: no multicast reception over VLAN

2016-03-30 Thread Peter Korsgaard
>>>>> "Mugunthan" == Mugunthan V N <mugunthan...@ti.com> writes:

Hi,

 > You had received these packets as tcpdump will enable promiscuous mode
 > so that you receive all the packets from the wire.

FYI, you can use the -p option to tcpdump to not put the interface into
promiscuous mode.

-- 
Bye, Peter Korsgaard


Re: [PATCH 1/3] dm9601: enable EP3 interrupt

2016-03-10 Thread Peter Korsgaard
>>>>> "Joseph" == Joseph CHANG <josright...@gmail.com> writes:

 > Enable chip's EP3 interrupt to get the link-up notify soon
 > immediately.

Sorry, what do you mean about 'soon immediately'?

 > +
 > +/* Always return 8-bytes data to host per interrupt-interval */
 > +dm_write_reg(dev, DM_USB_CTRL, USB_CTRL_EP3ACK);

Why would we want to do that instead of the current setup that afaik
only returns data when the link status changes?

-- 
Bye, Peter Korsgaard


Re: [PATCH 2/3] dm9601: manage eeprom to assure the chip for correct operation

2016-03-10 Thread Peter Korsgaard
>>>>> "Joseph" == Joseph CHANG <josright...@gmail.com> writes:

 > Add to maintain variant eeprom adapters which may have not right
 > dm962x's format.

 > Signed-off-by: Joseph CHANG <josright...@gmail.com>

> +static void dm_render_begin(struct usbnet *dev)
 > +{
 > +/* Render eeprom if need, WORD3 render, set D[15:14] 01b */
 > +dm_eeprom_render(dev, 3, 0x4000, 0xc000);
 > +/* Render eeprom if need, WORD7 render, clear D[10] */
 > +dm_eeprom_render(dev, 7, 0x, 0x0400);
 > +/* Render eeprom if need, WORD11 render, need 0x005a */
 > +dm_eeprom_render(dev, 11, 0x005a, 0x);
 > +/* Render eeprom if need, WORD12 render, need 0x0007 */
 > +dm_eeprom_render(dev, 12, DM_EP3I_VAL, 0x);

With render I guess you mean something like fixup? I'm not sure we want
to do this automatically without an explicit action from the user.

How common are these adapters without valid eeprom? What happens if the
eeprom content isn't fixed?

Do we need to reset the device once the eeprom is updated?

-- 
Bye, Peter Korsgaard


Re: [PATCH 1/1] dm9601: enable EP3 interrupt and enhance eeprom functions

2016-03-09 Thread Peter Korsgaard
>>>>> "Joseph" == Joseph CHANG <josright...@gmail.com> writes:

Hi Joseph,

 > Enable chip's EP3 interrupt to get the link-up notify soon
 > immediately.

 > Add to maintain variant eeprom adapters which may have not right
 > dm9620x's format.

 > Add function dm9601_set_eeprom which tested good with ethtool
 > utility.

Thanks for the patch. This sounds like 3 seperate changes, could you
please restructure it as 3 patches each doing one of the changes?

-- 
Bye, Peter Korsgaard


Re: [PATCH] usbnet: New driver for QinHeng CH9200 devices

2015-09-21 Thread Peter Korsgaard
On Mon, Sep 21, 2015 at 8:36 AM, Oliver Neukum <oneu...@suse.com> wrote:

> surprisingly nice for a vendor driver. It even covers endianness
> correctly. I'd say that the remaining issues will be easy to fix
> and that would be easier on a merged driver.

Agreed. It might be related to the fact that it seems to be based on
sr9700.c (which in term is largely derrived from dm9601.c) ;)

But that's fine.

-- 
Bye, Peter Korsgaard
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: DSA: phy polling

2015-09-15 Thread Peter Korsgaard
>>>>> "Florian" == Florian Fainelli <f.faine...@gmail.com> writes:

Hi,

 >> Does the Marvell phy have such a register?  Looking at the register
 >> dump and plugging/unplugging cables seems not to show a register
 >> reporting whether any particular interface has changed state, and
 >> I haven't noticed there being any combined register in anything I've
 >> seen on these switches.

 > It seemed to me like the PPU was meant to provide that, but I cannot
 > find any "summary" register which would give you such a status, must
 > have conflated that with what Broadcom switches support.

It's been some years, but I think the PPU was just to automatically
configure the switch MACs to to match the phy autonegotiation results.

I also don't see any summery register though.

-- 
Bye, Peter Korsgaard
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] New device for DM9601 usb net driver

2008-02-17 Thread Peter Korsgaard
 Peter == Peter Korsgaard [EMAIL PROTECTED] writes:

 Robert == Robert Brockway [EMAIL PROTECTED] writes:
 Robert Hi Peter.  I've verified that the Hirose USB-100 (0x0a47,
 Robert 0x9601) is a clone of the DAVICOM DM9601.  I patched dm9601.c
 Robert to identify this device and now have these in production.
 Robert Unified diff against 2.6.24 attached.

 Peter Thanks!

Could you resend with a proper Signed-off-by: line? (you can add my acked-by)

 Peter Acked-by: Peter Korsgaard [EMAIL PROTECTED]

-- 
Bye, Peter Korsgaard
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] New device for DM9601 usb net driver

2008-02-10 Thread Peter Korsgaard
 Robert == Robert Brockway [EMAIL PROTECTED] writes:

 Robert Hi Peter.  I've verified that the Hirose USB-100 (0x0a47,
 Robert 0x9601) is a clone of the DAVICOM DM9601.  I patched dm9601.c
 Robert to identify this device and now have these in production.
 Robert Unified diff against 2.6.24 attached.

Thanks!

Acked-by: Peter Korsgaard [EMAIL PROTECTED]

 Robert Cheers,

 Robert Rob

 Robert -- 
 Robert With sufficient thrust, pigs fly just fine...
 Robert-- RFC 1925 The Twelve Networking Truths

 Robert --- drivers/net/usb/dm9601.c.old   2008-01-27 00:51:50.0 
-0500
 Robert +++ drivers/net/usb/dm9601.c   2008-02-07 10:27:40.0 -0500
 Robert @@ -590,6 +590,10 @@ static const struct usb_device_id produc
 Robert USB_DEVICE(0x0a46, 0x8515),/* ADMtek ADM8515 USB NIC */
 Robert .driver_info = (unsigned long)dm9601_info,
 Robert },
 Robert +  {
 Robert +  USB_DEVICE(0x0a47, 0x9601),/* Hirose USB-100 */
 Robert +  .driver_info = (unsigned long)dm9601_info,
 Robert +  },
 Robert{}, // END
 Robert  };
 

-- 
Bye, Peter Korsgaard
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] SMC911X: Fix using of dereferenced skb after netif_rx

2007-12-04 Thread Peter Korsgaard
 Wang == Wang Chen [EMAIL PROTECTED] writes:

Hi,

  Why not simply update the stats before calling netif_rx as the return
  value isn't checked anyway?

 Wang Even the return value of netif_rx isn't checked, dev-stats maybe
 Wang changed in netif_rx. But fortunately dev-stats isn't changed in
 Wang netif_rx.
 Wang So, I agree. 
 Wang Here is the new patch.

Thanks.

 Wang Signed-off-by: Wang Chen [EMAIL PROTECTED]

Acked-by: Peter Korsgaard [EMAIL PROTECTED]

-- 
Bye, Peter Korsgaard
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] SMC911X: Fix using of dereferenced skb after netif_rx

2007-12-03 Thread Peter Korsgaard
 Wang == Wang Chen [EMAIL PROTECTED] writes:

Hi,

 Wang +len = skb-len;
 Wang  netif_rx(skb);
 dev- stats.rx_packets++;
 Wang -dev-stats.rx_bytes += skb-len;
 Wang +dev-stats.rx_bytes += len;

Why not simply update the stats before calling netif_rx as the return
value isn't checked anyway?

-- 
Bye, Peter Korsgaard
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] smc911x: Fix multicast handling

2007-11-22 Thread Peter Korsgaard
smc911x_set_multicast_list fails to fill out the multicast hash table
correctly; Bit 1 was used rather than bit 5 to decide if the lower or
upper register should be used.

The function is at the same time cleaned up by calling ether_crc rather
than using it's own bit reversal table.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]
---
 drivers/net/smc911x.c |   17 -
 1 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c
index dd18af0..b6c6c99 100644
--- a/drivers/net/smc911x.c
+++ b/drivers/net/smc911x.c
@@ -1379,13 +1379,6 @@ static void smc911x_set_multicast_list(struct net_device 
*dev)
unsigned int multicast_table[2];
unsigned int mcr, update_multicast = 0;
unsigned long flags;
-   /* table for flipping the order of 5 bits */
-   static const unsigned char invert5[] =
-   {0x00, 0x10, 0x08, 0x18, 0x04, 0x14, 0x0C, 0x1C,
-0x02, 0x12, 0x0A, 0x1A, 0x06, 0x16, 0x0E, 0x1E,
-0x01, 0x11, 0x09, 0x19, 0x05, 0x15, 0x0D, 0x1D,
-0x03, 0x13, 0x0B, 0x1B, 0x07, 0x17, 0x0F, 0x1F};
-
 
DBG(SMC_DEBUG_FUNC, %s: -- %s\n, dev-name, __FUNCTION__);
 
@@ -1432,7 +1425,7 @@ static void smc911x_set_multicast_list(struct net_device 
*dev)
 
cur_addr = dev-mc_list;
for (i = 0; i  dev-mc_count; i++, cur_addr = cur_addr-next) {
-   int position;
+   u32 position;
 
/* do we have a pointer here? */
if (!cur_addr)
@@ -1442,12 +1435,10 @@ static void smc911x_set_multicast_list(struct 
net_device *dev)
if (!(*cur_addr-dmi_addr  1))
 continue;
 
-   /* only use the low order bits */
-   position = crc32_le(~0, cur_addr-dmi_addr, 6)  0x3f;
+   /* upper 6 bits are used as hash index */
+   position = ether_crc(ETH_ALEN, cur_addr-dmi_addr)26;
 
-   /* do some messy swapping to put the bit in the right 
spot */
-   multicast_table[invert5[position0x1F]0x1] |=
-   (1invert5[(position1)0x1F]);
+   multicast_table[position5] |= 1  (position0x1f);
}
 
/* be sure I get rid of flags I might have set */
-- 
1.5.3.5

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] smc911x: Fix unused variable warning.

2007-11-21 Thread Peter Korsgaard
The smc911x_local pointer in smc911x_rcv is only used in the SMC_USE_DMA
case. Move it under the #ifdef so GCC doesn't generate a warning in the
non-DMA case.
---
 drivers/net/smc911x.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c
index dd18af0..69a78b3 100644
--- a/drivers/net/smc911x.c
+++ b/drivers/net/smc911x.c
@@ -428,7 +428,6 @@ static inline void smc911x_drop_pkt(struct net_device *dev)
  */
 static inline void  smc911x_rcv(struct net_device *dev)
 {
-   struct smc911x_local *lp = netdev_priv(dev);
unsigned long ioaddr = dev-base_addr;
unsigned int pkt_len, status;
struct sk_buff *skb;
@@ -473,6 +472,7 @@ static inline void   smc911x_rcv(struct net_device *dev)
skb_put(skb,pkt_len-4);
 #ifdef SMC_USE_DMA
{
+   struct smc911x_local *lp = netdev_priv(dev);
unsigned int fifo;
/* Lower the FIFO threshold if possible */
fifo = SMC_GET_FIFO_INT();
-- 
1.5.3.4

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] smc911x: Fix undefined CONFIG_ symbol warning

2007-11-21 Thread Peter Korsgaard
elif defined(CONFIG_*) should be used instead of elif CONFIG_*
so GCC doesn't give warnings about undefined symbols when the config
option is disabled.
---
 drivers/net/smc911x.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/smc911x.h b/drivers/net/smc911x.h
index 16a0edc..d04e4fa 100644
--- a/drivers/net/smc911x.h
+++ b/drivers/net/smc911x.h
@@ -37,7 +37,7 @@
   #define SMC_USE_16BIT0
   #define SMC_USE_32BIT1
   #define SMC_IRQ_SENSEIRQF_TRIGGER_FALLING
-#elif CONFIG_SH_MAGIC_PANEL_R2
+#elif defined(CONFIG_SH_MAGIC_PANEL_R2)
   #define SMC_USE_SH_DMA   0
   #define SMC_USE_16BIT0
   #define SMC_USE_32BIT1
-- 
1.5.3.4

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] smc911x: Fix undefined CONFIG_ symbol warning

2007-11-21 Thread Peter Korsgaard
elif defined(CONFIG_*) should be used instead of elif CONFIG_*
so GCC doesn't give warnings about undefined symbols when the config
option is disabled.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]
---
Sigh, forgot --signoff :/

 drivers/net/smc911x.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/smc911x.h b/drivers/net/smc911x.h
index 16a0edc..d04e4fa 100644
--- a/drivers/net/smc911x.h
+++ b/drivers/net/smc911x.h
@@ -37,7 +37,7 @@
   #define SMC_USE_16BIT0
   #define SMC_USE_32BIT1
   #define SMC_IRQ_SENSEIRQF_TRIGGER_FALLING
-#elif CONFIG_SH_MAGIC_PANEL_R2
+#elif defined(CONFIG_SH_MAGIC_PANEL_R2)
   #define SMC_USE_SH_DMA   0
   #define SMC_USE_16BIT0
   #define SMC_USE_32BIT1
-- 
1.5.3.4

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] smc911x: Fix unused variable warning.

2007-11-21 Thread Peter Korsgaard
The smc911x_local pointer in smc911x_rcv is only used in the SMC_USE_DMA
case. Move it under the #ifdef so GCC doesn't generate a warning in the
non-DMA case.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]
---
 drivers/net/smc911x.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c
index dd18af0..69a78b3 100644
--- a/drivers/net/smc911x.c
+++ b/drivers/net/smc911x.c
@@ -428,7 +428,6 @@ static inline void smc911x_drop_pkt(struct net_device *dev)
  */
 static inline void  smc911x_rcv(struct net_device *dev)
 {
-   struct smc911x_local *lp = netdev_priv(dev);
unsigned long ioaddr = dev-base_addr;
unsigned int pkt_len, status;
struct sk_buff *skb;
@@ -473,6 +472,7 @@ static inline void   smc911x_rcv(struct net_device *dev)
skb_put(skb,pkt_len-4);
 #ifdef SMC_USE_DMA
{
+   struct smc911x_local *lp = netdev_priv(dev);
unsigned int fifo;
/* Lower the FIFO threshold if possible */
fifo = SMC_GET_FIFO_INT();
-- 
1.5.3.4

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] dm9601: Fix printk

2007-11-19 Thread Peter Korsgaard
A printk in the error handling code of dm9601.c was missing a newline.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]
---
 drivers/net/usb/dm9601.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/usb/dm9601.c b/drivers/net/usb/dm9601.c
index 2c68573..1ffdd10 100644
--- a/drivers/net/usb/dm9601.c
+++ b/drivers/net/usb/dm9601.c
@@ -94,7 +94,7 @@ static void dm_write_async_callback(struct urb *urb)
struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb-context;
 
if (urb-status  0)
-   printk(KERN_DEBUG dm_write_async_callback() failed with %d,
+   printk(KERN_DEBUG dm_write_async_callback() failed with %d\n,
   urb-status);
 
kfree(req);
-- 
1.5.3.4

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] dm9601: Consolidate common parts of dm_write_*_async

2007-11-19 Thread Peter Korsgaard
dm_write_async and dm_write_reg_async are almost identical.
Move common functionality to dm_write_async_helper (saves ~256b).

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]
---
 drivers/net/usb/dm9601.c |   53 +++--
 1 files changed, 13 insertions(+), 40 deletions(-)

diff --git a/drivers/net/usb/dm9601.c b/drivers/net/usb/dm9601.c
index 1ffdd10..633a511 100644
--- a/drivers/net/usb/dm9601.c
+++ b/drivers/net/usb/dm9601.c
@@ -101,17 +101,16 @@ static void dm_write_async_callback(struct urb *urb)
usb_free_urb(urb);
 }
 
-static void dm_write_async(struct usbnet *dev, u8 reg, u16 length, void *data)
+static void dm_write_async_helper(struct usbnet *dev, u8 reg, u8 value,
+ u16 length, void *data)
 {
struct usb_ctrlrequest *req;
struct urb *urb;
int status;
 
-   devdbg(dev, dm_write_async() reg=0x%02x length=%d, reg, length);
-
urb = usb_alloc_urb(0, GFP_ATOMIC);
if (!urb) {
-   deverr(dev, Error allocating URB in dm_write_async!);
+   deverr(dev, Error allocating URB in dm_write_async_helper!);
return;
}
 
@@ -123,8 +122,8 @@ static void dm_write_async(struct usbnet *dev, u8 reg, u16 
length, void *data)
}
 
req-bRequestType = USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE;
-   req-bRequest = DM_WRITE_REGS;
-   req-wValue = 0;
+   req-bRequest = length ? DM_WRITE_REGS : DM_WRITE_REG;
+   req-wValue = cpu_to_le16(value);
req-wIndex = cpu_to_le16(reg);
req-wLength = cpu_to_le16(length);
 
@@ -142,45 +141,19 @@ static void dm_write_async(struct usbnet *dev, u8 reg, 
u16 length, void *data)
}
 }
 
-static void dm_write_reg_async(struct usbnet *dev, u8 reg, u8 value)
+static void dm_write_async(struct usbnet *dev, u8 reg, u16 length, void *data)
 {
-   struct usb_ctrlrequest *req;
-   struct urb *urb;
-   int status;
+   devdbg(dev, dm_write_async() reg=0x%02x length=%d, reg, length);
 
+   dm_write_async_helper(dev, reg, 0, length, data);
+}
+
+static void dm_write_reg_async(struct usbnet *dev, u8 reg, u8 value)
+{
devdbg(dev, dm_write_reg_async() reg=0x%02x value=0x%02x,
   reg, value);
 
-   urb = usb_alloc_urb(0, GFP_ATOMIC);
-   if (!urb) {
-   deverr(dev, Error allocating URB in dm_write_async!);
-   return;
-   }
-
-   req = kmalloc(sizeof(struct usb_ctrlrequest), GFP_ATOMIC);
-   if (!req) {
-   deverr(dev, Failed to allocate memory for control request);
-   usb_free_urb(urb);
-   return;
-   }
-
-   req-bRequestType = USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE;
-   req-bRequest = DM_WRITE_REG;
-   req-wValue = cpu_to_le16(value);
-   req-wIndex = cpu_to_le16(reg);
-   req-wLength = 0;
-
-   usb_fill_control_urb(urb, dev-udev,
-usb_sndctrlpipe(dev-udev, 0),
-(void *)req, NULL, 0, dm_write_async_callback, 
req);
-
-   status = usb_submit_urb(urb, GFP_ATOMIC);
-   if (status  0) {
-   deverr(dev, Error submitting the control message: status=%d,
-  status);
-   kfree(req);
-   usb_free_urb(urb);
-   }
+   dm_write_async_helper(dev, reg, value, 0, NULL);
 }
 
 static int dm_read_shared_word(struct usbnet *dev, int phy, u8 reg, u16 *value)
-- 
1.5.3.4

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] DM9601: Support for ADMtek ADM8515 NIC

2007-10-30 Thread Peter Korsgaard
Add device ID for the ADMtek ADM8515 USB NIC to the DM9601 driver.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]

diff --git a/drivers/net/usb/dm9601.c b/drivers/net/usb/dm9601.c
index a2de32f..2c68573 100644
--- a/drivers/net/usb/dm9601.c
+++ b/drivers/net/usb/dm9601.c
@@ -586,6 +586,10 @@ static const struct usb_device_id products[] = {
 USB_DEVICE(0x0a46, 0x0268),/* ShanTou ST268 USB NIC */
 .driver_info = (unsigned long)dm9601_info,
 },
+   {
+USB_DEVICE(0x0a46, 0x8515),/* ADMtek ADM8515 USB NIC */
+.driver_info = (unsigned long)dm9601_info,
+},
{}, // END
 };
 
-- 
1.5.3.4

-- 
Bye, Peter Korsgaard
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[patch] dm9601: Fix receive MTU

2007-10-01 Thread Peter Korsgaard
Please apply to 2.6.23.
---
dm9601 didn't take the ethernet header into account when calculating
RX MTU, causing packets bigger than 1486 to fail.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]
---
 drivers/net/usb/dm9601.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6.23-rc8/drivers/net/usb/dm9601.c
===
--- linux-2.6.23-rc8.orig/drivers/net/usb/dm9601.c
+++ linux-2.6.23-rc8/drivers/net/usb/dm9601.c
@@ -405,7 +405,7 @@
dev-net-ethtool_ops = dm9601_ethtool_ops;
dev-net-hard_header_len += DM_TX_OVERHEAD;
dev-hard_mtu = dev-net-mtu + dev-net-hard_header_len;
-   dev-rx_urb_size = dev-net-mtu + DM_RX_OVERHEAD;
+   dev-rx_urb_size = dev-net-mtu + ETH_HLEN + DM_RX_OVERHEAD;
 
dev-mii.dev = dev-net;
dev-mii.mdio_read = dm9601_mdio_read;

-- 
Bye, Peter Korsgaard
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] SMSC LAN911x and LAN921x vendor driver

2007-08-07 Thread Peter Korsgaard
 Peter == Peter Korsgaard [EMAIL PROTECTED] writes:

Hi,

 Peter I'll give your driver a try and report back.

Ok, the driver seems to be working (after fixing up the accessor
routines for my hw setup) and performance is comparable to Dustin's
driver.

It would be nice if the driver would enable the byte swapping support
in the hw if it detects the wrong endian - Like this:

Index: linux/drivers/net/smsc911x.c
===
--- linux.orig/drivers/net/smsc911x.c
+++ linux/drivers/net/smsc911x.c
@@ -1787,6 +1787,13 @@
return -ENODEV;
}
 
+   /* check endian */
+   if (smsc911x_reg_read(pdata, BYTE_TEST) == 0x43218765) {
+   SMSC_TRACE(Byte test looks swapped, inverting);
+   smsc911x_reg_write(~smsc911x_reg_read(pdata, ENDIAN),
+  pdata, ENDIAN);
+   }
+
/* Default generation to zero (all workarounds apply) */
pdata-generation = 0;

-- 
Bye, Peter Korsgaard

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] SMSC LAN911x and LAN921x vendor driver

2007-08-01 Thread Peter Korsgaard
 Steve == Steve Glendinning [EMAIL PROTECTED] writes:

Hi,

  What's the problem with Dustin's driver? It seems to work fine here
  with a lan9117. Why not just add lan921x support to the existing
  driver?

 Steve I have heard Dustin's driver works very well on PXA, but on
 Steve others it doesn't even compile (hence why it depends on
 Steve ARCH_PXA).

I'm using it on PPC.

 Steve Dustin's driver was based on the smc91x code, but these two
 Steve ethernet devices share nothing other than a similar name.
 Steve smsc911x is a new, completely platform-independent driver with
 Steve workarounds for several hardware issues, and it doesn't suffer
 Steve from quite as much macro abuse :-)

The macros are not that bad as the hw people sligtly misconnected the
chip, so I need special access routines (enable the big endian mode,
not byteswap on normal registar access and byteswap on fifo access).

I'll give your driver a try and report back.

-- 
Bye, Peter Korsgaard

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] SMSC LAN911x and LAN921x vendor driver

2007-07-29 Thread Peter Korsgaard
 Steve == Steve Glendinning [EMAIL PROTECTED] writes:

Hi,

 Steve Attached is a driver for SMSC's LAN911x and LAN921x families
 Steve of embedded ethernet controllers.

 Steve There is an existing smc911x driver in the tree; this is intended to
 Steve replace it.  Dustin McIntire (the author of the smc911x driver) has
 Steve expressed his support for switching to this driver.

What's the problem with Dustin's driver? It seems to work fine here
with a lan9117. Why not just add lan921x support to the existing
driver?

-- 
Bye, Peter Korsgaard

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Cleanup usbnet_probe() return value handling

2007-07-02 Thread Peter Korsgaard
usbnet_probe() handles a positive return value from the driver bind()
function as success, but will later only setup the status handler if the
return value was zero, leading to confusion. Patch adjusts this to only
accept 0 as success in both checks.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]
---
 drivers/net/usb/usbnet.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6.22-rc7/drivers/net/usb/usbnet.c
===
--- linux-2.6.22-rc7.orig/drivers/net/usb/usbnet.c
+++ linux-2.6.22-rc7/drivers/net/usb/usbnet.c
@@ -1182,7 +1182,7 @@
// NOTE net-name still not usable ...
if (info-bind) {
status = info-bind (dev, udev);
-   if (status  0)
+   if (status != 0)
goto out1;
 
// heuristic:  usb%d for links we know are two-host,

-- 
Bye, Peter Korsgaard
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Cleanup usbnet_probe() return value handling

2007-07-02 Thread Peter Korsgaard
 David == David Brownell [EMAIL PROTECTED] writes:

Hi,

 David I'd rather see the later test updated to match this one.
 David (Good catch!)

 David The return convention is negative means error.  There's
 David code in USB which has multiple nonnegative success codes.

Ok, updated patch does that instead.

 David In particular usb_control_msg(), which would very naturally
 David used as the body of a bind() method, returns negative or
 David the number of bytes transferred.

Yeah, that was the original problem in my dm9601 driver.

usbnet_probe() handles a positive return value from the driver bind()
function as success, but will later only setup the status handler if the
return value was zero, leading to confusion. Patch adjusts this to accept
positive values as success in both checks.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]
---
 drivers/net/usb/usbnet.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6.22-rc7/drivers/net/usb/usbnet.c
===
--- linux-2.6.22-rc7.orig/drivers/net/usb/usbnet.c
+++ linux-2.6.22-rc7/drivers/net/usb/usbnet.c
@@ -1208,7 +1208,7 @@
status = 0;
 
}
-   if (status == 0  dev-status)
+   if (status = 0  dev-status)
status = init_status (dev, udev);
if (status  0)
goto out3;

-- 
Bye, Peter Korsgaard

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] dm9601: Return 0 from bind() on success

2007-06-30 Thread Peter Korsgaard

Fixup dm9601_bind() so it returns 0 on success rather than just a positive
number, as otherwise usbnet doesn't init the status handler.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]

---
 drivers/net/usb/dm9601.c |6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)

Index: linux-2.6.22-rc6/drivers/net/usb/dm9601.c
===
--- linux-2.6.22-rc6.orig/drivers/net/usb/dm9601.c
+++ linux-2.6.22-rc6/drivers/net/usb/dm9601.c
@@ -414,18 +414,16 @@
dev-mii.reg_num_mask = 0x1f;
 
/* reset */
-   ret = dm_write_reg(dev, DM_NET_CTRL, 1);
+   dm_write_reg(dev, DM_NET_CTRL, 1);
udelay(20);
 
/* read MAC */
-   ret = dm_read(dev, DM_PHY_ADDR, ETH_ALEN, dev-net-dev_addr);
-   if (ret  0) {
+   if (dm_read(dev, DM_PHY_ADDR, ETH_ALEN, dev-net-dev_addr)  0) {
printk(KERN_ERR Error reading MAC address\n);
ret = -ENODEV;
goto out;
}
 
-
/* power up phy */
dm_write_reg(dev, DM_GPR_CTRL, 1);
dm_write_reg(dev, DM_GPR_DATA, 0);

-- 
Bye, Peter Korsgaard

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] dm9601: HW header size shouldn't be included in packet length

2007-06-27 Thread Peter Korsgaard
The dm9601 driver was including the 2 byte hardware header in the
packet length, causing the HW to send 2 extra bytes of garbage on tx.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]

---
 drivers/net/usb/dm9601.c |5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Index: linux-2.6.22-rc6/drivers/net/usb/dm9601.c
===
--- linux-2.6.22-rc6.orig/drivers/net/usb/dm9601.c
+++ linux-2.6.22-rc6/drivers/net/usb/dm9601.c
@@ -489,6 +489,8 @@
   b3..n: packet data
*/
 
+   len = skb-len;
+
if (skb_headroom(skb)  DM_TX_OVERHEAD) {
struct sk_buff *skb2;
 
@@ -501,10 +503,9 @@
 
__skb_push(skb, DM_TX_OVERHEAD);
 
-   len = skb-len;
/* usbnet adds padding if length is a multiple of packet size
   if so, adjust length value in header */
-   if ((len % dev-maxpacket) == 0)
+   if ((skb-len % dev-maxpacket) == 0)
len++;
 
skb-data[0] = len;

-- 
Bye, Peter Korsgaard

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] usbnet: Zero padding byte if there is tail room in skb

2007-06-27 Thread Peter Korsgaard
Usbnet adds a padding byte if a 0 byte USB packet would be sent. Zero
padding byte if there is tail room in skb.

Signed-of-by: Peter Korsgaard [EMAIL PROTECTED]
Acked-by: David Brownell [EMAIL PROTECTED]

---
 drivers/net/usb/usbnet.c |9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Index: linux-2.6.22-rc6/drivers/net/usb/usbnet.c
===
--- linux-2.6.22-rc6.orig/drivers/net/usb/usbnet.c
+++ linux-2.6.22-rc6/drivers/net/usb/usbnet.c
@@ -953,11 +953,14 @@
/* don't assume the hardware handles USB_ZERO_PACKET
 * NOTE:  strictly conforming cdc-ether devices should expect
 * the ZLP here, but ignore the one-byte packet.
-*
-* FIXME zero that byte, if it doesn't require a new skb.
 */
-   if ((length % dev-maxpacket) == 0)
+   if ((length % dev-maxpacket) == 0) {
urb-transfer_buffer_length++;
+   if (skb_tailroom(skb)) {
+   skb-data[skb-len] = 0;
+   __skb_put(skb, 1);
+   }
+   }
 
spin_lock_irqsave (dev-txq.lock, flags);

-- 
Bye, Peter Korsgaard

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Update MAINTAINERS for USB network devices

2007-06-27 Thread Peter Korsgaard
Questions regarding the USB network drivers should now go to netdev.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]
---
 MAINTAINERS |   13 +
 1 file changed, 5 insertions(+), 8 deletions(-)

Index: linux-2.6.22-rc6/MAINTAINERS
===
--- linux-2.6.22-rc6.orig/MAINTAINERS
+++ linux-2.6.22-rc6/MAINTAINERS
@@ -3610,15 +3610,14 @@
 USB CDC ETHERNET DRIVER
 P: Greg Kroah-Hartman
 M: [EMAIL PROTECTED]
-L: [EMAIL PROTECTED]
-L: [EMAIL PROTECTED]
+L: netdev@vger.kernel.org
 S: Maintained
 W: http://www.kroah.com/linux-usb/
 
 USB DAVICOM DM9601 DRIVER
 P: Peter Korsgaard
 M: [EMAIL PROTECTED]
-L: [EMAIL PROTECTED]
+L: netdev@vger.kernel.org
 W: http://www.linux-usb.org/usbnet
 S: Maintained
 
@@ -3702,8 +3701,7 @@
 USB PEGASUS DRIVER
 P: Petko Manolov
 M: [EMAIL PROTECTED]
-L: [EMAIL PROTECTED]
-L: [EMAIL PROTECTED]
+L: netdev@vger.kernel.org
 W: http://pegasus2.sourceforge.net/
 S: Maintained
 
@@ -3717,8 +3715,7 @@
 USB RTL8150 DRIVER
 P: Petko Manolov
 M: [EMAIL PROTECTED]
-L: [EMAIL PROTECTED]
-L: [EMAIL PROTECTED]
+L: netdev@vger.kernel.org
 W: http://pegasus2.sourceforge.net/
 S: Maintained
 
@@ -3829,7 +3826,7 @@
 USB USBNET DRIVER FRAMEWORK
 P: David Brownell
 M: [EMAIL PROTECTED]
-L: [EMAIL PROTECTED]
+L: netdev@vger.kernel.org
 W: http://www.linux-usb.org/usbnet
 S: Maintained
 

-- 
Bye, Peter Korsgaard
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Update MAINTAINERS for USB network devices

2007-06-27 Thread Peter Korsgaard

On 6/27/07, Jeff Garzik [EMAIL PROTECTED] wrote:


Quite true, but for courtesy's sake you should keep the relevant
maintainers in the loop, and get their ACKs, when you start changing
their MAINTAINERS entries.


Sorry, I forgot the CCs.

David already agreed with the change:
http://thread.gmane.org/gmane.linux.usb.devel/55377/focus=55382

--
Bye, Peter Korsgaard
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Update MAINTAINERS for USB network devices

2007-06-27 Thread Peter Korsgaard
 Greg == Greg KH [EMAIL PROTECTED] writes:

 Greg Yeah, this is the cdc_acm driver that is still in the USB drivers/
 Greg directory tree as it is a USB class driver that shows up as a tty device
 Greg to userspace.  It should not be moved to the networking list unless no
 Greg one minds that I never see any queries about it :)

Ok, here's an updated patch:

Questions regarding the USB network drivers should now go to netdev.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]
Acked-by: David Brownell [EMAIL PROTECTED]

---
 MAINTAINERS |8 
 1 file changed, 4 insertions(+), 4 deletions(-)

Index: linux-2.6.22-rc6/MAINTAINERS
===
--- linux-2.6.22-rc6.orig/MAINTAINERS
+++ linux-2.6.22-rc6/MAINTAINERS
@@ -3618,7 +3618,7 @@
 USB DAVICOM DM9601 DRIVER
 P: Peter Korsgaard
 M: [EMAIL PROTECTED]
-L: [EMAIL PROTECTED]
+L: netdev@vger.kernel.org
 W: http://www.linux-usb.org/usbnet
 S: Maintained
 
@@ -3702,8 +3702,8 @@
 USB PEGASUS DRIVER
 P: Petko Manolov
 M: [EMAIL PROTECTED]
-L: [EMAIL PROTECTED]
 L: [EMAIL PROTECTED]
+L: netdev@vger.kernel.org
 W: http://pegasus2.sourceforge.net/
 S: Maintained
 
@@ -3717,8 +3717,8 @@
 USB RTL8150 DRIVER
 P: Petko Manolov
 M: [EMAIL PROTECTED]
-L: [EMAIL PROTECTED]
 L: [EMAIL PROTECTED]
+L: netdev@vger.kernel.org
 W: http://pegasus2.sourceforge.net/
 S: Maintained
 
@@ -3829,7 +3829,7 @@
 USB USBNET DRIVER FRAMEWORK
 P: David Brownell
 M: [EMAIL PROTECTED]
-L: [EMAIL PROTECTED]
+L: netdev@vger.kernel.org
 W: http://www.linux-usb.org/usbnet
 S: Maintained
 


-- 
Bye, Peter Korsgaard

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] net/smc911x: Match up spin lock/unlock

2007-02-01 Thread Peter Korsgaard
smc911x_phy_configure's error handling unconditionally unlocks the
spinlock even if it wasn't locked. Patch fixes it.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]

---
 drivers/net/smc911x.c |5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Index: linux-trunk/drivers/net/smc911x.c
===
--- linux-trunk.orig/drivers/net/smc911x.c
+++ linux-trunk/drivers/net/smc911x.c
@@ -969,11 +969,11 @@
 * We should not be called if phy_type is zero.
 */
if (lp-phy_type == 0)
-goto smc911x_phy_configure_exit;
+goto smc911x_phy_configure_exit_nolock;
 
if (smc911x_phy_reset(dev, phyaddr)) {
printk(%s: PHY reset timed out\n, dev-name);
-   goto smc911x_phy_configure_exit;
+   goto smc911x_phy_configure_exit_nolock;
}
spin_lock_irqsave(lp-lock, flags);
 
@@ -1042,6 +1042,7 @@
 
 smc911x_phy_configure_exit:
spin_unlock_irqrestore(lp-lock, flags);
+smc911x_phy_configure_exit_nolock:
lp-work_pending = 0;
 }
 

-- 
Bye, Peter Korsgaard
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Fix up smc911x after work_struct changes

2006-12-22 Thread Peter Korsgaard
Fix up the smc911x driver after the work_struct changes.

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]

diff -urpN linux-2.6.20-rc1/drivers/net/smc911x.c 
linux-2.6.20-rc1.new/drivers/net/smc911x.c
--- linux-2.6.20-rc1/drivers/net/smc911x.c  2006-11-29 22:57:37.0 
+0100
+++ linux-2.6.20-rc1.new/drivers/net/smc911x.c  2006-12-22 15:13:15.0 
+0100
@@ -123,6 +123,9 @@ struct smc911x_local {
 */
struct net_device_stats stats;
 
+   /* parent net device for easy reference in _phy_configure */
+   struct net_device *dev;
+
/* version/revision of the SMC911x chip */
u16 version;
u16 revision;
@@ -948,10 +951,11 @@ static void smc911x_phy_check_media(stru
  * of autonegotiation.)  If the RPC ANEG bit is cleared, the selection
  * is controlled by the RPC SPEED and RPC DPLX bits.
  */
-static void smc911x_phy_configure(void *data)
+static void smc911x_phy_configure(struct work_struct *work)
 {
-   struct net_device *dev = data;
-   struct smc911x_local *lp = netdev_priv(dev);
+   struct smc911x_local *lp =
+ container_of(work, struct smc911x_local, phy_configure);
+   struct net_device *dev = lp-dev;
unsigned long ioaddr = dev-base_addr;
int phyaddr = lp-mii.phy_id;
int my_phy_caps; /* My PHY capabilities */
@@ -1495,6 +1499,8 @@ static void smc911x_set_multicast_list(s
 static int
 smc911x_open(struct net_device *dev)
 {
+   struct smc911x_local *lp = netdev_priv(dev);
+
DBG(SMC_DEBUG_FUNC, %s: -- %s\n, dev-name, __FUNCTION__);
 
/*
@@ -1511,7 +1517,7 @@ smc911x_open(struct net_device *dev)
smc911x_reset(dev);
 
/* Configure the PHY, initialize the link state */
-   smc911x_phy_configure(dev);
+   smc911x_phy_configure(lp-phy_configure);
 
/* Turn on Tx + Rx */
smc911x_enable(dev);
@@ -2060,7 +2066,8 @@ static int __init smc911x_probe(struct n
dev-poll_controller = smc911x_poll_controller;
 #endif
 
-   INIT_WORK(lp-phy_configure, smc911x_phy_configure, dev);
+   INIT_WORK(lp-phy_configure, smc911x_phy_configure);
+   lp-dev = dev;
lp-mii.phy_id_mask = 0x1f;
lp-mii.reg_num_mask = 0x1f;
lp-mii.force_media = 0;
@@ -2275,7 +2282,7 @@ static int smc911x_drv_resume(struct pla
smc911x_reset(ndev);
smc911x_enable(ndev);
if (lp-phy_type != 0)
-   smc911x_phy_configure(ndev);
+   smc911x_phy_configure(lp-phy_configure);
netif_device_attach(ndev);
}
}

-- 
Bye, Peter Korsgaard
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] smc911x: Re-release spinlock on spurious interrupt

2006-07-20 Thread Peter Korsgaard
 Peter == Peter Korsgaard [EMAIL PROTECTED] writes:

 Peter Hi,
 Peter The smc911x driver forgets to release the spinlock on spurious
 Peter interrupts. This little patch fixes it.

Crap - forgot to sign off :/

Signed-off-by: Peter Korsgaard [EMAIL PROTECTED]

diff -Naur linux-2.6.18-rc2.orig/drivers/net/smc911x.c 
linux-2.6.18-rc2/drivers/net/smc911x.c
--- linux-2.6.18-rc2.orig/drivers/net/smc911x.c 2006-07-20 10:26:20.0 
+0200
+++ linux-2.6.18-rc2/drivers/net/smc911x.c  2006-07-20 17:44:26.0 
+0200
@@ -1092,6 +1092,7 @@
/* Spurious interrupt check */
if ((SMC_GET_IRQ_CFG()  (INT_CFG_IRQ_INT_ | INT_CFG_IRQ_EN_)) !=
(INT_CFG_IRQ_INT_ | INT_CFG_IRQ_EN_)) {
+   spin_unlock_irqrestore(lp-lock, flags);
return IRQ_NONE;
}

-- 
Bye, Peter Korsgaard
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html