Hi,
it looks like this patch is incorrect and has to be rewritten. TQ is only available in BATMAN_IV and BATMAN_V will have to use THROUGHPUT. Thus this patch should be rewritten on top of the gw patchset from Antonio.
I will therefore mark this patch and all following patches as "changes requested". This also affects the batctl patches because they currently require TQ in the response.
Kind regards, Sven
On Thursday 09 June 2016 16:54:42 Simon Wunderlich wrote: [...]
/**
- batadv_gw_dump_entry - Dump a gateway into a message
- @msg: Netlink message to dump into
- @portid: Port making netlink request
- @seq: Sequence number of netlink message
- @bat_priv: The bat priv with all the soft interface information
- @gw_node: Gateway to be dumped
- Return: Error code, or 0 on success
- */
+static int +batadv_gw_dump_entry(struct sk_buff *msg, u32 portid, u32 seq,
struct batadv_priv *bat_priv,
struct batadv_gw_node *gw_node)
+{
- struct batadv_neigh_ifinfo *router_ifinfo = NULL;
- struct batadv_neigh_node *router;
- struct batadv_gw_node *curr_gw;
- int ret = -EINVAL;
- void *hdr;
- router = batadv_orig_router_get(gw_node->orig_node, BATADV_IF_DEFAULT);
- if (!router)
goto out;
- router_ifinfo = batadv_neigh_ifinfo_get(router, BATADV_IF_DEFAULT);
- if (!router_ifinfo)
goto out;
- curr_gw = batadv_gw_get_selected_gw_node(bat_priv);
- hdr = genlmsg_put(msg, portid, seq, &batadv_netlink_family,
NLM_F_MULTI, BATADV_CMD_GET_GATEWAYS);
- if (!hdr) {
ret = -ENOBUFS;
goto out;
- }
- ret = -EMSGSIZE;
- if (curr_gw == gw_node)
if (nla_put_flag(msg, BATADV_ATTR_FLAG_BEST)) {
genlmsg_cancel(msg, hdr);
goto out;
}
- if (nla_put(msg, BATADV_ATTR_ORIG_ADDRESS, ETH_ALEN,
gw_node->orig_node->orig) ||
nla_put_u8(msg, BATADV_ATTR_TQ, router_ifinfo->bat_iv.tq_avg) ||
nla_put(msg, BATADV_ATTR_ROUTER, ETH_ALEN,
router->addr) ||
nla_put_string(msg, BATADV_ATTR_HARD_IFNAME,
router->if_incoming->net_dev->name) ||
nla_put_u32(msg, BATADV_ATTR_BANDWIDTH_DOWN,
gw_node->bandwidth_down) ||
nla_put_u32(msg, BATADV_ATTR_BANDWIDTH_UP,
gw_node->bandwidth_up)) {
genlmsg_cancel(msg, hdr);
goto out;
- }
- genlmsg_end(msg, hdr);
- ret = 0;
+out:
- if (router_ifinfo)
batadv_neigh_ifinfo_put(router_ifinfo);
- if (router)
batadv_neigh_node_put(router);
- return ret;
+}