diff options
Diffstat (limited to 'net/batman-adv/vis.c')
-rw-r--r-- | net/batman-adv/vis.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/net/batman-adv/vis.c b/net/batman-adv/vis.c index 1625e5793a89..4983340f1943 100644 --- a/net/batman-adv/vis.c +++ b/net/batman-adv/vis.c | |||
@@ -392,12 +392,12 @@ batadv_add_packet(struct batadv_priv *bat_priv, | |||
392 | return NULL; | 392 | return NULL; |
393 | 393 | ||
394 | len = sizeof(*packet) + vis_info_len; | 394 | len = sizeof(*packet) + vis_info_len; |
395 | info->skb_packet = dev_alloc_skb(len + ETH_HLEN + NET_IP_ALIGN); | 395 | info->skb_packet = netdev_alloc_skb_ip_align(NULL, len + ETH_HLEN); |
396 | if (!info->skb_packet) { | 396 | if (!info->skb_packet) { |
397 | kfree(info); | 397 | kfree(info); |
398 | return NULL; | 398 | return NULL; |
399 | } | 399 | } |
400 | skb_reserve(info->skb_packet, ETH_HLEN + NET_IP_ALIGN); | 400 | skb_reserve(info->skb_packet, ETH_HLEN); |
401 | packet = (struct batadv_vis_packet *)skb_put(info->skb_packet, len); | 401 | packet = (struct batadv_vis_packet *)skb_put(info->skb_packet, len); |
402 | 402 | ||
403 | kref_init(&info->refcount); | 403 | kref_init(&info->refcount); |
@@ -697,7 +697,7 @@ static void batadv_broadcast_vis_packet(struct batadv_priv *bat_priv, | |||
697 | struct batadv_orig_node *orig_node; | 697 | struct batadv_orig_node *orig_node; |
698 | struct batadv_vis_packet *packet; | 698 | struct batadv_vis_packet *packet; |
699 | struct sk_buff *skb; | 699 | struct sk_buff *skb; |
700 | uint32_t i; | 700 | uint32_t i, res; |
701 | 701 | ||
702 | 702 | ||
703 | packet = (struct batadv_vis_packet *)info->skb_packet->data; | 703 | packet = (struct batadv_vis_packet *)info->skb_packet->data; |
@@ -724,7 +724,8 @@ static void batadv_broadcast_vis_packet(struct batadv_priv *bat_priv, | |||
724 | if (!skb) | 724 | if (!skb) |
725 | continue; | 725 | continue; |
726 | 726 | ||
727 | if (!batadv_send_skb_to_orig(skb, orig_node, NULL)) | 727 | res = batadv_send_skb_to_orig(skb, orig_node, NULL); |
728 | if (res == NET_XMIT_DROP) | ||
728 | kfree_skb(skb); | 729 | kfree_skb(skb); |
729 | } | 730 | } |
730 | rcu_read_unlock(); | 731 | rcu_read_unlock(); |
@@ -748,7 +749,7 @@ static void batadv_unicast_vis_packet(struct batadv_priv *bat_priv, | |||
748 | if (!skb) | 749 | if (!skb) |
749 | goto out; | 750 | goto out; |
750 | 751 | ||
751 | if (!batadv_send_skb_to_orig(skb, orig_node, NULL)) | 752 | if (batadv_send_skb_to_orig(skb, orig_node, NULL) == NET_XMIT_DROP) |
752 | kfree_skb(skb); | 753 | kfree_skb(skb); |
753 | 754 | ||
754 | out: | 755 | out: |
@@ -854,13 +855,13 @@ int batadv_vis_init(struct batadv_priv *bat_priv) | |||
854 | if (!bat_priv->vis.my_info) | 855 | if (!bat_priv->vis.my_info) |
855 | goto err; | 856 | goto err; |
856 | 857 | ||
857 | len = sizeof(*packet) + BATADV_MAX_VIS_PACKET_SIZE; | 858 | len = sizeof(*packet) + BATADV_MAX_VIS_PACKET_SIZE + ETH_HLEN; |
858 | len += ETH_HLEN + NET_IP_ALIGN; | 859 | bat_priv->vis.my_info->skb_packet = netdev_alloc_skb_ip_align(NULL, |
859 | bat_priv->vis.my_info->skb_packet = dev_alloc_skb(len); | 860 | len); |
860 | if (!bat_priv->vis.my_info->skb_packet) | 861 | if (!bat_priv->vis.my_info->skb_packet) |
861 | goto free_info; | 862 | goto free_info; |
862 | 863 | ||
863 | skb_reserve(bat_priv->vis.my_info->skb_packet, ETH_HLEN + NET_IP_ALIGN); | 864 | skb_reserve(bat_priv->vis.my_info->skb_packet, ETH_HLEN); |
864 | tmp_skb = bat_priv->vis.my_info->skb_packet; | 865 | tmp_skb = bat_priv->vis.my_info->skb_packet; |
865 | packet = (struct batadv_vis_packet *)skb_put(tmp_skb, sizeof(*packet)); | 866 | packet = (struct batadv_vis_packet *)skb_put(tmp_skb, sizeof(*packet)); |
866 | 867 | ||