* [PATCH net-next 07/10] tipc: Create helper routine to delete unused name sequence structure
From: Paul Gortmaker @ 2012-04-30 22:37 UTC (permalink / raw)
To: davem; +Cc: netdev, allan.stephens, jon.maloy, erik.hugne, ying.xue
In-Reply-To: <1335825428-16053-1-git-send-email-paul.gortmaker@windriver.com>
From: Allan Stephens <allan.stephens@windriver.com>
Replaces two identical chunks of code that delete an unused name
sequence structure from TIPC's name table with calls to a new routine
that performs this operation.
This change is cosmetic and doesn't impact the operation of TIPC.
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
net/tipc/name_table.c | 27 +++++++++++++++------------
1 file changed, 15 insertions(+), 12 deletions(-)
diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c
index 25c2975..4222121 100644
--- a/net/tipc/name_table.c
+++ b/net/tipc/name_table.c
@@ -186,7 +186,19 @@ static struct name_seq *tipc_nameseq_create(u32 type, struct hlist_head *seq_hea
return nseq;
}
-/**
+/*
+ * nameseq_delete_empty - deletes a name sequence structure if now unused
+ */
+static void nameseq_delete_empty(struct name_seq *seq)
+{
+ if (!seq->first_free && list_empty(&seq->subscriptions)) {
+ hlist_del_init(&seq->ns_list);
+ kfree(seq->sseqs);
+ kfree(seq);
+ }
+}
+
+/*
* nameseq_find_subseq - find sub-sequence (if any) matching a name instance
*
* Very time-critical, so binary searches through sub-sequence array.
@@ -529,12 +541,7 @@ struct publication *tipc_nametbl_remove_publ(u32 type, u32 lower,
return NULL;
publ = tipc_nameseq_remove_publ(seq, lower, node, ref, key);
-
- if (!seq->first_free && list_empty(&seq->subscriptions)) {
- hlist_del_init(&seq->ns_list);
- kfree(seq->sseqs);
- kfree(seq);
- }
+ nameseq_delete_empty(seq);
return publ;
}
@@ -768,11 +775,7 @@ void tipc_nametbl_unsubscribe(struct tipc_subscription *s)
spin_lock_bh(&seq->lock);
list_del_init(&s->nameseq_list);
spin_unlock_bh(&seq->lock);
- if ((seq->first_free == 0) && list_empty(&seq->subscriptions)) {
- hlist_del_init(&seq->ns_list);
- kfree(seq->sseqs);
- kfree(seq);
- }
+ nameseq_delete_empty(seq);
}
write_unlock_bh(&tipc_nametbl_lock);
}
--
1.7.9.6
^ permalink raw reply related
* [PATCH net-next 06/10] tipc: remove redundant memset and stale comment from subscr.c
From: Paul Gortmaker @ 2012-04-30 22:37 UTC (permalink / raw)
To: davem; +Cc: netdev, allan.stephens, jon.maloy, erik.hugne, ying.xue
In-Reply-To: <1335825428-16053-1-git-send-email-paul.gortmaker@windriver.com>
From: Allan Stephens <allan.stephens@windriver.com>
Eliminate code to zero-out the main topology service structure,
which is already zeroed-out.
Get rid of a comment documenting a field of the main topology
service structure that no longer exists.
Both are cosmetic changes with no impact on runtime behaviour.
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
net/tipc/subscr.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/net/tipc/subscr.c b/net/tipc/subscr.c
index b2964e9..af93ea9 100644
--- a/net/tipc/subscr.c
+++ b/net/tipc/subscr.c
@@ -56,7 +56,6 @@ struct tipc_subscriber {
/**
* struct top_srv - TIPC network topology subscription service
- * @user_ref: TIPC userid of subscription service
* @setup_port: reference to TIPC port that handles subscription requests
* @subscription_count: number of active subscriptions (not subscribers!)
* @subscriber_list: list of ports subscribing to service
@@ -535,7 +534,6 @@ int tipc_subscr_start(void)
struct tipc_name_seq seq = {TIPC_TOP_SRV, TIPC_TOP_SRV, TIPC_TOP_SRV};
int res;
- memset(&topsrv, 0, sizeof(topsrv));
spin_lock_init(&topsrv.lock);
INIT_LIST_HEAD(&topsrv.subscriber_list);
--
1.7.9.6
^ permalink raw reply related
* [PATCH net-next 05/10] tipc: Optimize initialization of network topology service
From: Paul Gortmaker @ 2012-04-30 22:37 UTC (permalink / raw)
To: davem; +Cc: netdev, allan.stephens, jon.maloy, erik.hugne, ying.xue
In-Reply-To: <1335825428-16053-1-git-send-email-paul.gortmaker@windriver.com>
From: Allan Stephens <allan.stephens@windriver.com>
Initialization now occurs in the calling thread of control,
rather than being deferred to the TIPC tasklet. With the
current codebase, the deferral is no longer necessary.
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
net/tipc/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/tipc/core.c b/net/tipc/core.c
index c8a4f00..ba08940 100644
--- a/net/tipc/core.c
+++ b/net/tipc/core.c
@@ -150,7 +150,7 @@ static int tipc_core_start(void)
if (!res)
res = tipc_nametbl_init();
if (!res)
- res = tipc_k_signal((Handler)tipc_subscr_start, 0);
+ res = tipc_subscr_start();
if (!res)
res = tipc_cfg_init();
if (!res)
--
1.7.9.6
^ permalink raw reply related
* [PATCH net-next 04/10] tipc: Enhance re-initialization of network topology service
From: Paul Gortmaker @ 2012-04-30 22:37 UTC (permalink / raw)
To: davem; +Cc: netdev, allan.stephens, jon.maloy, erik.hugne, ying.xue
In-Reply-To: <1335825428-16053-1-git-send-email-paul.gortmaker@windriver.com>
From: Allan Stephens <allan.stephens@windriver.com>
Streamlines the job of re-initializing TIPC's network topology service
when a node's network address is first assigned. Rather than destroying
the topology server port and breaking its connections to existing
subscribers, TIPC now simply lets the service continue running (since
the change to the port identifier of each port used by the topology
service no longer impacts the flow of messages between the service and
its subscribers).
This enhancement means that applications that utilize the topology
service prior to the assignment of TIPC's network address no longer need
to re-establish their subscriptions when the address is finally assigned.
However, it is worth noting that any subsequent events for existing
subscriptions report the new port identifier of the publishing port,
rather than the original port identifier. (For example, a name that was
previously reported as being published by <0.0.0:ref> may be subsequently
withdrawn by <Z.C.N:ref>.)
This doesn't impact any of the existing known userspace in tipc-utils,
since (a) TIPC continues to treat references to the original port ID
correctly and (b) normal use cases assign an address before active use.
However if there does happen to be some rare/custom application out
there that was relying on this, they can simply bypass the enhancement
by issuing a subscription to {0,0} and break its connection to the
topology service, if an associated withdrawal event occurs.
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
net/tipc/net.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/net/tipc/net.c b/net/tipc/net.c
index f4a490b..7c236c8 100644
--- a/net/tipc/net.c
+++ b/net/tipc/net.c
@@ -175,8 +175,6 @@ int tipc_net_start(u32 addr)
{
char addr_string[16];
- tipc_subscr_stop();
-
write_lock_bh(&tipc_net_lock);
tipc_own_addr = addr;
tipc_named_reinit();
@@ -184,7 +182,6 @@ int tipc_net_start(u32 addr)
tipc_bclink_init();
write_unlock_bh(&tipc_net_lock);
- tipc_k_signal((Handler)tipc_subscr_start, 0);
tipc_cfg_reinit();
info("Started in network mode\n");
--
1.7.9.6
^ permalink raw reply related
* [PATCH net-next 03/10] tipc: Optimize termination of configuration service
From: Paul Gortmaker @ 2012-04-30 22:37 UTC (permalink / raw)
To: davem; +Cc: netdev, allan.stephens, jon.maloy, erik.hugne, ying.xue
In-Reply-To: <1335825428-16053-1-git-send-email-paul.gortmaker@windriver.com>
From: Allan Stephens <allan.stephens@windriver.com>
Termination no longer tests to see if the configuration service
port was successfully created or not. In the unlikely event that the
port was not created, attempting to delete the non-existent port is
detected gracefully and causes no harm.
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
net/tipc/config.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/net/tipc/config.c b/net/tipc/config.c
index a4988cd..843d7ae 100644
--- a/net/tipc/config.c
+++ b/net/tipc/config.c
@@ -506,8 +506,6 @@ void tipc_cfg_reinit(void)
void tipc_cfg_stop(void)
{
- if (config_port_ref) {
- tipc_deleteport(config_port_ref);
- config_port_ref = 0;
- }
+ tipc_deleteport(config_port_ref);
+ config_port_ref = 0;
}
--
1.7.9.6
^ permalink raw reply related
* [PATCH net-next 02/10] tipc: Optimize initialization of configuration service
From: Paul Gortmaker @ 2012-04-30 22:37 UTC (permalink / raw)
To: davem; +Cc: netdev, allan.stephens, jon.maloy, erik.hugne, ying.xue
In-Reply-To: <1335825428-16053-1-git-send-email-paul.gortmaker@windriver.com>
From: Allan Stephens <allan.stephens@windriver.com>
Initialization now occurs in the calling thread of control,
rather than being deferred to the TIPC tasklet. With the
current codebase, the deferral is no longer necessary.
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
net/tipc/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/tipc/core.c b/net/tipc/core.c
index 68eba03..c8a4f00 100644
--- a/net/tipc/core.c
+++ b/net/tipc/core.c
@@ -152,7 +152,7 @@ static int tipc_core_start(void)
if (!res)
res = tipc_k_signal((Handler)tipc_subscr_start, 0);
if (!res)
- res = tipc_k_signal((Handler)tipc_cfg_init, 0);
+ res = tipc_cfg_init();
if (!res)
res = tipc_netlink_start();
if (!res)
--
1.7.9.6
^ permalink raw reply related
* [PATCH net-next 01/10] tipc: Optimize re-initialization of configuration service
From: Paul Gortmaker @ 2012-04-30 22:36 UTC (permalink / raw)
To: davem; +Cc: netdev, allan.stephens, jon.maloy, erik.hugne, ying.xue
In-Reply-To: <1335825428-16053-1-git-send-email-paul.gortmaker@windriver.com>
From: Allan Stephens <allan.stephens@windriver.com>
Streamlines the job of re-initializing TIPC's configuration service
when a node's network address is first assigned. Rather than destroying
the configuration server port and then recreating it, TIPC now simply
withdraws the existing {0,<0.0.0>} name publication and creates a new
{0,<Z.C.N>} name publication that identifies the node's network address
to interested subscribers.
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
net/tipc/config.c | 15 +++++++++++++++
net/tipc/config.h | 1 +
net/tipc/net.c | 3 +--
3 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/net/tipc/config.c b/net/tipc/config.c
index f5458ed..a4988cd 100644
--- a/net/tipc/config.c
+++ b/net/tipc/config.c
@@ -489,6 +489,21 @@ failed:
return res;
}
+void tipc_cfg_reinit(void)
+{
+ struct tipc_name_seq seq;
+ int res;
+
+ seq.type = TIPC_CFG_SRV;
+ seq.lower = seq.upper = 0;
+ tipc_withdraw(config_port_ref, TIPC_ZONE_SCOPE, &seq);
+
+ seq.lower = seq.upper = tipc_own_addr;
+ res = tipc_publish(config_port_ref, TIPC_ZONE_SCOPE, &seq);
+ if (res)
+ err("Unable to reinitialize configuration service\n");
+}
+
void tipc_cfg_stop(void)
{
if (config_port_ref) {
diff --git a/net/tipc/config.h b/net/tipc/config.h
index 80da6eb..1f252f3 100644
--- a/net/tipc/config.h
+++ b/net/tipc/config.h
@@ -66,6 +66,7 @@ struct sk_buff *tipc_cfg_do_cmd(u32 orig_node, u16 cmd,
int headroom);
int tipc_cfg_init(void);
+void tipc_cfg_reinit(void);
void tipc_cfg_stop(void);
#endif
diff --git a/net/tipc/net.c b/net/tipc/net.c
index 5fab4ff..f4a490b 100644
--- a/net/tipc/net.c
+++ b/net/tipc/net.c
@@ -176,7 +176,6 @@ int tipc_net_start(u32 addr)
char addr_string[16];
tipc_subscr_stop();
- tipc_cfg_stop();
write_lock_bh(&tipc_net_lock);
tipc_own_addr = addr;
@@ -186,7 +185,7 @@ int tipc_net_start(u32 addr)
write_unlock_bh(&tipc_net_lock);
tipc_k_signal((Handler)tipc_subscr_start, 0);
- tipc_k_signal((Handler)tipc_cfg_init, 0);
+ tipc_cfg_reinit();
info("Started in network mode\n");
info("Own node address %s, network identity %u\n",
--
1.7.9.6
^ permalink raw reply related
* [PATCH net-next 00/10] tipc: last batch from the sourceforge queue
From: Paul Gortmaker @ 2012-04-30 22:36 UTC (permalink / raw)
To: davem; +Cc: netdev, allan.stephens, jon.maloy, erik.hugne, ying.xue
Dave,
I'm glad to say this represents the last batch of salvaged commits
from what was the sourceforge queue of stuff misplaced on the older
v2.6.19/v1.7.x baseline. Going forward, folks got a clear message
that they _must_ put forward any new/prospective changes on netdev
for peer review and ask for continuous integration and not stockpile
crap in a corner (cause I'm sure as hell not going to volunteer to
be Winston Wolf for it again).
Anyway, knowing that there isn't any more "old" patches from that to
worry about, I took the opportunity to close out by clobbering a bunch
of needless extra blank lines following comments, since there isn't
any pending patch context fallout to worry about. This one cosmetic
change alone makes up most of the diffstat, giving:
32 files changed, 16 insertions(+), 530 deletions(-)
out of the total:
34 files changed, 58 insertions(+), 567 deletions(-)
That aside, the meat of what is here is:
-reduce some of the build up/tear down on configuration paths
-more strict checks on published names and payload types
-factor out some duplicated code; +some redundant code deletion.
Testing has been the usual 64 <---> 32bit using tipc-utils ptts.
I still want to look at your suggestion of reusing existing code
for the logging stuff someday, now that the queue is closed out,
but that is completely separate from the backlog, and it probably
isn't going to be happening in the 3.5 timeframe.
Thanks,
Paul.
---
The following changes since commit 9cf6ace5f5c7981f5df76af3e1b90d77cc3cdece:
mISDN: DSP scheduling fix (version 2) (2012-04-26 03:10:45 -0400)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux.git tipc_net-next
for you to fetch changes up to 617d3c7a50b3dc15f558d60013047aede79dc055:
tipc: compress out gratuitous extra carriage returns (2012-04-30 15:53:56 -0400)
----------------------------------------------------------------
Allan Stephens (9):
tipc: Optimize re-initialization of configuration service
tipc: Optimize initialization of configuration service
tipc: Optimize termination of configuration service
tipc: Enhance re-initialization of network topology service
tipc: Optimize initialization of network topology service
tipc: remove redundant memset and stale comment from subscr.c
tipc: Create helper routine to delete unused name sequence structure
tipc: Enhance error checking of published names
tipc: Reject payload messages with invalid message type
Paul Gortmaker (1):
tipc: compress out gratuitous extra carriage returns
net/tipc/Makefile | 2 -
net/tipc/addr.c | 3 --
net/tipc/addr.h | 3 --
net/tipc/bcast.c | 22 ---------
net/tipc/bcast.h | 3 --
net/tipc/bearer.c | 22 +--------
net/tipc/bearer.h | 4 --
net/tipc/config.c | 28 ++++++-----
net/tipc/config.h | 1 +
net/tipc/core.c | 11 +----
net/tipc/core.h | 14 ------
net/tipc/discover.c | 14 ------
net/tipc/eth_media.c | 19 --------
net/tipc/handler.c | 1 -
net/tipc/link.c | 120 ++----------------------------------------------
net/tipc/link.h | 6 ---
net/tipc/log.c | 14 ------
net/tipc/log.h | 1 -
net/tipc/msg.c | 3 --
net/tipc/msg.h | 21 ---------
net/tipc/name_distr.c | 11 -----
net/tipc/name_table.c | 84 ++++++++++-----------------------
net/tipc/name_table.h | 3 --
net/tipc/net.c | 6 +--
net/tipc/node.c | 13 ------
net/tipc/node.h | 2 -
net/tipc/node_subscr.c | 3 --
net/tipc/node_subscr.h | 1 -
net/tipc/port.c | 37 +--------------
net/tipc/port.h | 3 --
net/tipc/ref.c | 13 ------
net/tipc/socket.c | 90 ++----------------------------------
net/tipc/subscr.c | 45 ------------------
net/tipc/subscr.h | 2 -
34 files changed, 58 insertions(+), 567 deletions(-)
--
1.7.9.6
^ permalink raw reply
* Re: [REGRESSION][PATCH V4 3/3] bpf jit: Let the powerpc jit handle negative offsets
From: Jan Seiffert @ 2012-04-30 22:32 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: David Miller, eric.dumazet, netdev, linux-kernel
In-Reply-To: <1335823049.20866.48.camel@pasglop>
Benjamin Herrenschmidt schrieb:
> On Tue, 2012-05-01 at 07:55 +1000, Benjamin Herrenschmidt wrote:
>> On Mon, 2012-04-30 at 13:41 -0400, David Miller wrote:
>>> From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
>>> Date: Mon, 30 Apr 2012 15:26:08 +1000
>>>
>>>> David, what's the right way to fix that ?
>>>
>>> There is no doubt that sock_fprog is the correct datastructure to use.
>>
>> Ok, so the right fix is to email anybody who posted code using struct
>> bpf_program to fix their code ? :-)
>
> Actually, the right fix is for anybody using pcap-bpf.h to not
> use SO_ATTACH_FILTER directly but to use pcap_setfilter() which
> handles the compatibility.
>
*shudder*
Link to another lib for only one function because....
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/net/bpf.h?rev=1.59&content-type=text/x-cvsweb-markup&only_with_tag=MAIN
The "Original" says it's an u_int.
But i guess it is unfixable without breaking something, except with ugly code.
Should the padding at least be made explicit in the in-kernel struct?
Did anyone ever tested the 32bit on 64bit compat code (different padding)?
> I'll start spamming web sites who tell people to do the wrong thing.
>
> Cheers,
> Ben.
>
Greetings
Jan
--
A UDP packet walks into a
^ permalink raw reply
* Re: [PATCH 06/15] batman-adv: Distributed ARP Table - add snooping functions for ARP messages
From: Antonio Quartulli @ 2012-04-30 22:22 UTC (permalink / raw)
To: David Miller
Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
b.a.t.m.a.n-ZwoEplunGu2X36UT3dwllkB+6BGkLq7r
In-Reply-To: <20120430.130555.48557916635285475.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 2248 bytes --]
On Mon, Apr 30, 2012 at 01:05:55 -0400, David Miller wrote:
> From: Antonio Quartulli <ordex-GaUfNO9RBHfsrOwW+9ziJQ@public.gmane.org>
> Date: Sun, 29 Apr 2012 10:57:38 +0200
>
> > In case of an ARP message going in or out the soft_iface, it is intercepted and
> > a special action is performed. In particular the DHT helper functions previously
> > implemented are used to store all the ARP entries belonging to the network in
> > order to provide a fast and unicast lookup instead of the classic broadcast
> > flooding mechanism.
> > Each node stores the entries it is responsible for (following the DHT rules) in
> > its soft_iface ARP table. This makes it possible to reuse the kernel data
> > structures and functions for ARP management.
> >
> > Signed-off-by: Antonio Quartulli <ordex-GaUfNO9RBHfsrOwW+9ziJQ@public.gmane.org>
>
> Sorry, I'm not letting subsystems outside of net/ipv4/arp.c and related
> code make changes to the ARP table.
>
> I plan to make major surgery to the way neighbour table entries are
> handled and therefore the less people who get their grubby paws
> directly in there, the better.
>
> Find a way to propagate the ARP packet into the properl ARP receive
> path to cause the state update to occur, I'm not letting you trigger
> it by hand in the batman-adv code.
>
> Sorry.
Hello David,
I perfectly understand. We did it that way because we thought that we could use
the exported API.
At this point, in my honest opinion, it is better to postpone this new feature
for a later pull request.
However this patch also contains a procedure which queries the neigh table in
order to understand whether a given host is known or not.
Would it be possible to do that in another way (Without manually touching the
table)?
Instead, in the next patch (patch 06/15) batman-adv manually increase the neigh
timeouts. Do you think we should avoid doing that as well? If we are allowed to
do that, how can we perform the same operation in a cleaner way?
Last question: why can't other modules use exported functions? Are you going to
change them as well?
Thank you very much,
--
Antonio Quartulli
..each of us alone is worth nothing..
Ernesto "Che" Guevara
[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]
^ permalink raw reply
* Re: [REGRESSION][PATCH V4 3/3] bpf jit: Let the powerpc jit handle negative offsets
From: Benjamin Herrenschmidt @ 2012-04-30 21:57 UTC (permalink / raw)
To: David Miller
Cc: kaffeemonster, eric.dumazet, matt, netdev, linux-kernel,
linuxppc-dev
In-Reply-To: <1335822926.20866.47.camel@pasglop>
On Tue, 2012-05-01 at 07:55 +1000, Benjamin Herrenschmidt wrote:
> On Mon, 2012-04-30 at 13:41 -0400, David Miller wrote:
> > From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> > Date: Mon, 30 Apr 2012 15:26:08 +1000
> >
> > > David, what's the right way to fix that ?
> >
> > There is no doubt that sock_fprog is the correct datastructure to use.
>
> Ok, so the right fix is to email anybody who posted code using struct
> bpf_program to fix their code ? :-)
Actually, the right fix is for anybody using pcap-bpf.h to not
use SO_ATTACH_FILTER directly but to use pcap_setfilter() which
handles the compatibility.
I'll start spamming web sites who tell people to do the wrong thing.
Cheers,
Ben.
^ permalink raw reply
* Re: [REGRESSION][PATCH V4 3/3] bpf jit: Let the powerpc jit handle negative offsets
From: Benjamin Herrenschmidt @ 2012-04-30 21:55 UTC (permalink / raw)
To: David Miller
Cc: kaffeemonster, eric.dumazet, matt, netdev, linux-kernel,
linuxppc-dev
In-Reply-To: <20120430.134140.1738751315208907289.davem@davemloft.net>
On Mon, 2012-04-30 at 13:41 -0400, David Miller wrote:
> From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Date: Mon, 30 Apr 2012 15:26:08 +1000
>
> > David, what's the right way to fix that ?
>
> There is no doubt that sock_fprog is the correct datastructure to use.
Ok, so the right fix is to email anybody who posted code using struct
bpf_program to fix their code ? :-)
My question was more along the lines of should we attempt changing one
of the two variants to make them match on BE (since they are in effect
compatible on LE), tho of course this could have the usual annoying
consequence of breaking the mangled c++ name of the symbol).
>From your reply I assume the answer is no... so that leaves us to chase
up users and fix them. Great....
Cheers,
Ben.
^ permalink raw reply
* Re: sky2 still badly broken
From: Stephen Hemminger @ 2012-04-30 19:25 UTC (permalink / raw)
To: Niccolò Belli; +Cc: netdev
In-Reply-To: <4F9AFE4E.8010108@linuxsystems.it>
On Fri, 27 Apr 2012 22:15:10 +0200
Niccolò Belli <darkbasic@linuxsystems.it> wrote:
> dmesg is full of
>
> [ 1464.914044] sky2 0000:06:00.0: eth0: rx error, status 0x5220002
> length 1314
> [ 1465.005628] sky2 0000:06:00.0: eth0: rx error, status 0x7ffc0001
> length 532
> [ 1465.204459] sky2 0000:06:00.0: eth0: rx error, status 0x7ffc0001
> length 532
> [ 1465.825909] sky2 0000:06:00.0: eth0: rx error, status 0x7ffc0001
> length 532
> [ 1468.715858] net_ratelimit: 3 callbacks suppressed
> [ 1468.715865] sky2 0000:06:00.0: eth0: rx error, status 0x7ffc0001
> length 532
>
> dhcp does not work (after a few minutes it does not renew the ip)
>
> while under heavy load the card resets and I have to unload and reload
> the module
>
> also transfer rate is VERY low.
>
> lowering the mtu does help a bit, but it doesn't make miracles...
>
> kernel 3.4.0-rc4
>
> 06:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8055 PCI-E
> Gigabit Ethernet Controller (rev 13)
>
> http://forums.gentoo.org/viewtopic-t-487018-start-0-postdays-0-postorder-asc-highlight-.html
You are getting CRC and FIFO overrun errors. What laptop is this?
Everything works fine on my old Fuijitsu with same chip (but rev 14).
You could try taking out the status bit checks and see if the
packets are really okay and the Marvell chip is complaining about
bogus status.
The Gentoo thread is so old as to be meaningless and unrelated.
^ permalink raw reply
* Re: [RFT] sky2: fix status length check on older chips
From: Niccolò Belli @ 2012-04-30 18:23 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: netdev
In-Reply-To: <20120430091952.402567ad@nehalam.linuxnetplumber.net>
Il 30/04/2012 18:19, Stephen Hemminger ha scritto:
> Still your laptop will receive vlan frames (even just broadcasts).
Right, so I tested it with a point2point connection: I have the very
same problem.
Niccolò
^ permalink raw reply
* [PATCH 3/4 v2 net-next] net: make GRO aware of skb->head_frag
From: Eric Dumazet @ 2012-04-30 18:10 UTC (permalink / raw)
To: David Miller
Cc: netdev, Neal Cardwell, Tom Herbert, Jeff Kirsher, Michael Chan,
Matt Carlson, Herbert Xu, Ben Hutchings, Ilpo Järvinen,
Maciej Żenczykowski
In-Reply-To: <1335523026.2775.236.camel@edumazet-glaptop>
From: Eric Dumazet <edumazet@google.com>
GRO can check if skb to be merged has its skb->head mapped to a page
fragment, instead of a kmalloc() area.
We 'upgrade' skb->head as a fragment in itself
This avoids the frag_list fallback, and permits to build true GRO skb
(one sk_buff and up to 16 fragments), using less memory.
This reduces number of cache misses when user makes its copy, since a
single sk_buff is fetched.
This is a followup of patch "net: allow skb->head to be a page fragment"
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Maciej Żenczykowski <maze@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Cc: Tom Herbert <therbert@google.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Ben Hutchings <bhutchings@solarflare.com>
Cc: Matt Carlson <mcarlson@broadcom.com>
Cc: Michael Chan <mchan@broadcom.com>
---
v2: change skb->head by skb->data to compute correct first_offset in
frag
include/linux/netdevice.h | 2 ++
include/linux/skbuff.h | 1 +
net/core/dev.c | 5 ++++-
net/core/skbuff.c | 27 ++++++++++++++++++++++++++-
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index e0b70e9..7f377fb 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1509,6 +1509,8 @@ struct napi_gro_cb {
/* Free the skb? */
int free;
+#define NAPI_GRO_FREE 1
+#define NAPI_GRO_FREE_STOLEN_HEAD 2
};
#define NAPI_GRO_CB(skb) ((struct napi_gro_cb *)(skb)->cb)
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 9d28a22..2c75e98 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -561,6 +561,7 @@ static inline struct rtable *skb_rtable(const struct sk_buff *skb)
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 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/dev.c b/net/core/dev.c
index 501f3cc..a2be59f 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3546,7 +3546,10 @@ gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb)
break;
case GRO_MERGED_FREE:
- consume_skb(skb);
+ if (NAPI_GRO_CB(skb)->free == NAPI_GRO_FREE_STOLEN_HEAD)
+ kmem_cache_free(skbuff_head_cache, skb);
+ else
+ __kfree_skb(skb);
break;
case GRO_HELD:
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index effa75d..2ad1ee7 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -69,7 +69,7 @@
#include <trace/events/skb.h>
#include <linux/highmem.h>
-static struct kmem_cache *skbuff_head_cache __read_mostly;
+struct kmem_cache *skbuff_head_cache __read_mostly;
static struct kmem_cache *skbuff_fclone_cache __read_mostly;
static void sock_pipe_buf_release(struct pipe_inode_info *pipe,
@@ -2901,6 +2901,31 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb)
NAPI_GRO_CB(skb)->free = 1;
goto done;
+ } else if (skb->head_frag) {
+ int nr_frags = pinfo->nr_frags;
+ skb_frag_t *frag = pinfo->frags + nr_frags;
+ struct page *page = virt_to_head_page(skb->head);
+ unsigned int first_size = headlen - offset;
+ unsigned int first_offset;
+
+ if (nr_frags + 1 + skbinfo->nr_frags > MAX_SKB_FRAGS)
+ return -E2BIG;
+
+ first_offset = skb->data -
+ (unsigned char *)page_address(page) +
+ offset;
+
+ pinfo->nr_frags = nr_frags + 1 + skbinfo->nr_frags;
+
+ frag->page.p = page;
+ frag->page_offset = first_offset;
+ skb_frag_size_set(frag, first_size);
+
+ memcpy(frag + 1, skbinfo->frags, sizeof(*frag) * skbinfo->nr_frags);
+ /* We dont need to clear skbinfo->nr_frags here */
+
+ NAPI_GRO_CB(skb)->free = NAPI_GRO_FREE_STOLEN_HEAD;
+ goto done;
} else if (skb_gro_len(p) != pinfo->gso_size)
return -E2BIG;
^ permalink raw reply related
* [PATCH 7/7] smsc75xx: enable mac to detect speed/duplex from phy
From: Steve Glendinning @ 2012-04-30 17:56 UTC (permalink / raw)
To: netdev; +Cc: David Miller, Stephane Fillod, Steve Glendinning
In-Reply-To: <1335808616-22513-1-git-send-email-steve.glendinning@shawell.net>
This patch sets the automatic speed and duplex detection bits
in MAC_CR to enable the mac to determine its speed automatically
from the phy.
Note this must be done BEFORE the receiver or transmitter is
enabled.
Signed-off-by: Stephane Fillod <fillods@users.sf.net>
Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net>
---
drivers/net/usb/smsc75xx.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
index ae23d85..00103a8 100644
--- a/drivers/net/usb/smsc75xx.c
+++ b/drivers/net/usb/smsc75xx.c
@@ -951,6 +951,14 @@ static int smsc75xx_reset(struct usbnet *dev)
ret = smsc75xx_write_reg(dev, INT_EP_CTL, buf);
check_warn_return(ret, "Failed to write INT_EP_CTL: %d", ret);
+ /* allow mac to detect speed and duplex from phy */
+ ret = smsc75xx_read_reg(dev, MAC_CR, &buf);
+ check_warn_return(ret, "Failed to read MAC_CR: %d", ret);
+
+ buf |= (MAC_CR_ADD | MAC_CR_ASD);
+ ret = smsc75xx_write_reg(dev, MAC_CR, buf);
+ check_warn_return(ret, "Failed to write MAC_CR: %d", ret);
+
ret = smsc75xx_read_reg(dev, MAC_TX, &buf);
check_warn_return(ret, "Failed to read MAC_TX: %d", ret);
--
1.7.9.5
^ permalink raw reply related
* [PATCH 6/7] smsc75xx: declare smsc75xx's MII as GMII capable
From: Steve Glendinning @ 2012-04-30 17:56 UTC (permalink / raw)
To: netdev; +Cc: David Miller, Stephane Fillod, Steve Glendinning
In-Reply-To: <1335808616-22513-1-git-send-email-steve.glendinning@shawell.net>
also explicitly set the phy to advertise 1000 speeds
Signed-off-by: Stephane Fillod <fillods@users.sf.net>
Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net>
---
drivers/net/usb/smsc75xx.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
index 4941782..ae23d85 100644
--- a/drivers/net/usb/smsc75xx.c
+++ b/drivers/net/usb/smsc75xx.c
@@ -652,6 +652,7 @@ static int smsc75xx_phy_initialize(struct usbnet *dev)
dev->mii.mdio_write = smsc75xx_mdio_write;
dev->mii.phy_id_mask = 0x1f;
dev->mii.reg_num_mask = 0x1f;
+ dev->mii.supports_gmii = 1;
dev->mii.phy_id = SMSC75XX_INTERNAL_PHY_ID;
/* reset phy and wait for reset to complete */
@@ -672,6 +673,8 @@ static int smsc75xx_phy_initialize(struct usbnet *dev)
smsc75xx_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE,
ADVERTISE_ALL | ADVERTISE_CSMA | ADVERTISE_PAUSE_CAP |
ADVERTISE_PAUSE_ASYM);
+ smsc75xx_mdio_write(dev->net, dev->mii.phy_id, MII_CTRL1000,
+ ADVERTISE_1000FULL);
/* read and write to clear phy interrupt status */
ret = smsc75xx_mdio_read(dev->net, dev->mii.phy_id, PHY_INT_SRC);
--
1.7.9.5
^ permalink raw reply related
* [PATCH 5/7] smsc75xx: fix phy interrupt acknowledge
From: Steve Glendinning @ 2012-04-30 17:56 UTC (permalink / raw)
To: netdev; +Cc: David Miller, Stephane Fillod, Steve Glendinning
In-Reply-To: <1335808616-22513-1-git-send-email-steve.glendinning@shawell.net>
smsc75xx phy interrupt acknowledge needs an mdio_write to clear
PHY_INT_SRC instead of just a read like in smsc95xx.
Signed-off-by: Stephane Fillod <fillods@users.sf.net>
Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net>
---
drivers/net/usb/smsc75xx.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
index cc23a58..4941782 100644
--- a/drivers/net/usb/smsc75xx.c
+++ b/drivers/net/usb/smsc75xx.c
@@ -508,9 +508,10 @@ static int smsc75xx_link_reset(struct usbnet *dev)
u16 lcladv, rmtadv;
int ret;
- /* clear interrupt status */
+ /* read and write to clear phy interrupt status */
ret = smsc75xx_mdio_read(dev->net, mii->phy_id, PHY_INT_SRC);
check_warn_return(ret, "Error reading PHY_INT_SRC");
+ smsc75xx_mdio_write(dev->net, mii->phy_id, PHY_INT_SRC, 0xffff);
ret = smsc75xx_write_reg(dev, INT_STS, INT_STS_CLEAR_ALL);
check_warn_return(ret, "Error writing INT_STS");
@@ -643,7 +644,7 @@ static int smsc75xx_set_mac_address(struct usbnet *dev)
static int smsc75xx_phy_initialize(struct usbnet *dev)
{
- int bmcr, timeout = 0;
+ int bmcr, ret, timeout = 0;
/* Initialize MII structure */
dev->mii.dev = dev->net;
@@ -672,9 +673,10 @@ static int smsc75xx_phy_initialize(struct usbnet *dev)
ADVERTISE_ALL | ADVERTISE_CSMA | ADVERTISE_PAUSE_CAP |
ADVERTISE_PAUSE_ASYM);
- /* read to clear */
- smsc75xx_mdio_read(dev->net, dev->mii.phy_id, PHY_INT_SRC);
- check_warn_return(bmcr, "Error reading PHY_INT_SRC");
+ /* read and write to clear phy interrupt status */
+ ret = smsc75xx_mdio_read(dev->net, dev->mii.phy_id, PHY_INT_SRC);
+ check_warn_return(ret, "Error reading PHY_INT_SRC");
+ smsc75xx_mdio_write(dev->net, dev->mii.phy_id, PHY_INT_SRC, 0xffff);
smsc75xx_mdio_write(dev->net, dev->mii.phy_id, PHY_INT_MASK,
PHY_INT_MASK_DEFAULT);
--
1.7.9.5
^ permalink raw reply related
* [PATCH 4/7] smsc75xx: fix phy init reset loop
From: Steve Glendinning @ 2012-04-30 17:56 UTC (permalink / raw)
To: netdev; +Cc: David Miller, Stephane Fillod, Steve Glendinning
In-Reply-To: <1335808616-22513-1-git-send-email-steve.glendinning@shawell.net>
fix bug in phy_init loop that was ignoring BMCR reset bit, akin to smsc95xx's d946092000698fd204d82a9d239103c656fb63bf
Signed-off-by: Stephane Fillod <fillods@users.sf.net>
Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net>
---
drivers/net/usb/smsc75xx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
index 1de7785..cc23a58 100644
--- a/drivers/net/usb/smsc75xx.c
+++ b/drivers/net/usb/smsc75xx.c
@@ -661,7 +661,7 @@ static int smsc75xx_phy_initialize(struct usbnet *dev)
bmcr = smsc75xx_mdio_read(dev->net, dev->mii.phy_id, MII_BMCR);
check_warn_return(bmcr, "Error reading MII_BMCR");
timeout++;
- } while ((bmcr & MII_BMCR) && (timeout < 100));
+ } while ((bmcr & BMCR_RESET) && (timeout < 100));
if (timeout >= 100) {
netdev_warn(dev->net, "timeout on PHY Reset");
--
1.7.9.5
^ permalink raw reply related
* [PATCH 3/7] smsc75xx: add more information to register io failure warnings
From: Steve Glendinning @ 2012-04-30 17:56 UTC (permalink / raw)
To: netdev; +Cc: David Miller, Stephane Fillod, Steve Glendinning
In-Reply-To: <1335808616-22513-1-git-send-email-steve.glendinning@shawell.net>
Signed-off-by: Stephane Fillod <fillods@users.sf.net>
Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net>
---
drivers/net/usb/smsc75xx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
index f97207a..1de7785 100644
--- a/drivers/net/usb/smsc75xx.c
+++ b/drivers/net/usb/smsc75xx.c
@@ -98,7 +98,7 @@ static int __must_check smsc75xx_read_reg(struct usbnet *dev, u32 index,
if (unlikely(ret < 0))
netdev_warn(dev->net,
- "Failed to read register index 0x%08x", index);
+ "Failed to read reg index 0x%08x: %d", index, ret);
le32_to_cpus(buf);
*data = *buf;
@@ -128,7 +128,7 @@ static int __must_check smsc75xx_write_reg(struct usbnet *dev, u32 index,
if (unlikely(ret < 0))
netdev_warn(dev->net,
- "Failed to write register index 0x%08x", index);
+ "Failed to write reg index 0x%08x: %d", index, ret);
kfree(buf);
--
1.7.9.5
^ permalink raw reply related
* [PATCH 2/7] smsc75xx: fix mdio reads and writes
From: Steve Glendinning @ 2012-04-30 17:56 UTC (permalink / raw)
To: netdev; +Cc: David Miller, Stephane Fillod, Steve Glendinning
In-Reply-To: <1335808616-22513-1-git-send-email-steve.glendinning@shawell.net>
smsc75xx needs MII_ACCESS_BUSY to be set to correctly trigger mdio I/O. Note smsc75xx is different from smsc95xx in this regard.
Signed-off-by: Stephane Fillod <fillods@users.sf.net>
Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net>
---
drivers/net/usb/smsc75xx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
index b1b4649..f97207a 100644
--- a/drivers/net/usb/smsc75xx.c
+++ b/drivers/net/usb/smsc75xx.c
@@ -171,7 +171,7 @@ static int smsc75xx_mdio_read(struct net_device *netdev, int phy_id, int idx)
idx &= dev->mii.reg_num_mask;
addr = ((phy_id << MII_ACCESS_PHY_ADDR_SHIFT) & MII_ACCESS_PHY_ADDR)
| ((idx << MII_ACCESS_REG_ADDR_SHIFT) & MII_ACCESS_REG_ADDR)
- | MII_ACCESS_READ;
+ | MII_ACCESS_READ | MII_ACCESS_BUSY;
ret = smsc75xx_write_reg(dev, MII_ACCESS, addr);
check_warn_goto_done(ret, "Error writing MII_ACCESS");
@@ -210,7 +210,7 @@ static void smsc75xx_mdio_write(struct net_device *netdev, int phy_id, int idx,
idx &= dev->mii.reg_num_mask;
addr = ((phy_id << MII_ACCESS_PHY_ADDR_SHIFT) & MII_ACCESS_PHY_ADDR)
| ((idx << MII_ACCESS_REG_ADDR_SHIFT) & MII_ACCESS_REG_ADDR)
- | MII_ACCESS_WRITE;
+ | MII_ACCESS_WRITE | MII_ACCESS_BUSY;
ret = smsc75xx_write_reg(dev, MII_ACCESS, addr);
check_warn_goto_done(ret, "Error writing MII_ACCESS");
--
1.7.9.5
^ permalink raw reply related
* [PATCH 1/7] smsc75xx: mark link down on startup and let PHY interrupt deal with carrier changes
From: Steve Glendinning @ 2012-04-30 17:56 UTC (permalink / raw)
To: netdev; +Cc: David Miller, Stephane Fillod, Steve Glendinning
In-Reply-To: <1335808616-22513-1-git-send-email-steve.glendinning@shawell.net>
This patch fixes the same issue as reported on smsc95xx, where the
usb device is connected with no ethernet cable plugged-in.
Without this patch sysfs reports the cable as present
flag@flag-desktop:~$ cat /sys/class/net/eth0/carrier
1
while it's not:
flag@flag-desktop:~$ sudo mii-tool eth0
eth0: no link
Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net>
---
drivers/net/usb/smsc75xx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
index a234948..b1b4649 100644
--- a/drivers/net/usb/smsc75xx.c
+++ b/drivers/net/usb/smsc75xx.c
@@ -1212,7 +1212,7 @@ static const struct driver_info smsc75xx_info = {
.rx_fixup = smsc75xx_rx_fixup,
.tx_fixup = smsc75xx_tx_fixup,
.status = smsc75xx_status,
- .flags = FLAG_ETHER | FLAG_SEND_ZLP,
+ .flags = FLAG_ETHER | FLAG_SEND_ZLP | FLAG_LINK_INTR,
};
static const struct usb_device_id products[] = {
--
1.7.9.5
^ permalink raw reply related
* [PATCH 0/7] smsc75xx fixes
From: Steve Glendinning @ 2012-04-30 17:56 UTC (permalink / raw)
To: netdev; +Cc: David Miller, Stephane Fillod, Steve Glendinning
Stephane Fillod's big patch addresses multiple issues, so this patchset
splits it into a separate patch for each issue.
Thanks to Stephane for finding and fixing these bugs.
Steve Glendinning (7):
smsc75xx: mark link down on startup and let PHY interrupt deal with
carrier changes
smsc75xx: fix mdio reads and writes
smsc75xx: add more information to register io failure warnings
smsc75xx: fix phy init reset loop
smsc75xx: fix phy interrupt acknowledge
smsc75xx: declare smsc75xx's MII as GMII capable
smsc75xx: enable mac to detect speed/duplex from phy
drivers/net/usb/smsc75xx.c | 35 ++++++++++++++++++++++++-----------
1 file changed, 24 insertions(+), 11 deletions(-)
--
1.7.9.5
^ permalink raw reply
* Re: [PATCH 3/4 net-next] net: make GRO aware of skb->head_frag
From: Eric Dumazet @ 2012-04-30 17:54 UTC (permalink / raw)
To: David Miller
Cc: netdev, Neal Cardwell, Tom Herbert, Jeff Kirsher, Michael Chan,
Matt Carlson, Herbert Xu, Ben Hutchings, Ilpo Järvinen,
Maciej Żenczykowski
In-Reply-To: <1335523026.2775.236.camel@edumazet-glaptop>
On Fri, 2012-04-27 at 12:37 +0200, Eric Dumazet wrote:
> From: Eric Dumazet <edumazet@google.com>
>
...
> + first_offset = skb->head -
> + (unsigned char *)page_address(page) +
> + offset;
> +
> + pinfo->nr_frags = nr_frags + 1 + skbinfo->nr_frags;
> +
Oops. I realize this is a previous version of this patch.
skb->head should be changed by skb->data here, I'll post a v2 for this
GRO change.
^ permalink raw reply
* Re: [PATCH 00/10 net-next] l2tp: misc fixes and add L2TPv3 IP encap over IPv6
From: David Miller @ 2012-04-30 17:46 UTC (permalink / raw)
To: jchapman; +Cc: netdev
In-Reply-To: <1335772135-27910-1-git-send-email-jchapman@katalix.com>
From: James Chapman <jchapman@katalix.com>
Date: Mon, 30 Apr 2012 08:48:45 +0100
> This patch series includes several L2TP fixes / cleanups and adds
> L2TPv3 IP encapsulation support for IPv6, building on the L2TP UDP
> IPv6 support recently added by Ben LaHaise.
>
> 1. l2tp: fix locking of 64-bit counters for smp
> 2. l2tp: Use ip4_datagram_connect() in l2tp_ip_connect()
> 3. l2tp: remove unused stats from l2tp_ip socket
> 4. pppox: Replace __attribute__((packed)) in if_pppox.h
> 5. l2tp: pppol2tp_connect() handles ipv6 sockaddr variants
> 6. l2tp: show IPv6 addresses in l2tp debugfs file
> 7. l2tp: netlink api for l2tpv3 ipv6 unmanaged tunnels
> 8. ipv6: export ipv6 functions for use by other protocols
> 9. l2tp: introduce L2TPv3 IP encapsulation support for IPv6
> 10. l2tp: let iproute2 create L2TPv3 IP tunnels using IPv6
>
> Patches 1-4 are fixes / cleanups.
> Patches 5-6 improve on the L2TP UDP IPv6 changes recently added.
> Patches 7-10 add functionality.
>
> A patch for iproute2 to add support for unmanaged L2TPv3 ethernet
> tunnels over IPv6 will be submitted separately.
Series applied to net-next, thanks James.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox