[v2] batman-adv: Add dummy soft-interface rx mode handler

Message ID 1369583768-15280-1-git-send-email-linus.luessing@web.de (mailing list archive)
State Accepted, archived
Commit 1cfaca7eb041c8b97f655ff7c44e3a00ac7c2400
Headers

Commit Message

Linus Lüssing May 26, 2013, 3:56 p.m. UTC
  We do not actually need to set any rx filters for the virtual batman
soft interface. However a dummy handler enables a user to set static
multicast listeners for instance.

Signed-off-by: Linus Lüssing <linus.luessing@web.de>
---
* Fixes issue #171

v2: added kernel doc

 soft-interface.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)
  

Comments

Marek Lindner May 28, 2013, 9:55 a.m. UTC | #1
On Sunday, May 26, 2013 23:56:07 Linus Lüssing wrote:
> @@ -572,6 +584,7 @@ static const struct net_device_ops batadv_netdev_ops =
> { .ndo_get_stats = batadv_interface_stats,
>         .ndo_set_mac_address = batadv_interface_set_mac_addr,
>         .ndo_change_mtu = batadv_interface_change_mtu,
> +       .ndo_set_rx_mode = batadv_interface_set_rx_mode,
>         .ndo_start_xmit = batadv_interface_tx,
>         .ndo_validate_addr = eth_validate_addr,
>         .ndo_add_slave = batadv_softif_slave_add,

Do we need compat code for this API call ?

Cheers,
Marek
  
Linus Lüssing May 28, 2013, 3:51 p.m. UTC | #2
On Tue, May 28, 2013 at 05:55:44PM +0800, Marek Lindner wrote:
> On Sunday, May 26, 2013 23:56:07 Linus Lüssing wrote:
> > @@ -572,6 +584,7 @@ static const struct net_device_ops batadv_netdev_ops =
> > { .ndo_get_stats = batadv_interface_stats,
> >         .ndo_set_mac_address = batadv_interface_set_mac_addr,
> >         .ndo_change_mtu = batadv_interface_change_mtu,
> > +       .ndo_set_rx_mode = batadv_interface_set_rx_mode,
> >         .ndo_start_xmit = batadv_interface_tx,
> >         .ndo_validate_addr = eth_validate_addr,
> >         .ndo_add_slave = batadv_softif_slave_add,
> 
> Do we need compat code for this API call ?
> 
> Cheers,
> Marek

Yes it does, actually. A PATCHv3 will follow soonish. Thanks for
the hint!

Cheers, Linus
  
Linus Lüssing June 7, 2013, 9:16 p.m. UTC | #3
On Tue, May 28, 2013 at 05:51:14PM +0200, Linus Lüssing wrote:
> On Tue, May 28, 2013 at 05:55:44PM +0800, Marek Lindner wrote:
> > On Sunday, May 26, 2013 23:56:07 Linus Lüssing wrote:
> > > @@ -572,6 +584,7 @@ static const struct net_device_ops batadv_netdev_ops =
> > > { .ndo_get_stats = batadv_interface_stats,
> > >         .ndo_set_mac_address = batadv_interface_set_mac_addr,
> > >         .ndo_change_mtu = batadv_interface_change_mtu,
> > > +       .ndo_set_rx_mode = batadv_interface_set_rx_mode,
> > >         .ndo_start_xmit = batadv_interface_tx,
> > >         .ndo_validate_addr = eth_validate_addr,
> > >         .ndo_add_slave = batadv_softif_slave_add,
> > 
> > Do we need compat code for this API call ?
> > 
> > Cheers,
> > Marek
> 
> Yes it does, actually. A PATCHv3 will follow soonish. Thanks for
> the hint!

Hm, I changed my mind, it actually shouldn't need any compat code.
At least compiling worked fine for me for 2.6.29 to 3.9 kernels.

There was a .ndo_set_multicast_list once with all these calls
being reassigned to .ndo_set_rx_mode and .ndo_set_multicast_list
being removed since 3.2 ("net: remove use of
ndo_set_multicast_list in drivers":afc4b13df143122f99a0eb10bfefb216c2806de0).
However .ndo_set_rx_mode has always been threre for
kernels >= 2.6.29, <= 3.9.

Cheers, Linus
  
Marek Lindner June 9, 2013, 4:05 a.m. UTC | #4
On Sunday, May 26, 2013 23:56:07 Linus Lüssing wrote:
> We do not actually need to set any rx filters for the virtual batman
> soft interface. However a dummy handler enables a user to set static
> multicast listeners for instance.
> 
> Signed-off-by: Linus Lüssing <linus.luessing@web.de>
> ---
> * Fixes issue #171
> 
> v2: added kernel doc
> 
>  soft-interface.c |   13 +++++++++++++
>  1 file changed, 13 insertions(+)

Applied in revision 1cfaca7.

Thanks,
Marek
  

Patch

diff --git a/soft-interface.c b/soft-interface.c
index 2bad57f..54b3991 100644
--- a/soft-interface.c
+++ b/soft-interface.c
@@ -137,6 +137,18 @@  static int batadv_interface_change_mtu(struct net_device *dev, int new_mtu)
 	return 0;
 }
 
+/**
+ * batadv_interface_set_rx_mode - set the rx mode of a device
+ * @dev: registered network device to modify
+ *
+ * We do not actually need to set any rx filters for the virtual batman
+ * soft interface. However a dummy handler enables a user to set static
+ * multicast listeners for instance.
+ */
+static void batadv_interface_set_rx_mode(struct net_device *dev)
+{
+}
+
 static int batadv_interface_tx(struct sk_buff *skb,
 			       struct net_device *soft_iface)
 {
@@ -572,6 +584,7 @@  static const struct net_device_ops batadv_netdev_ops = {
 	.ndo_get_stats = batadv_interface_stats,
 	.ndo_set_mac_address = batadv_interface_set_mac_addr,
 	.ndo_change_mtu = batadv_interface_change_mtu,
+	.ndo_set_rx_mode = batadv_interface_set_rx_mode,
 	.ndo_start_xmit = batadv_interface_tx,
 	.ndo_validate_addr = eth_validate_addr,
 	.ndo_add_slave = batadv_softif_slave_add,