mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
This feature/cleanup patchset includes the following patches:
- fix memory leak in in batadv_dat_put_dhcp, by Martin Weinelt
- fix typo, by Sven Eckelmann
- netlink restructuring patch series (part 2), by Sven Eckelmann
(19 patches)
-----BEGIN PGP SIGNATURE-----
iQJKBAABCgA0FiEE1ilQI7G+y+fdhnrfoSvjmEKSnqEFAlxj6MYWHHN3QHNpbW9u
d3VuZGVybGljaC5kZQAKCRChK+OYQpKeoYTMD/9Uyaqe4ULGQ+rLBnCMSuNc5AnQ
d7hebUep1RVDyyzJaHRNLmPwmSDNscdQX2AaAxOMhrbmDiBceHq1vDpNvLMDCa0g
4KbljpfICc6Wm8cq6zHMvL5DQYdxvHt3xDDOvTufhTDra0+cZ8b7tLN1GIztrSSL
BJ4gUkVydtFUIGCPkSfqZoMI82VTo4V/vOQpaAAANJXVehajHhPLOc2+AqnsHTxC
6EpNFbMib7sxvrDV5/GdkhtyikmNyHXlaZaiboJjH8htdRWmxHSIfelgDZ2KzqJK
NG5EhZNljLEHHU5cnCBA1ptvjB0zWVF1WEZDyD3fHPraNdmeyCyqI1kuEMFHPSEr
PZ+gD9wqnmgQUc3D7Xi7Q0faEQ5wcOKtcCvMrWgydbQxanhiftBH8pikkR9VJh+B
1ADuN2m+OSKaZ8Fw5tqknNbd8paKztlndgSNRHEc9KOWnT91cKO02Zg9wCyNhn7S
SI/0eLZx0N0v3T/UVsoKbjKGCEiFZzgXMBRRb7jthJghD2hnyx+s1tRzkgxIJj8z
fI5hwAl//m6tSCDjbOLjCdsNHiGs4AhP0MsFq5jHmpqvsY8ZUX59LcRnpfhX3IaN
L+KpBxH9O25Pd3JgXgjlcuza2L1L/V7piPUit/C8LVb7goNN3QCi+UtXFVMR1C4c
J7kI7vMak8BEIs4EuQ==
=+p14
-----END PGP SIGNATURE-----
Merge tag 'batadv-next-for-davem-20190213' of git://git.open-mesh.org/linux-merge
Simon Wunderlich says:
====================
This feature/cleanup patchset includes the following patches:
- fix memory leak in in batadv_dat_put_dhcp, by Martin Weinelt
- fix typo, by Sven Eckelmann
- netlink restructuring patch series (part 2), by Sven Eckelmann
(19 patches)
====================
Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
commit
03b9674202
10 changed files with 1206 additions and 148 deletions
|
|
@ -1711,6 +1711,8 @@ static void batadv_dat_put_dhcp(struct batadv_priv *bat_priv, u8 *chaddr,
|
|||
batadv_dat_send_data(bat_priv, skb, yiaddr, vid, BATADV_P_DAT_DHT_PUT);
|
||||
batadv_dat_send_data(bat_priv, skb, ip_dst, vid, BATADV_P_DAT_DHT_PUT);
|
||||
|
||||
consume_skb(skb);
|
||||
|
||||
batadv_dbg(BATADV_DBG_DAT, bat_priv,
|
||||
"Snooped from outgoing DHCPACK (server address): %pI4, %pM (vid: %i)\n",
|
||||
&ip_dst, hw_dst, batadv_print_vid(vid));
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@
|
|||
#include <uapi/linux/batadv_packet.h>
|
||||
#include <uapi/linux/batman_adv.h>
|
||||
|
||||
#include "gateway_common.h"
|
||||
#include "hard-interface.h"
|
||||
#include "log.h"
|
||||
#include "netlink.h"
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#include <linux/stddef.h>
|
||||
#include <linux/string.h>
|
||||
#include <uapi/linux/batadv_packet.h>
|
||||
#include <uapi/linux/batman_adv.h>
|
||||
|
||||
#include "gateway_client.h"
|
||||
#include "log.h"
|
||||
|
|
|
|||
|
|
@ -25,12 +25,6 @@
|
|||
|
||||
struct net_device;
|
||||
|
||||
enum batadv_gw_modes {
|
||||
BATADV_GW_MODE_OFF,
|
||||
BATADV_GW_MODE_CLIENT,
|
||||
BATADV_GW_MODE_SERVER,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_bandwidth_units - bandwidth unit types
|
||||
*/
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -34,6 +34,12 @@ int batadv_netlink_tpmeter_notify(struct batadv_priv *bat_priv, const u8 *dst,
|
|||
u8 result, u32 test_time, u64 total_bytes,
|
||||
u32 cookie);
|
||||
|
||||
int batadv_netlink_notify_mesh(struct batadv_priv *bat_priv);
|
||||
int batadv_netlink_notify_hardif(struct batadv_priv *bat_priv,
|
||||
struct batadv_hard_iface *hard_iface);
|
||||
int batadv_netlink_notify_vlan(struct batadv_priv *bat_priv,
|
||||
struct batadv_softif_vlan *vlan);
|
||||
|
||||
extern struct genl_family batadv_netlink_family;
|
||||
|
||||
#endif /* _NET_BATMAN_ADV_NETLINK_H_ */
|
||||
|
|
|
|||
|
|
@ -50,13 +50,13 @@
|
|||
#include <linux/string.h>
|
||||
#include <linux/types.h>
|
||||
#include <uapi/linux/batadv_packet.h>
|
||||
#include <uapi/linux/batman_adv.h>
|
||||
|
||||
#include "bat_algo.h"
|
||||
#include "bridge_loop_avoidance.h"
|
||||
#include "debugfs.h"
|
||||
#include "distributed-arp-table.h"
|
||||
#include "gateway_client.h"
|
||||
#include "gateway_common.h"
|
||||
#include "hard-interface.h"
|
||||
#include "multicast.h"
|
||||
#include "network-coding.h"
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
#include <linux/stringify.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <uapi/linux/batadv_packet.h>
|
||||
#include <uapi/linux/batman_adv.h>
|
||||
|
||||
#include "bridge_loop_avoidance.h"
|
||||
#include "distributed-arp-table.h"
|
||||
|
|
@ -47,6 +48,7 @@
|
|||
#include "gateway_common.h"
|
||||
#include "hard-interface.h"
|
||||
#include "log.h"
|
||||
#include "netlink.h"
|
||||
#include "network-coding.h"
|
||||
#include "soft-interface.h"
|
||||
|
||||
|
|
@ -153,9 +155,14 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
|
|||
{ \
|
||||
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \
|
||||
struct batadv_priv *bat_priv = netdev_priv(net_dev); \
|
||||
ssize_t length; \
|
||||
\
|
||||
return __batadv_store_bool_attr(buff, count, _post_func, attr, \
|
||||
&bat_priv->_name, net_dev); \
|
||||
length = __batadv_store_bool_attr(buff, count, _post_func, attr,\
|
||||
&bat_priv->_name, net_dev); \
|
||||
\
|
||||
batadv_netlink_notify_mesh(bat_priv); \
|
||||
\
|
||||
return length; \
|
||||
}
|
||||
|
||||
#define BATADV_ATTR_SIF_SHOW_BOOL(_name) \
|
||||
|
|
@ -185,11 +192,16 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
|
|||
{ \
|
||||
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \
|
||||
struct batadv_priv *bat_priv = netdev_priv(net_dev); \
|
||||
ssize_t length; \
|
||||
\
|
||||
return __batadv_store_uint_attr(buff, count, _min, _max, \
|
||||
_post_func, attr, \
|
||||
&bat_priv->_var, net_dev, \
|
||||
NULL); \
|
||||
length = __batadv_store_uint_attr(buff, count, _min, _max, \
|
||||
_post_func, attr, \
|
||||
&bat_priv->_var, net_dev, \
|
||||
NULL); \
|
||||
\
|
||||
batadv_netlink_notify_mesh(bat_priv); \
|
||||
\
|
||||
return length; \
|
||||
}
|
||||
|
||||
#define BATADV_ATTR_SIF_SHOW_UINT(_name, _var) \
|
||||
|
|
@ -222,6 +234,11 @@ ssize_t batadv_store_vlan_##_name(struct kobject *kobj, \
|
|||
attr, &vlan->_name, \
|
||||
bat_priv->soft_iface); \
|
||||
\
|
||||
if (vlan->vid) \
|
||||
batadv_netlink_notify_vlan(bat_priv, vlan); \
|
||||
else \
|
||||
batadv_netlink_notify_mesh(bat_priv); \
|
||||
\
|
||||
batadv_softif_vlan_put(vlan); \
|
||||
return res; \
|
||||
}
|
||||
|
|
@ -255,6 +272,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
|
|||
{ \
|
||||
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \
|
||||
struct batadv_hard_iface *hard_iface; \
|
||||
struct batadv_priv *bat_priv; \
|
||||
ssize_t length; \
|
||||
\
|
||||
hard_iface = batadv_hardif_get_by_netdev(net_dev); \
|
||||
|
|
@ -267,6 +285,11 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
|
|||
hard_iface->soft_iface, \
|
||||
net_dev); \
|
||||
\
|
||||
if (hard_iface->soft_iface) { \
|
||||
bat_priv = netdev_priv(hard_iface->soft_iface); \
|
||||
batadv_netlink_notify_hardif(bat_priv, hard_iface); \
|
||||
} \
|
||||
\
|
||||
batadv_hardif_put(hard_iface); \
|
||||
return length; \
|
||||
}
|
||||
|
|
@ -536,6 +559,9 @@ static ssize_t batadv_store_gw_mode(struct kobject *kobj,
|
|||
batadv_gw_check_client_stop(bat_priv);
|
||||
atomic_set(&bat_priv->gw.mode, (unsigned int)gw_mode_tmp);
|
||||
batadv_gw_tvlv_container_update(bat_priv);
|
||||
|
||||
batadv_netlink_notify_mesh(bat_priv);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
|
|
@ -562,6 +588,7 @@ static ssize_t batadv_store_gw_sel_class(struct kobject *kobj,
|
|||
size_t count)
|
||||
{
|
||||
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||
ssize_t length;
|
||||
|
||||
/* setting the GW selection class is allowed only if the routing
|
||||
* algorithm in use implements the GW API
|
||||
|
|
@ -577,10 +604,14 @@ static ssize_t batadv_store_gw_sel_class(struct kobject *kobj,
|
|||
return bat_priv->algo_ops->gw.store_sel_class(bat_priv, buff,
|
||||
count);
|
||||
|
||||
return __batadv_store_uint_attr(buff, count, 1, BATADV_TQ_MAX_VALUE,
|
||||
batadv_post_gw_reselect, attr,
|
||||
&bat_priv->gw.sel_class,
|
||||
bat_priv->soft_iface, NULL);
|
||||
length = __batadv_store_uint_attr(buff, count, 1, BATADV_TQ_MAX_VALUE,
|
||||
batadv_post_gw_reselect, attr,
|
||||
&bat_priv->gw.sel_class,
|
||||
bat_priv->soft_iface, NULL);
|
||||
|
||||
batadv_netlink_notify_mesh(bat_priv);
|
||||
|
||||
return length;
|
||||
}
|
||||
|
||||
static ssize_t batadv_show_gw_bwidth(struct kobject *kobj,
|
||||
|
|
@ -600,12 +631,18 @@ static ssize_t batadv_store_gw_bwidth(struct kobject *kobj,
|
|||
struct attribute *attr, char *buff,
|
||||
size_t count)
|
||||
{
|
||||
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||
struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
|
||||
ssize_t length;
|
||||
|
||||
if (buff[count - 1] == '\n')
|
||||
buff[count - 1] = '\0';
|
||||
|
||||
return batadv_gw_bandwidth_set(net_dev, buff, count);
|
||||
length = batadv_gw_bandwidth_set(net_dev, buff, count);
|
||||
|
||||
batadv_netlink_notify_mesh(bat_priv);
|
||||
|
||||
return length;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -673,6 +710,8 @@ static ssize_t batadv_store_isolation_mark(struct kobject *kobj,
|
|||
"New skb mark for extended isolation: %#.8x/%#.8x\n",
|
||||
bat_priv->isolation_mark, bat_priv->isolation_mark_mask);
|
||||
|
||||
batadv_netlink_notify_mesh(bat_priv);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
|
|
@ -1077,6 +1116,7 @@ static ssize_t batadv_store_throughput_override(struct kobject *kobj,
|
|||
struct attribute *attr,
|
||||
char *buff, size_t count)
|
||||
{
|
||||
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||
struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
|
||||
struct batadv_hard_iface *hard_iface;
|
||||
u32 tp_override;
|
||||
|
|
@ -1107,6 +1147,8 @@ static ssize_t batadv_store_throughput_override(struct kobject *kobj,
|
|||
|
||||
atomic_set(&hard_iface->bat_v.throughput_override, tp_override);
|
||||
|
||||
batadv_netlink_notify_hardif(bat_priv, hard_iface);
|
||||
|
||||
out:
|
||||
batadv_hardif_put(hard_iface);
|
||||
return count;
|
||||
|
|
|
|||
Loading…
Reference in a new issue