Netdev List
 help / color / mirror / Atom feed
* Re: [PATCH net-next] drivers/net: delete old 8bit ISA 3c501 driver.
From: Alan Cox @ 2012-05-19 12:30 UTC (permalink / raw)
  To: Paul Gortmaker; +Cc: Ondrej Zary, davem, netdev
In-Reply-To: <20120518220305.GC15256@windriver.com>

> You miss the point.  We've got someone with a modern i7 machine who is
> getting confused by seeing messages from some ancient 3c501 driver,
> but he doesn't have the context to know it is ancient and the message
> is a red herring.  Will it fix a distro's broken init that tries to
> modprobe everything?  No.  Will it help by not muddying the waters
> with meaningless printk from 3c501 that confuse users?  Yes.

That seems a totally bogus reason for removing stuff. The kernel cannot
manage every possible distribution and user screw up. They have more
variety so they will always win the battle.

Removing it because nobody is running one even in a museum might be a
good reason, but then the driver still works fine.

Also btw: the 3c501 isn't all TTL it's integrated. The 3c500 is all TTL
and an amazing beast, its so big it won't fit a 16bit slot as it has to
drop down after the connector to get all the chips on.

(and yes I have a 3c500)

However I don't think this is the right way to tackle the ethernet
history situation. As with MCA we should pull *all* the real historical
interest only bits in one go so it's immediately obvious where the
break point is for all devices.

That or we'll replace confused distros and uses with confused ancient
machine owners, and the latter can be far more persistent and
irritating ;)

So should we dump ISA ?

Alan

^ permalink raw reply

* Re: [PATCH net-next] drivers/net: delete old 8bit ISA 3c501 driver.
From: Alan Cox @ 2012-05-19 12:31 UTC (permalink / raw)
  To: David Miller; +Cc: paul.gortmaker, netdev
In-Reply-To: <20120518.235420.1669350688913610319.davem@davemloft.net>

> > http://www.linuxquestions.org/questions/linux-networking-3/3com-3c501-card-not-detecting-934344/
> > 
> > Cc: Alan Cox <alan@linux.intel.com>
> > Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
> 
> Alan, any objections?

Wrong reason to remove it, Perfectly reasonable it (and a pile of other
ISA cards) ought to be shown the door.

Check with the M68K people however. 3c501 won't matter to them but I'm
not sure which of the other chips ended up on Amiga ISA bridges. I know
NE2000 clones did.

^ permalink raw reply

* [PATCH net-next 1/3] net: introduce skb_try_coalesce()
From: Eric Dumazet @ 2012-05-19 13:02 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, Alexander Duyck

From: Eric Dumazet <edumazet@google.com>

Move tcp_try_coalesce() protocol independent part to 
skb_try_coalesce().

skb_try_coalesce() can be used in IPv4 defrag and IPv6 reassembly,
to build optimized skbs (less sk_buff, and possibly less 'headers')

skb_try_coalesce() is zero copy, unless the copy can fit in destination
header (its a rare case)

kfree_skb_partial() is also moved to net/core/skbuff.c and exported,
because IPv6 will need it in patch (ipv6: use skb coalescing in
reassembly).

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Alexander Duyck <alexander.h.duyck@intel.com>
---
 include/linux/skbuff.h |    5 ++
 net/core/skbuff.c      |   86 +++++++++++++++++++++++++++++++++++++++
 net/ipv4/tcp_input.c   |   67 +-----------------------------
 3 files changed, 94 insertions(+), 64 deletions(-)

diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index fe37c21..0e50171 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -562,6 +562,11 @@ extern void kfree_skb(struct sk_buff *skb);
 extern void consume_skb(struct sk_buff *skb);
 extern void	       __kfree_skb(struct sk_buff *skb);
 extern struct kmem_cache *skbuff_head_cache;
+
+extern void kfree_skb_partial(struct sk_buff *skb, bool head_stolen);
+extern bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
+			     bool *fragstolen, int *delta_truesize);
+
 extern struct sk_buff *__alloc_skb(unsigned int size,
 				   gfp_t priority, int fclone, int node);
 extern struct sk_buff *build_skb(void *data, unsigned int frag_size);
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 7ceb673..ba8a470 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3346,3 +3346,89 @@ void __skb_warn_lro_forwarding(const struct sk_buff *skb)
 			     skb->dev->name);
 }
 EXPORT_SYMBOL(__skb_warn_lro_forwarding);
