* pull request net: 2013-10-02 @ 2013-10-02 20:03 Antonio Quartulli 2013-10-02 20:03 ` [PATCH] batman-adv: set up network coding packet handlers during module init Antonio Quartulli ` (2 more replies) 0 siblings, 3 replies; 6+ messages in thread From: Antonio Quartulli @ 2013-10-02 20:03 UTC (permalink / raw) To: davem; +Cc: netdev, b.a.t.m.a.n Hello David, this is a "one-change" pull request intended for net/linux-3.{12,11,10}. This patch from Matthias Schiffer is fixing the init routine of the Network Coding component by preventing it from registering the handler for the CODED packet type each time a new soft-interface is created. Without this fix a second soft-interface cannot be created unless the Network Coding component is not part of the module (not compiled-in). As I mentioned before, this fix should be queued for stable as it aims kernels older than linux-3.12. Please pull or let me know of any problem. Thanks a lot, Antonio p.s. this change generates some non-negligible conflicts with the patchset I'd like to send to net-next during this week. Since I'd like to solve them all by myself before sending the new patches, I'd kindly ask you to merge net into net-next when possible. The following changes since commit c31eeaced22ce8bd61268a3c595d542bb38c0a4f: Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net (2013-10-01 12:58:48 -0700) are available in the git repository at: git://git.open-mesh.org/linux-merge.git tags/batman-adv-fix-for-davem for you to fetch changes up to 6c519bad7b19a2c14a075b400edabaa630330123: batman-adv: set up network coding packet handlers during module init (2013-10-02 13:46:19 +0200) ---------------------------------------------------------------- Included change: - fix multi soft-interfaces setups with Network Coding enabled by registering the CODED packet type once only (instead of once per soft-if) ---------------------------------------------------------------- Matthias Schiffer (1): batman-adv: set up network coding packet handlers during module init net/batman-adv/main.c | 5 +++-- net/batman-adv/network-coding.c | 28 ++++++++++++++++++---------- net/batman-adv/network-coding.h | 14 ++++++++++---- 3 files changed, 31 insertions(+), 16 deletions(-) ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] batman-adv: set up network coding packet handlers during module init 2013-10-02 20:03 pull request net: 2013-10-02 Antonio Quartulli @ 2013-10-02 20:03 ` Antonio Quartulli 2013-10-02 20:15 ` pull request net: 2013-10-02 Antonio Quartulli 2013-10-03 19:58 ` David Miller 2 siblings, 0 replies; 6+ messages in thread From: Antonio Quartulli @ 2013-10-02 20:03 UTC (permalink / raw) To: davem Cc: netdev, b.a.t.m.a.n, Matthias Schiffer, Marek Lindner, Antonio Quartulli From: Matthias Schiffer <mschiffer@universe-factory.net> batman-adv saves its table of packet handlers as a global state, so handlers must be set up only once (and setting them up a second time will fail). The recently-added network coding support tries to set up its handler each time a new softif is registered, which obviously fails when more that one softif is used (and in consequence, the softif creation fails). Fix this by splitting up batadv_nc_init into batadv_nc_init (which is called only once) and batadv_nc_mesh_init (which is called for each softif); in addition batadv_nc_free is renamed to batadv_nc_mesh_free to keep naming consistent. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com> --- net/batman-adv/main.c | 5 +++-- net/batman-adv/network-coding.c | 28 ++++++++++++++++++---------- net/batman-adv/network-coding.h | 14 ++++++++++---- 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c index c72d1bc..1356af6 100644 --- a/net/batman-adv/main.c +++ b/net/batman-adv/main.c @@ -65,6 +65,7 @@ static int __init batadv_init(void) batadv_recv_handler_init(); batadv_iv_init(); + batadv_nc_init(); batadv_event_workqueue = create_singlethread_workqueue("bat_events"); @@ -142,7 +143,7 @@ int batadv_mesh_init(struct net_device *soft_iface) if (ret < 0) goto err; - ret = batadv_nc_init(bat_priv); + ret = batadv_nc_mesh_init(bat_priv); if (ret < 0) goto err; @@ -167,7 +168,7 @@ void batadv_mesh_free(struct net_device *soft_iface) batadv_vis_quit(bat_priv); batadv_gw_node_purge(bat_priv); - batadv_nc_free(bat_priv); + batadv_nc_mesh_free(bat_priv); batadv_dat_free(bat_priv); batadv_bla_free(bat_priv); diff --git a/net/batman-adv/network-coding.c b/net/batman-adv/network-coding.c index a487d46..4ecc0b6 100644 --- a/net/batman-adv/network-coding.c +++ b/net/batman-adv/network-coding.c @@ -35,6 +35,20 @@ static int batadv_nc_recv_coded_packet(struct sk_buff *skb, struct batadv_hard_iface *recv_if); /** + * batadv_nc_init - one-time initialization for network coding + */ +int __init batadv_nc_init(void) +{ + int ret; + + /* Register our packet type */ + ret = batadv_recv_handler_register(BATADV_CODED, + batadv_nc_recv_coded_packet); + + return ret; +} + +/** * batadv_nc_start_timer - initialise the nc periodic worker * @bat_priv: the bat priv with all the soft interface information */ @@ -45,10 +59,10 @@ static void batadv_nc_start_timer(struct batadv_priv *bat_priv) } /** - * batadv_nc_init - initialise coding hash table and start house keeping + * batadv_nc_mesh_init - initialise coding hash table and start house keeping * @bat_priv: the bat priv with all the soft interface information */ -int batadv_nc_init(struct batadv_priv *bat_priv) +int batadv_nc_mesh_init(struct batadv_priv *bat_priv) { bat_priv->nc.timestamp_fwd_flush = jiffies; bat_priv->nc.timestamp_sniffed_purge = jiffies; @@ -70,11 +84,6 @@ int batadv_nc_init(struct batadv_priv *bat_priv) batadv_hash_set_lock_class(bat_priv->nc.coding_hash, &batadv_nc_decoding_hash_lock_class_key); - /* Register our packet type */ - if (batadv_recv_handler_register(BATADV_CODED, - batadv_nc_recv_coded_packet) < 0) - goto err; - INIT_DELAYED_WORK(&bat_priv->nc.work, batadv_nc_worker); batadv_nc_start_timer(bat_priv); @@ -1721,12 +1730,11 @@ free_nc_packet: } /** - * batadv_nc_free - clean up network coding memory + * batadv_nc_mesh_free - clean up network coding memory * @bat_priv: the bat priv with all the soft interface information */ -void batadv_nc_free(struct batadv_priv *bat_priv) +void batadv_nc_mesh_free(struct batadv_priv *bat_priv) { - batadv_recv_handler_unregister(BATADV_CODED); cancel_delayed_work_sync(&bat_priv->nc.work); batadv_nc_purge_paths(bat_priv, bat_priv->nc.coding_hash, NULL); diff --git a/net/batman-adv/network-coding.h b/net/batman-adv/network-coding.h index 85a4ec8..ddfa618 100644 --- a/net/batman-adv/network-coding.h +++ b/net/batman-adv/network-coding.h @@ -22,8 +22,9 @@ #ifdef CONFIG_BATMAN_ADV_NC -int batadv_nc_init(struct batadv_priv *bat_priv); -void batadv_nc_free(struct batadv_priv *bat_priv); +int batadv_nc_init(void); +int batadv_nc_mesh_init(struct batadv_priv *bat_priv); +void batadv_nc_mesh_free(struct batadv_priv *bat_priv); void batadv_nc_update_nc_node(struct batadv_priv *bat_priv, struct batadv_orig_node *orig_node, struct batadv_orig_node *orig_neigh_node, @@ -46,12 +47,17 @@ int batadv_nc_init_debugfs(struct batadv_priv *bat_priv); #else /* ifdef CONFIG_BATMAN_ADV_NC */ -static inline int batadv_nc_init(struct batadv_priv *bat_priv) +static inline int batadv_nc_init(void) { return 0; } -static inline void batadv_nc_free(struct batadv_priv *bat_priv) +static inline int batadv_nc_mesh_init(struct batadv_priv *bat_priv) +{ + return 0; +} + +static inline void batadv_nc_mesh_free(struct batadv_priv *bat_priv) { return; } -- 1.8.1.5 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: pull request net: 2013-10-02 2013-10-02 20:03 pull request net: 2013-10-02 Antonio Quartulli 2013-10-02 20:03 ` [PATCH] batman-adv: set up network coding packet handlers during module init Antonio Quartulli @ 2013-10-02 20:15 ` Antonio Quartulli 2013-10-03 19:58 ` David Miller 2 siblings, 0 replies; 6+ messages in thread From: Antonio Quartulli @ 2013-10-02 20:15 UTC (permalink / raw) To: davem; +Cc: netdev, b.a.t.m.a.n [-- Attachment #1: Type: text/plain, Size: 226 bytes --] On Wed, Oct 02, 2013 at 10:03:20PM +0200, Antonio Quartulli wrote: > Hello David, of course, the pull request is from the "batman-adv" tree. I forgot to mention that in the subject. Regards, -- Antonio Quartulli [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: pull request net: 2013-10-02 2013-10-02 20:03 pull request net: 2013-10-02 Antonio Quartulli 2013-10-02 20:03 ` [PATCH] batman-adv: set up network coding packet handlers during module init Antonio Quartulli 2013-10-02 20:15 ` pull request net: 2013-10-02 Antonio Quartulli @ 2013-10-03 19:58 ` David Miller 2013-10-03 20:14 ` Antonio Quartulli 2 siblings, 1 reply; 6+ messages in thread From: David Miller @ 2013-10-03 19:58 UTC (permalink / raw) To: antonio; +Cc: netdev, b.a.t.m.a.n From: Antonio Quartulli <antonio@meshcoding.com> Date: Wed, 2 Oct 2013 22:03:20 +0200 > this is a "one-change" pull request intended for net/linux-3.{12,11,10}. > > This patch from Matthias Schiffer is fixing the init routine of the Network > Coding component by preventing it from registering the handler for the CODED > packet type each time a new soft-interface is created. > > Without this fix a second soft-interface cannot be created unless the Network > Coding component is not part of the module (not compiled-in). > > As I mentioned before, this fix should be queued for stable as it aims > kernels older than linux-3.12. > > Please pull or let me know of any problem. Pulled, thanks Antonio. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: pull request net: 2013-10-02 2013-10-03 19:58 ` David Miller @ 2013-10-03 20:14 ` Antonio Quartulli 2013-10-03 20:27 ` David Miller 0 siblings, 1 reply; 6+ messages in thread From: Antonio Quartulli @ 2013-10-03 20:14 UTC (permalink / raw) To: David Miller; +Cc: netdev, b.a.t.m.a.n [-- Attachment #1: Type: text/plain, Size: 1017 bytes --] On Thu, Oct 03, 2013 at 03:58:02PM -0400, David Miller wrote: > From: Antonio Quartulli <antonio@meshcoding.com> > Date: Wed, 2 Oct 2013 22:03:20 +0200 > > > this is a "one-change" pull request intended for net/linux-3.{12,11,10}. > > > > This patch from Matthias Schiffer is fixing the init routine of the Network > > Coding component by preventing it from registering the handler for the CODED > > packet type each time a new soft-interface is created. > > > > Without this fix a second soft-interface cannot be created unless the Network > > Coding component is not part of the module (not compiled-in). > > > > As I mentioned before, this fix should be queued for stable as it aims > > kernels older than linux-3.12. > > > > Please pull or let me know of any problem. > > Pulled, thanks Antonio. > David, please consider queuing the patch for stable as it is rather important (if you already did so then I can't see this in patchwork). Regards, -- Antonio Quartulli [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: pull request net: 2013-10-02 2013-10-03 20:14 ` Antonio Quartulli @ 2013-10-03 20:27 ` David Miller 0 siblings, 0 replies; 6+ messages in thread From: David Miller @ 2013-10-03 20:27 UTC (permalink / raw) To: antonio; +Cc: netdev, b.a.t.m.a.n From: Antonio Quartulli <antonio@meshcoding.com> Date: Thu, 3 Oct 2013 22:14:13 +0200 > please consider queuing the patch for stable as it is rather important (if you > already did so then I can't see this in patchwork). Queued up for -stable, thanks. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-10-03 20:27 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-10-02 20:03 pull request net: 2013-10-02 Antonio Quartulli 2013-10-02 20:03 ` [PATCH] batman-adv: set up network coding packet handlers during module init Antonio Quartulli 2013-10-02 20:15 ` pull request net: 2013-10-02 Antonio Quartulli 2013-10-03 19:58 ` David Miller 2013-10-03 20:14 ` Antonio Quartulli 2013-10-03 20:27 ` David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).