+
+void kfree_skb_partial(struct sk_buff *skb, bool head_stolen)
+{
+	if (head_stolen)
+		kmem_cache_free(skbuff_head_cache, skb);
+	else
+		__kfree_skb(skb);
+}
+EXPORT_SYMBOL(kfree_skb_partial);
+
+/**
+ * skb_try_coalesce - try to merge skb to prior one
+ * @to: prior buffer
+ * @from: buffer to add
+ * @fragstolen: pointer to boolean
+ *
+ */
+bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
+		      bool *fragstolen, int *delta_truesize)
+{
+	int i, delta, len = from->len;
+
+	*fragstolen = false;
+
+	if (skb_cloned(to))
+		return false;
+
+	if (len <= skb_tailroom(to)) {
+		BUG_ON(skb_copy_bits(from, 0, skb_put(to, len), len));
+		*delta_truesize = 0;
+		return true;
+	}
+
+	if (skb_has_frag_list(to) || skb_has_frag_list(from))
+		return false;
+
+	if (skb_headlen(from) != 0) {
+		struct page *page;
+		unsigned int offset;
+
+		if (skb_shinfo(to)->nr_frags +
+		    skb_shinfo(from)->nr_frags >= MAX_SKB_FRAGS)
+			return false;
+
+		if (skb_head_is_locked(from))
+			return false;
+
+		delta = from->truesize - SKB_DATA_ALIGN(sizeof(struct sk_buff));
+
+		page = virt_to_head_page(from->head);
+		offset = from->data - (unsigned char *)page_address(page);
+
+		skb_fill_page_desc(to, skb_shinfo(to)->nr_frags,
+				   page, offset, skb_headlen(from));
+		*fragstolen = true;
+	} else {
+		if (skb_shinfo(to)->nr_frags +
+		    skb_shinfo(from)->nr_frags > MAX_SKB_FRAGS)
+			return false;
+
+		delta = from->truesize -
+			SKB_TRUESIZE(skb_end_pointer(from) - from->head);
+	}
+
+	WARN_ON_ONCE(delta < len);
+
+	memcpy(skb_shinfo(to)->frags + skb_shinfo(to)->nr_frags,
+	       skb_shinfo(from)->frags,
+	       skb_shinfo(from)->nr_frags * sizeof(skb_frag_t));
+	skb_shinfo(to)->nr_frags += skb_shinfo(from)->nr_frags;
+
+	if (!skb_cloned(from))
+		skb_shinfo(from)->nr_frags = 0;
+
+	/* if the skb is cloned this does nothing since we set nr_frags to 0 */
+	for (i = 0; i < skb_shinfo(from)->nr_frags; i++)
+		skb_frag_ref(from, i);
+
+	to->truesize += delta;
+	to->len += len;
+	to->data_len += len;
+
+	*delta_truesize = delta;
+	return true;
+}
+EXPORT_SYMBOL(skb_try_coalesce);
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index b961ef5..cfa2aa1 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -4549,84 +4549,23 @@ static bool tcp_try_coalesce(struct sock *sk,
 			     struct sk_buff *from,
 			     bool *fragstolen)
 {
-	int i, delta, len = from->len;
+	int delta;
 
 	*fragstolen = false;
 
-	if (tcp_hdr(from)->fin || skb_cloned(to))
+	if (tcp_hdr(from)->fin)
 		return false;
-
-	if (len <= skb_tailroom(to)) {
-		BUG_ON(skb_copy_bits(from, 0, skb_put(to, len), len));
-		goto merge;
-	}
-
-	if (skb_has_frag_list(to) || skb_has_frag_list(from))
+	if (!skb_try_coalesce(to, from, fragstolen, &delta))
 		return false;
 
-	if (skb_headlen(from) != 0) {
-		struct page *page;
-		unsigned int offset;
-
-		if (skb_shinfo(to)->nr_frags +
-		    skb_shinfo(from)->nr_frags >= MAX_SKB_FRAGS)
-			return false;
-
-		if (skb_head_is_locked(from))
-			return false;
-
-		delta = from->truesize - SKB_DATA_ALIGN(sizeof(struct sk_buff));
-
-		page = virt_to_head_page(from->head);
-		offset = from->data - (unsigned char *)page_address(page);
-
-		skb_fill_page_desc(to, skb_shinfo(to)->nr_frags,
-				   page, offset, skb_headlen(from));
-		*fragstolen = true;
-	} else {
-		if (skb_shinfo(to)->nr_frags +
-		    skb_shinfo(from)->nr_frags > MAX_SKB_FRAGS)
-			return false;
-
-		delta = from->truesize -
-			SKB_TRUESIZE(skb_end_pointer(from) - from->head);
-	}
-
-	WARN_ON_ONCE(delta < len);
-
-	memcpy(skb_shinfo(to)->frags + skb_shinfo(to)->nr_frags,
-	       skb_shinfo(from)->frags,
-	       skb_shinfo(from)->nr_frags * sizeof(skb_frag_t));
-	skb_shinfo(to)->nr_frags += skb_shinfo(from)->nr_frags;
-
-	if (!skb_cloned(from))
-		skb_shinfo(from)->nr_frags = 0;
-
-	/* if the skb is cloned this does nothing since we set nr_frags to 0 */
-	for (i = 0; i < skb_shinfo(from)->nr_frags; i++)
-		skb_frag_ref(from, i);
-
-	to->truesize += delta;
 	atomic_add(delta, &sk->sk_rmem_alloc);
 	sk_mem_charge(sk, delta);
-	to->len += len;
-	to->data_len += len;
-
-merge:
 	NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPRCVCOALESCE);
 	TCP_SKB_CB(to)->end_seq = TCP_SKB_CB(from)->end_seq;
 	TCP_SKB_CB(to)->ack_seq = TCP_SKB_CB(from)->ack_seq;
 	return true;
 }
 
-static void kfree_skb_partial(struct sk_buff *skb, bool head_stolen)
-{
-	if (head_stolen)
-		kmem_cache_free(skbuff_head_cache, skb);
-	else
-		__kfree_skb(skb);
-}
-
 static void tcp_data_queue_ofo(struct sock *sk, struct sk_buff *skb)
 {
 	struct tcp_sock *tp = tcp_sk(sk);

^ permalink raw reply related

* [PATCH net-next 2/3] ipv4: use skb coalescing in defragmentation
From: Eric Dumazet @ 2012-05-19 13:02 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, Alexander Duyck

From: Eric Dumazet <edumazet@google.com>

ip_frag_reasm() can use skb_try_coalesce() to build optimized skb,
reducing memory used by them (truesize), and reducing number of cache
line misses and overhead for the consumer.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Alexander Duyck <alexander.h.duyck@intel.com>
---
 net/ipv4/ip_fragment.c |   26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
index 695b27f..9dbd3dd 100644
--- a/net/ipv4/ip_fragment.c
+++ b/net/ipv4/ip_fragment.c
@@ -545,6 +545,7 @@ static int ip_frag_reasm(struct ipq *qp, struct sk_buff *prev,
 	int len;
 	int ihlen;
 	int err;
+	int sum_truesize;
 	u8 ecn;
 
 	ipq_kill(qp);
@@ -611,19 +612,32 @@ static int ip_frag_reasm(struct ipq *qp, struct sk_buff *prev,
 		atomic_add(clone->truesize, &qp->q.net->mem);
 	}
 
-	skb_shinfo(head)->frag_list = head->next;
 	skb_push(head, head->data - skb_network_header(head));
 
-	for (fp=head->next; fp; fp = fp->next) {
-		head->data_len += fp->len;
-		head->len += fp->len;
+	sum_truesize = head->truesize;
+	for (fp = head->next; fp;) {
+		bool headstolen;
+		int delta;
+		struct sk_buff *next = fp->next;
+
+		sum_truesize += fp->truesize;
 		if (head->ip_summed != fp->ip_summed)
 			head->ip_summed = CHECKSUM_NONE;
 		else if (head->ip_summed == CHECKSUM_COMPLETE)
 			head->csum = csum_add(head->csum, fp->csum);
-		head->truesize += fp->truesize;
+
+		if (skb_try_coalesce(head, fp, &headstolen, &delta)) {
+			kfree_skb_partial(fp, headstolen);
+		} else {
+			if (!skb_shinfo(head)->frag_list)
+				skb_shinfo(head)->frag_list = fp;
+			head->data_len += fp->len;
+			head->len += fp->len;
+			head->truesize += fp->truesize;
+		}
+		fp = next;
 	}
-	atomic_sub(head->truesize, &qp->q.net->mem);
+	atomic_sub(sum_truesize, &qp->q.net->mem);
 
 	head->next = NULL;
 	head->dev = dev;

^ permalink raw reply related

* [PATCH net-next 3/3] ipv6: use skb coalescing in reassembly
From: Eric Dumazet @ 2012-05-19 13:02 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, Alexander Duyck

From: Eric Dumazet <edumazet@google.com>

ip6_frag_reasm() can use skb_try_coalesce() to build optimized skb,
reducing memory used by them (truesize), and reducing number of cache
line misses and overhead for the consumer.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Alexander Duyck <alexander.h.duyck@intel.com>
---
 net/ipv6/reassembly.c |   26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
index 5d32dfa..4ff9af6 100644
--- a/net/ipv6/reassembly.c
+++ b/net/ipv6/reassembly.c
@@ -415,6 +415,7 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *prev,
 	struct sk_buff *fp, *head = fq->q.fragments;
 	int    payload_len;
 	unsigned int nhoff;
+	int sum_truesize;
 
 	fq_kill(fq);
 
@@ -484,20 +485,33 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *prev,
 	head->mac_header += sizeof(struct frag_hdr);
 	head->network_header += sizeof(struct frag_hdr);
 
-	skb_shinfo(head)->frag_list = head->next;
 	skb_reset_transport_header(head);
 	skb_push(head, head->data - skb_network_header(head));
 
-	for (fp=head->next; fp; fp = fp->next) {
-		head->data_len += fp->len;
-		head->len += fp->len;
+	sum_truesize = head->truesize;
+	for (fp = head->next; fp;) {
+		bool headstolen;
+		int delta;
+		struct sk_buff *next = fp->next;
+
+		sum_truesize += fp->truesize;
 		if (head->ip_summed != fp->ip_summed)
 			head->ip_summed = CHECKSUM_NONE;
 		else if (head->ip_summed == CHECKSUM_COMPLETE)
 			head->csum = csum_add(head->csum, fp->csum);
-		head->truesize += fp->truesize;
+
+		if (skb_try_coalesce(head, fp, &headstolen, &delta)) {
+			kfree_skb_partial(fp, headstolen);
+		} else {
+			if (!skb_shinfo(head)->frag_list)
+				skb_shinfo(head)->frag_list = fp;
+			head->data_len += fp->len;
+			head->len += fp->len;
+			head->truesize += fp->truesize;
+		}
+		fp = next;
 	}
-	atomic_sub(head->truesize, &fq->q.net->mem);
+	atomic_sub(sum_truesize, &fq->q.net->mem);
 
 	head->next = NULL;
 	head->dev = dev;

^ permalink raw reply related

* [PATCH] USB CDC-Ether - Add ZTE WWAN matches before generic Ethernet
From: Andrew Bird @ 2012-05-19 13:56 UTC (permalink / raw)
  To: oliver; +Cc: gregkh, linux-usb, netdev, linux-kernel, Andrew Bird

Some ZTE WWAN devices have generic CDC Ether descriptors. Add those
into the whitelist so that we get FLAG_WWAN on the interface

Signed-off-by: Andrew Bird <ajb@spheresystems.co.uk>
---
 drivers/net/usb/cdc_ether.c |   56 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 56 insertions(+), 0 deletions(-)

diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 425e201..fffee6a 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -486,6 +486,7 @@ static const struct driver_info wwan_info = {
 
 #define HUAWEI_VENDOR_ID	0x12D1
 #define NOVATEL_VENDOR_ID	0x1410
+#define ZTE_VENDOR_ID		0x19D2
 
 static const struct usb_device_id	products [] = {
 /*
@@ -618,6 +619,61 @@ static const struct usb_device_id	products [] = {
 	.bInterfaceProtocol	= USB_CDC_PROTO_NONE,
 	.driver_info = (unsigned long)&wwan_info,
 }, {
+	/* ZTE (Vodafone) K3805-Z */
+	.match_flags    =   USB_DEVICE_ID_MATCH_VENDOR
+		 | USB_DEVICE_ID_MATCH_PRODUCT
+		 | USB_DEVICE_ID_MATCH_INT_INFO,
+	.idVendor               = ZTE_VENDOR_ID,
+	.idProduct		= 0x1003,
+	.bInterfaceClass	= USB_CLASS_COMM,
+	.bInterfaceSubClass	= USB_CDC_SUBCLASS_ETHERNET,
+	.bInterfaceProtocol	= USB_CDC_PROTO_NONE,
+	.driver_info = (unsigned long)&wwan_info,
+}, {
+	/* ZTE (Vodafone) K3806-Z */
+	.match_flags    =   USB_DEVICE_ID_MATCH_VENDOR
+		 | USB_DEVICE_ID_MATCH_PRODUCT
+		 | USB_DEVICE_ID_MATCH_INT_INFO,
+	.idVendor               = ZTE_VENDOR_ID,
+	.idProduct		= 0x1015,
+	.bInterfaceClass	= USB_CLASS_COMM,
+	.bInterfaceSubClass	= USB_CDC_SUBCLASS_ETHERNET,
+	.bInterfaceProtocol	= USB_CDC_PROTO_NONE,
+	.driver_info = (unsigned long)&wwan_info,
+}, {
+	/* ZTE (Vodafone) K4510-Z */
+	.match_flags    =   USB_DEVICE_ID_MATCH_VENDOR
+		 | USB_DEVICE_ID_MATCH_PRODUCT
+		 | USB_DEVICE_ID_MATCH_INT_INFO,
+	.idVendor               = ZTE_VENDOR_ID,
+	.idProduct		= 0x1173,
+	.bInterfaceClass	= USB_CLASS_COMM,
+	.bInterfaceSubClass	= USB_CDC_SUBCLASS_ETHERNET,
+	.bInterfaceProtocol	= USB_CDC_PROTO_NONE,
+	.driver_info = (unsigned long)&wwan_info,
+}, {
+	/* ZTE (Vodafone) K3770-Z */
+	.match_flags    =   USB_DEVICE_ID_MATCH_VENDOR
+		 | USB_DEVICE_ID_MATCH_PRODUCT
+		 | USB_DEVICE_ID_MATCH_INT_INFO,
+	.idVendor               = ZTE_VENDOR_ID,
+	.idProduct		= 0x1177,
+	.bInterfaceClass	= USB_CLASS_COMM,
+	.bInterfaceSubClass	= USB_CDC_SUBCLASS_ETHERNET,
+	.bInterfaceProtocol	= USB_CDC_PROTO_NONE,
+	.driver_info = (unsigned long)&wwan_info,
+}, {
+	/* ZTE (Vodafone) K3772-Z */
+	.match_flags    =   USB_DEVICE_ID_MATCH_VENDOR
+		 | USB_DEVICE_ID_MATCH_PRODUCT
+		 | USB_DEVICE_ID_MATCH_INT_INFO,
+	.idVendor               = ZTE_VENDOR_ID,
+	.idProduct		= 0x1181,
+	.bInterfaceClass	= USB_CLASS_COMM,
+	.bInterfaceSubClass	= USB_CDC_SUBCLASS_ETHERNET,
+	.bInterfaceProtocol	= USB_CDC_PROTO_NONE,
+	.driver_info = (unsigned long)&wwan_info,
+}, {
 	USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ETHERNET,
 			USB_CDC_PROTO_NONE),
 	.driver_info = (unsigned long) &cdc_info,
-- 
1.7.6.5

^ permalink raw reply related

* [PATCH] iproute2: man page and /bin/ip disagree on del vs delete
From: Andreas Henriksson @ 2012-05-19 14:08 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Robert Henney, 673355, netdev
In-Reply-To: <20120518012928.26883.11644.reportbug@linear.rut.org>

On Thu, May 17, 2012 at 09:29:28PM -0400, Robert Henney wrote:
> the 'ip' man page does not mention the command "del" at all but does
> claim, "As a rule, it is possible to add, delete and show (or list ) objects".  
> however, 'ip' does not always recognize "delete" as a commend.
> 
> robh@debian:~$ ip tunnel delete
> Command "delete" is unknown, try "ip tunnel help".

Lets use "delete" in all calls to matches() for consistency. This will
make both "del" and "delete" work everywhere.

Signed-off-by: Andreas Henriksson <andreas@fatal.se>

diff --git a/ip/ip6tunnel.c b/ip/ip6tunnel.c
index d5bee36..c9720eb 100644
--- a/ip/ip6tunnel.c
+++ b/ip/ip6tunnel.c
@@ -408,7 +408,7 @@ int do_ip6tunnel(int argc, char **argv)
 			return do_add(SIOCADDTUNNEL, argc - 1, argv + 1);
 		if (matches(*argv, "change") == 0)
 			return do_add(SIOCCHGTUNNEL, argc - 1, argv + 1);
-		if (matches(*argv, "del") == 0)
+		if (matches(*argv, "delete") == 0)
 			return do_del(argc - 1, argv + 1);
 		if (matches(*argv, "show") == 0 ||
 		    matches(*argv, "lst") == 0 ||
diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
index c5683f5..3a5f94b 100644
--- a/ip/ipl2tp.c
+++ b/ip/ipl2tp.c
@@ -795,7 +795,7 @@ int do_ipl2tp(int argc, char **argv)
 
 	if (matches(*argv, "add") == 0)
 		return do_add(argc-1, argv+1);
-	if (matches(*argv, "del") == 0)
+	if (matches(*argv, "delete") == 0)
 		return do_del(argc-1, argv+1);
 	if (matches(*argv, "show") == 0 ||
 	    matches(*argv, "lst") == 0 ||
diff --git a/ip/iptunnel.c b/ip/iptunnel.c
index 3d41a27..38ccd87 100644
--- a/ip/iptunnel.c
+++ b/ip/iptunnel.c
@@ -620,7 +620,7 @@ int do_iptunnel(int argc, char **argv)
 			return do_add(SIOCADDTUNNEL, argc-1, argv+1);
 		if (matches(*argv, "change") == 0)
 			return do_add(SIOCCHGTUNNEL, argc-1, argv+1);
-		if (matches(*argv, "del") == 0)
+		if (matches(*argv, "delete") == 0)
 			return do_del(argc-1, argv+1);
 		if (matches(*argv, "show") == 0 ||
 		    matches(*argv, "lst") == 0 ||
diff --git a/ip/iptuntap.c b/ip/iptuntap.c
index 29f2777..20914e1 100644
--- a/ip/iptuntap.c
+++ b/ip/iptuntap.c
@@ -307,7 +307,7 @@ int do_iptuntap(int argc, char **argv)
 	if (argc > 0) {
 		if (matches(*argv, "add") == 0)
 			return do_add(argc-1, argv+1);
-		if (matches(*argv, "del") == 0)
+		if (matches(*argv, "delete") == 0)
 			return do_del(argc-1, argv+1);
 		if (matches(*argv, "show") == 0 ||
                     matches(*argv, "lst") == 0 ||

^ permalink raw reply related

* [Resend PATCH 1/2] netfilter: remove include/linux/netfilter_ipv4/ipt_addrtype.h
From: Cong Wang @ 2012-05-19 14:39 UTC (permalink / raw)
  To: netfilter-devel; +Cc: netdev, Cong Wang

From: Cong Wang <xiyou.wangcong@gmail.com>

It was scheduled to be removed.

Acked-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
---
 Documentation/feature-removal-schedule.txt  |    8 --------
 include/linux/netfilter_ipv4/Kbuild         |    1 -
 include/linux/netfilter_ipv4/ipt_addrtype.h |   27 ---------------------------
 3 files changed, 0 insertions(+), 36 deletions(-)
 delete mode 100644 include/linux/netfilter_ipv4/ipt_addrtype.h

diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index e4b5775..366d158 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -414,14 +414,6 @@ Files:	net/netfilter/xt_connlimit.c
 
 ----------------------------
 
-What:	ipt_addrtype match include file
-When:	2012
-Why:	superseded by xt_addrtype
-Who:	Florian Westphal <fw@strlen.de>
-Files:	include/linux/netfilter_ipv4/ipt_addrtype.h
-
-----------------------------
-
 What:	i2c_driver.attach_adapter
 	i2c_driver.detach_adapter
 When:	September 2011
diff --git a/include/linux/netfilter_ipv4/Kbuild b/include/linux/netfilter_ipv4/Kbuild
index c61b8fb..8ba0c5b 100644
--- a/include/linux/netfilter_ipv4/Kbuild
+++ b/include/linux/netfilter_ipv4/Kbuild
@@ -5,7 +5,6 @@ header-y += ipt_LOG.h
 header-y += ipt_REJECT.h
 header-y += ipt_TTL.h
 header-y += ipt_ULOG.h
-header-y += ipt_addrtype.h
 header-y += ipt_ah.h
 header-y += ipt_ecn.h
 header-y += ipt_ttl.h
diff --git a/include/linux/netfilter_ipv4/ipt_addrtype.h b/include/linux/netfilter_ipv4/ipt_addrtype.h
deleted file mode 100644
index 0da4223..0000000
--- a/include/linux/netfilter_ipv4/ipt_addrtype.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef _IPT_ADDRTYPE_H
-#define _IPT_ADDRTYPE_H
-
-#include <linux/types.h>
-
-enum {
-	IPT_ADDRTYPE_INVERT_SOURCE	= 0x0001,
-	IPT_ADDRTYPE_INVERT_DEST	= 0x0002,
-	IPT_ADDRTYPE_LIMIT_IFACE_IN	= 0x0004,
-	IPT_ADDRTYPE_LIMIT_IFACE_OUT	= 0x0008,
-};
-
-struct ipt_addrtype_info_v1 {
-	__u16	source;		/* source-type mask */
-	__u16	dest;		/* dest-type mask */
-	__u32	flags;
-};
-
-/* revision 0 */
-struct ipt_addrtype_info {
-	__u16	source;		/* source-type mask */
-	__u16	dest;		/* dest-type mask */
-	__u32	invert_source;
-	__u32	invert_dest;
-};
-
-#endif
-- 
1.7.7.6


^ permalink raw reply related

* [Resend PATCH 2/2] netfilter: remove rev 0 of xt_connlimit
From: Cong Wang @ 2012-05-19 14:39 UTC (permalink / raw)
  To: netfilter-devel; +Cc: netdev, Cong Wang, Jan Engelhardt
In-Reply-To: <1337438341-29732-1-git-send-email-amwang@redhat.com>

From: Cong Wang <xiyou.wangcong@gmail.com>

It was scheduled to be removed.

Cc: Jan Engelhardt <jengelh@medozas.de>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
---
 Documentation/feature-removal-schedule.txt |    7 -----
 include/linux/netfilter/xt_connlimit.h     |    9 +-----
 net/netfilter/xt_connlimit.c               |   35 ++++++++-------------------
 3 files changed, 13 insertions(+), 38 deletions(-)

diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 366d158..edf7901 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -407,13 +407,6 @@ Who:	Jean Delvare <khali@linux-fr.org>
 
 ----------------------------
 
-What:	xt_connlimit rev 0
-When:	2012
-Who:	Jan Engelhardt <jengelh@medozas.de>
-Files:	net/netfilter/xt_connlimit.c
-
-----------------------------
-
 What:	i2c_driver.attach_adapter
 	i2c_driver.detach_adapter
 When:	September 2011
diff --git a/include/linux/netfilter/xt_connlimit.h b/include/linux/netfilter/xt_connlimit.h
index d1366f0..f165609 100644
--- a/include/linux/netfilter/xt_connlimit.h
+++ b/include/linux/netfilter/xt_connlimit.h
@@ -22,13 +22,8 @@ struct xt_connlimit_info {
 #endif
 	};
 	unsigned int limit;
-	union {
-		/* revision 0 */
-		unsigned int inverse;
-
-		/* revision 1 */
-		__u32 flags;
-	};
+	/* revision 1 */
+	__u32 flags;
 
 	/* Used internally by the kernel */
 	struct xt_connlimit_data *data __attribute__((aligned(8)));
diff --git a/net/netfilter/xt_connlimit.c b/net/netfilter/xt_connlimit.c
index c6d5a83..70b5591 100644
--- a/net/netfilter/xt_connlimit.c
+++ b/net/netfilter/xt_connlimit.c
@@ -274,38 +274,25 @@ static void connlimit_mt_destroy(const struct xt_mtdtor_param *par)
 	kfree(info->data);
 }
 
-static struct xt_match connlimit_mt_reg[] __read_mostly = {
-	{
-		.name       = "connlimit",
-		.revision   = 0,
-		.family     = NFPROTO_UNSPEC,
-		.checkentry = connlimit_mt_check,
-		.match      = connlimit_mt,
-		.matchsize  = sizeof(struct xt_connlimit_info),
-		.destroy    = connlimit_mt_destroy,
-		.me         = THIS_MODULE,
-	},
-	{
-		.name       = "connlimit",
-		.revision   = 1,
-		.family     = NFPROTO_UNSPEC,
-		.checkentry = connlimit_mt_check,
-		.match      = connlimit_mt,
-		.matchsize  = sizeof(struct xt_connlimit_info),
-		.destroy    = connlimit_mt_destroy,
-		.me         = THIS_MODULE,
-	},
+static struct xt_match connlimit_mt_reg __read_mostly = {
+	.name       = "connlimit",
+	.revision   = 1,
+	.family     = NFPROTO_UNSPEC,
+	.checkentry = connlimit_mt_check,
+	.match      = connlimit_mt,
+	.matchsize  = sizeof(struct xt_connlimit_info),
+	.destroy    = connlimit_mt_destroy,
+	.me         = THIS_MODULE,
 };
 
 static int __init connlimit_mt_init(void)
 {
-	return xt_register_matches(connlimit_mt_reg,
-	       ARRAY_SIZE(connlimit_mt_reg));
+	return xt_register_match(&connlimit_mt_reg);
 }
 
 static void __exit connlimit_mt_exit(void)
 {
-	xt_unregister_matches(connlimit_mt_reg, ARRAY_SIZE(connlimit_mt_reg));
+	xt_unregister_match(&connlimit_mt_reg);
 }
 
 module_init(connlimit_mt_init);
-- 
1.7.7.6

^ permalink raw reply related

* RE: [PATCH] net : fix for dst_gc_task not getting scheduled if __dst_free() is called consistently
From: Gupta Rajan-B15745 @ 2012-05-19 14:48 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: netdev@vger.kernel.org
In-Reply-To: <1337421863.7029.96.camel@edumazet-glaptop>

Ignore the patch. Issue is dst_gc_task is not getting
scheduled because of scheduling issue at 100% cpu utilization.

> -----Original Message-----
> From: Eric Dumazet [mailto:eric.dumazet@gmail.com]
> Sent: Saturday, May 19, 2012 3:34 PM
> To: Gupta Rajan-B15745
> Cc: netdev@vger.kernel.org
> Subject: Re: [PATCH] net : fix for dst_gc_task not getting scheduled if
> __dst_free() is called consistently
> 
> On Sat, 2012-05-19 at 04:44 -0500, b15745@freescale.com wrote:
> > From: Rajan Gupta <b15745@freescale.com>
> >
> > dst_gc_work is cancelled and again rescheduled in __ds_free(). In case
> > __dsf_free() is consistently called dst_gc_work will never get called
> > resulting in memory not getting freed at all until one stops calling
> > __dst_free
> > Signed-off-by: Rajan Gupta <b15745@freescale.com>
> > ---
> >  net/core/dst.c |    1 -
> >  1 file changed, 1 deletion(-)
> >
> > diff --git a/net/core/dst.c b/net/core/dst.c index 8246d47..6820206
> > 100644
> > --- a/net/core/dst.c
> > +++ b/net/core/dst.c
> > @@ -215,7 +215,6 @@ void __dst_free(struct dst_entry *dst)
> >  	if (dst_garbage.timer_inc > DST_GC_INC) {
> >  		dst_garbage.timer_inc = DST_GC_INC;
> >  		dst_garbage.timer_expires = DST_GC_MIN;
> > -		cancel_delayed_work(&dst_gc_work);
> >  		schedule_delayed_work(&dst_gc_work, dst_garbage.timer_expires);
> >  	}
> >  	spin_unlock_bh(&dst_garbage.lock);
> 
> Strange, I never met this....
> 
> Since "if (dst_garbage.timer_inc > DST_GC_INC)" will be false if timer_inc
> is DST_GC_INC.
> 
> 
> 


^ permalink raw reply

* [PATCH] net: qmi_wwan: Add Vodafone/Huawei K5005 support
From: Bjørn Mork @ 2012-05-19 17:20 UTC (permalink / raw)
  To: netdev-u79uwXL29TY76Z2rM5mHXA
  Cc: linux-usb-u79uwXL29TY76Z2rM5mHXA, Thomas Schäfer,
	Bjørn Mork

Tested-by: Thomas Schäfer <tschaefer-zqRNUXuvxA0b1SvskN2V4Q@public.gmane.org>
Signed-off-by: Bjørn Mork <bjorn-yOkvZcmFvRU@public.gmane.org>
---
 drivers/net/usb/qmi_wwan.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index 9048efe..346d4a6 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -401,6 +401,14 @@ static const struct usb_device_id products[] = {
 		.bInterfaceProtocol = 8, /* NOTE: This is the *slave* interface of the CDC Union! */
 		.driver_info        = (unsigned long)&qmi_wwan_info,
 	},
+	{	/* Vodafone/Huawei K5005 (12d1:14c8) and similar modems */
+		.match_flags        = USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_INT_INFO,
+		.idVendor           = HUAWEI_VENDOR_ID,
+		.bInterfaceClass    = USB_CLASS_VENDOR_SPEC,
+		.bInterfaceSubClass = 1,
+		.bInterfaceProtocol = 56, /* NOTE: This is the *slave* interface of the CDC Union! */
+		.driver_info        = (unsigned long)&qmi_wwan_info,
+	},
 	{	/* Huawei E392, E398 and possibly others in "Windows mode"
 		 * using a combined control and data interface without any CDC
 		 * functional descriptors
-- 
1.7.10

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related

* Re: [PATCH] USB CDC-Ether - Add ZTE WWAN matches before generic Ethernet
From: Bjørn Mork @ 2012-05-19 17:30 UTC (permalink / raw)
  To: Andrew Bird; +Cc: oliver, gregkh, linux-usb, netdev, linux-kernel
In-Reply-To: <1337435767-9544-1-git-send-email-ajb@spheresystems.co.uk>

Andrew Bird <ajb@spheresystems.co.uk> writes:

> Some ZTE WWAN devices have generic CDC Ether descriptors. Add those
> into the whitelist so that we get FLAG_WWAN on the interface

Are you sure none of these export QMI via the CDC Ether control
interface?  Or are they not Qualcomm devices at all?

As usual, if you see a spurious "CDC: unexpected notification 01" logged
from cdc_ether, then there is reason to examine those closer.  If you
don't see any such messages, then there isn't any QMI there.


Bjørn

^ permalink raw reply

* Re: [PATCH] USB CDC-Ether - Add ZTE WWAN matches before generic Ethernet
From: Andrew Bird (Sphere Systems) @ 2012-05-19 17:42 UTC (permalink / raw)
  To: Bjørn Mork; +Cc: oliver, gregkh, linux-usb, netdev, linux-kernel
In-Reply-To: <87aa14jcyi.fsf@nemi.mork.no>

On Saturday 19 May 2012, Bjørn Mork wrote:
> Andrew Bird <ajb@spheresystems.co.uk> writes:
> > Some ZTE WWAN devices have generic CDC Ether descriptors. Add those
> > into the whitelist so that we get FLAG_WWAN on the interface
> 
> Are you sure none of these export QMI via the CDC Ether control
> interface?  Or are they not Qualcomm devices at all?
> 
> As usual, if you see a spurious "CDC: unexpected notification 01" logged
> from cdc_ether, then there is reason to examine those closer.  If you
> don't see any such messages, then there isn't any QMI there.
> 
> 
> Bjørn

Hi Bjørn,
	No these are devices that use the Icera chipset. They have cdc-acm serial 
ports and firmware has implemented AT commands for (de)activating the pseudo 
Ethernet and getting IP + DNS values etc. Actually applying this patch will 
provide little in terms of operation except to make the interface name wwan%d 
unstead of usb%d and to flag the interface such that Network Manager does not 
try to bring it up via DHCP as soon as it appears, like it would with a fixed 
Ethernet interface.

Good tip about the 'unexpected notification 01' I'll look out for that!

Andrew

^ permalink raw reply

* Re: [PATCH 1/1]net:ethernet:fixed a coding style issue relating space.
From: David Miller @ 2012-05-19 18:36 UTC (permalink / raw)
  To: ahiliation; +Cc: netdev, linux-kernel
In-Reply-To: <1337421732.6524.YahooMailNeo@web192306.mail.sg3.yahoo.com>

From: Jeffrin Jose <ahiliation@yahoo.co.in>
Date: Sat, 19 May 2012 18:02:12 +0800 (SGT)

>>> Rather than put lips on a pig, why not remove the bogus if?
> is there anything i should work on this patch or should i move on

He's telling you to remove the code rather then try to fix
it's coding style.

^ permalink raw reply

* Re: [PATCH] net : fix for dst_gc_task not getting scheduled if __dst_free() is called consistently
From: David Miller @ 2012-05-19 18:36 UTC (permalink / raw)
  To: eric.dumazet; +Cc: b15745, netdev
In-Reply-To: <1337421863.7029.96.camel@edumazet-glaptop>

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Sat, 19 May 2012 12:04:23 +0200

> On Sat, 2012-05-19 at 04:44 -0500, b15745@freescale.com wrote:
>> From: Rajan Gupta <b15745@freescale.com>
>> 
>> dst_gc_work is cancelled and again rescheduled in __ds_free(). In case
>> __dsf_free() is consistently called dst_gc_work will never get called resulting in
>> memory not getting freed at all until one stops calling __dst_free
>> Signed-off-by: Rajan Gupta <b15745@freescale.com>
>> ---
>>  net/core/dst.c |    1 -
>>  1 file changed, 1 deletion(-)
>> 
>> diff --git a/net/core/dst.c b/net/core/dst.c
>> index 8246d47..6820206 100644
>> --- a/net/core/dst.c
>> +++ b/net/core/dst.c
>> @@ -215,7 +215,6 @@ void __dst_free(struct dst_entry *dst)
>>  	if (dst_garbage.timer_inc > DST_GC_INC) {
>>  		dst_garbage.timer_inc = DST_GC_INC;
>>  		dst_garbage.timer_expires = DST_GC_MIN;
>> -		cancel_delayed_work(&dst_gc_work);
>>  		schedule_delayed_work(&dst_gc_work, dst_garbage.timer_expires);
>>  	}
>>  	spin_unlock_bh(&dst_garbage.lock);
> 
> Strange, I never met this....
> 
> Since "if (dst_garbage.timer_inc > DST_GC_INC)" will be false if
> timer_inc is DST_GC_INC.

I'm not considering this patch at all until we figure out what
the real situation is here.

^ permalink raw reply

* Re: [RFC PATCH net-next] hp100: delete VG/AnyLAN hp100
From: Joel Soete @ 2012-05-19 19:28 UTC (permalink / raw)
  To: Francois Romieu
  Cc: Joe Perches, Paul Gortmaker, linux-kernel, JBottomley,
	David S. Miller, netdev
In-Reply-To: <20120517222843.GA30680@electric-eye.fr.zoreil.com>

Hello Joe, et al,

Effectively, I was using a hp100 but this system is retired since 2 years now (but I keep it just in case of major failure 
of the new box).

Cheers,
	J.

On 05/18/2012 12:28 AM, Francois Romieu wrote:
> Joe Perches<joe@perches.com>  :
>> On Thu, 2012-05-17 at 17:20 -0400, Paul Gortmaker wrote:
>>> [Re: [PATCH 2/5] drivers/net: delete all code/drivers depending on CONFIG_MCA
>>
>> If we're removing really old and unused stuff,
>> how about the VG/AnyLAN driver too?
>
> Joel Soete appeared to actively use a PCI one with recent kernels back
> in 2007.
>

^ permalink raw reply

* Re: [PATCH 1/1] net:ipv6:fixed space issues relating to operators.
From: David Miller @ 2012-05-19 22:35 UTC (permalink / raw)
  To: ahiliation; +Cc: kuznet, jmorris, yoshfuji, kaber, netdev, linux-kernel
In-Reply-To: <1337428744-2935-1-git-send-email-ahiliation@yahoo.co.in>

From: Jeffrin Jose <ahiliation@yahoo.co.in>
Date: Sat, 19 May 2012 17:29:04 +0530

> Fixed space issues relating to operators found by
> checkpatch.pl tool in net/ipv6/udp.c
> 
> Signed-off-by: Jeffrin Jose <ahiliation@yahoo.co.in>

Applied.

^ permalink raw reply

* Re: [PATCH net-next 1/3] net: introduce skb_try_coalesce()
From: David Miller @ 2012-05-19 22:35 UTC (permalink / raw)
  To: eric.dumazet; +Cc: netdev, alexander.h.duyck
In-Reply-To: <1337432522.7029.194.camel@edumazet-glaptop>

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Sat, 19 May 2012 15:02:02 +0200

> From: Eric Dumazet <edumazet@google.com>
> 
> Move tcp_try_coalesce() protocol independent part to 
> skb_try_coalesce().
> 
> skb_try_coalesce() can be used in IPv4 defrag and IPv6 reassembly,
> to build optimized skbs (less sk_buff, and possibly less 'headers')
> 
> skb_try_coalesce() is zero copy, unless the copy can fit in destination
> header (its a rare case)
> 
> kfree_skb_partial() is also moved to net/core/skbuff.c and exported,
> because IPv6 will need it in patch (ipv6: use skb coalescing in
> reassembly).
> 
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Cc: Alexander Duyck <alexander.h.duyck@intel.com>

Applied.

^ permalink raw reply

* Re: [PATCH net-next 2/3] ipv4: use skb coalescing in defragmentation
From: David Miller @ 2012-05-19 22:35 UTC (permalink / raw)
  To: eric.dumazet; +Cc: netdev, alexander.h.duyck
In-Reply-To: <1337432540.7029.195.camel@edumazet-glaptop>

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Sat, 19 May 2012 15:02:20 +0200

> From: Eric Dumazet <edumazet@google.com>
> 
> ip_frag_reasm() can use skb_try_coalesce() to build optimized skb,
> reducing memory used by them (truesize), and reducing number of cache
> line misses and overhead for the consumer.
> 
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Cc: Alexander Duyck <alexander.h.duyck@intel.com>

Applied.

^ permalink raw reply

* Re: [PATCH net-next] drivers/net: delete old 8bit ISA 3c501 driver.
From: David Miller @ 2012-05-19 22:33 UTC (permalink / raw)
  To: alan; +Cc: paul.gortmaker, linux, netdev
In-Reply-To: <20120519133038.282d0a7d@bob.linux.org.uk>

From: Alan Cox <alan@linux.intel.com>
Date: Sat, 19 May 2012 13:30:38 +0100

> However I don't think this is the right way to tackle the ethernet
> history situation. As with MCA we should pull *all* the real historical
> interest only bits in one go so it's immediately obvious where the
> break point is for all devices.

I don't think ISA is ever going to be something we can completely
eradicate.

Bits of ISA'ness show up everywhere, from random PC southbridges
to specialized busses shipped on 64-bit sparcs for 8-bit devices
like floppies and serial ports.

Therefore, unlike MCA, ISA is more of a kind of entity we'll have to
eradicate piecemeal I think.

^ permalink raw reply

* Re: [PATCH net-next 3/3] ipv6: use skb coalescing in reassembly
From: David Miller @ 2012-05-19 22:35 UTC (permalink / raw)
  To: eric.dumazet; +Cc: netdev, alexander.h.duyck
In-Reply-To: <1337432555.7029.196.camel@edumazet-glaptop>

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Sat, 19 May 2012 15:02:35 +0200

> From: Eric Dumazet <edumazet@google.com>
> 
> ip6_frag_reasm() can use skb_try_coalesce() to build optimized skb,
> reducing memory used by them (truesize), and reducing number of cache
> line misses and overhead for the consumer.
> 
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Cc: Alexander Duyck <alexander.h.duyck@intel.com>

Applied.

^ permalink raw reply

* Re: [PATCH 1/1] net:ipv6:fixed a trailing white space issue.
From: David Miller @ 2012-05-19 22:35 UTC (permalink / raw)
  To: ahiliation; +Cc: kuznet, jmorris, yoshfuji, kaber, netdev, linux-kernel
In-Reply-To: <1337427921-2848-1-git-send-email-ahiliation@yahoo.co.in>

From: Jeffrin Jose <ahiliation@yahoo.co.in>
Date: Sat, 19 May 2012 17:15:21 +0530

> Fixed a trailing white space issue found by
> checkpatch.pl tool in net/ipv6/udp.c
> 
> Signed-off-by: Jeffrin Jose <ahiliation@yahoo.co.in>

Applied.

^ permalink raw reply

* Re: [PATCH] USB CDC-Ether - Add ZTE WWAN matches before generic Ethernet
From: David Miller @ 2012-05-19 22:48 UTC (permalink / raw)
  To: ajb; +Cc: oliver, gregkh, linux-usb, netdev, linux-kernel
In-Reply-To: <1337435767-9544-1-git-send-email-ajb@spheresystems.co.uk>

From: Andrew Bird <ajb@spheresystems.co.uk>
Date: Sat, 19 May 2012 14:56:07 +0100

> Some ZTE WWAN devices have generic CDC Ether descriptors. Add those
> into the whitelist so that we get FLAG_WWAN on the interface
> 
> Signed-off-by: Andrew Bird <ajb@spheresystems.co.uk>

Applied.

But I changed the Subject line to have a more appropriate prefix,
namely "net: cdc_ether: "

^ permalink raw reply

* Re: [PATCH] net: qmi_wwan: Add Vodafone/Huawei K5005 support
From: David Miller @ 2012-05-19 22:48 UTC (permalink / raw)
  To: bjorn; +Cc: netdev, linux-usb, tschaefer
In-Reply-To: <1337448031-16897-1-git-send-email-bjorn@mork.no>

From: Bjørn Mork <bjorn@mork.no>
Date: Sat, 19 May 2012 19:20:31 +0200

> Tested-by: Thomas Schäfer <tschaefer@t-online.de>
> Signed-off-by: Bjørn Mork <bjorn@mork.no>

Applied.

^ permalink raw reply

* [PATCH] net/ipv4/ipconfig: neaten __setup placement
From: Eldad Zack @ 2012-05-20  0:04 UTC (permalink / raw)
  To: David S. Miller, Alexey Kuznetsov, James Morris,
	Hideaki YOSHIFUJI, Patrick McHardy
  Cc: netdev, linux-kernel, Eldad Zack

The __setup macro should follow the corresponding setup handler.

Signed-off-by: Eldad Zack <eldad@fogrefinery.com>
---
 net/ipv4/ipconfig.c |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index 92ac7e7..1d8076a 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -1626,11 +1626,13 @@ static int __init ip_auto_config_setup(char *addrs)
 
 	return 1;
 }
+__setup("ip=", ip_auto_config_setup);
 
 static int __init nfsaddrs_config_setup(char *addrs)
 {
 	return ip_auto_config_setup(addrs);
 }
+__setup("nfsaddrs=", nfsaddrs_config_setup);
 
 static int __init vendor_class_identifier_setup(char *addrs)
 {
@@ -1641,7 +1643,4 @@ static int __init vendor_class_identifier_setup(char *addrs)
 			vendor_class_identifier);
 	return 1;
 }
-
-__setup("ip=", ip_auto_config_setup);
-__setup("nfsaddrs=", nfsaddrs_config_setup);
 __setup("dhcpclass=", vendor_class_identifier_setup);
-- 
1.7.10

^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox