aboutsummaryrefslogtreecommitdiffstats
path: root/net/batman-adv/bridge_loop_avoidance.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/batman-adv/bridge_loop_avoidance.c')
-rw-r--r--net/batman-adv/bridge_loop_avoidance.c94
1 files changed, 51 insertions, 43 deletions
diff --git a/net/batman-adv/bridge_loop_avoidance.c b/net/batman-adv/bridge_loop_avoidance.c
index de27b3175cfd..e14531f1ce1c 100644
--- a/net/batman-adv/bridge_loop_avoidance.c
+++ b/net/batman-adv/bridge_loop_avoidance.c
@@ -180,7 +180,7 @@ static struct batadv_bla_claim
180 */ 180 */
181static struct batadv_bla_backbone_gw * 181static struct batadv_bla_backbone_gw *
182batadv_backbone_hash_find(struct batadv_priv *bat_priv, 182batadv_backbone_hash_find(struct batadv_priv *bat_priv,
183 uint8_t *addr, short vid) 183 uint8_t *addr, unsigned short vid)
184{ 184{
185 struct batadv_hashtable *hash = bat_priv->bla.backbone_hash; 185 struct batadv_hashtable *hash = bat_priv->bla.backbone_hash;
186 struct hlist_head *head; 186 struct hlist_head *head;
@@ -257,7 +257,7 @@ batadv_bla_del_backbone_claims(struct batadv_bla_backbone_gw *backbone_gw)
257 * @claimtype: the type of the claim (CLAIM, UNCLAIM, ANNOUNCE, ...) 257 * @claimtype: the type of the claim (CLAIM, UNCLAIM, ANNOUNCE, ...)
258 */ 258 */
259static void batadv_bla_send_claim(struct batadv_priv *bat_priv, uint8_t *mac, 259static void batadv_bla_send_claim(struct batadv_priv *bat_priv, uint8_t *mac,
260 short vid, int claimtype) 260 unsigned short vid, int claimtype)
261{ 261{
262 struct sk_buff *skb; 262 struct sk_buff *skb;
263 struct ethhdr *ethhdr; 263 struct ethhdr *ethhdr;
@@ -307,7 +307,8 @@ static void batadv_bla_send_claim(struct batadv_priv *bat_priv, uint8_t *mac,
307 */ 307 */
308 memcpy(ethhdr->h_source, mac, ETH_ALEN); 308 memcpy(ethhdr->h_source, mac, ETH_ALEN);
309 batadv_dbg(BATADV_DBG_BLA, bat_priv, 309 batadv_dbg(BATADV_DBG_BLA, bat_priv,
310 "bla_send_claim(): CLAIM %pM on vid %d\n", mac, vid); 310 "bla_send_claim(): CLAIM %pM on vid %d\n", mac,
311 BATADV_PRINT_VID(vid));
311 break; 312 break;
312 case BATADV_CLAIM_TYPE_UNCLAIM: 313 case BATADV_CLAIM_TYPE_UNCLAIM:
313 /* unclaim frame 314 /* unclaim frame
@@ -316,7 +317,7 @@ static void batadv_bla_send_claim(struct batadv_priv *bat_priv, uint8_t *mac,
316 memcpy(hw_src, mac, ETH_ALEN); 317 memcpy(hw_src, mac, ETH_ALEN);
317 batadv_dbg(BATADV_DBG_BLA, bat_priv, 318 batadv_dbg(BATADV_DBG_BLA, bat_priv,
318 "bla_send_claim(): UNCLAIM %pM on vid %d\n", mac, 319 "bla_send_claim(): UNCLAIM %pM on vid %d\n", mac,
319 vid); 320 BATADV_PRINT_VID(vid));
320 break; 321 break;
321 case BATADV_CLAIM_TYPE_ANNOUNCE: 322 case BATADV_CLAIM_TYPE_ANNOUNCE:
322 /* announcement frame 323 /* announcement frame
@@ -325,7 +326,7 @@ static void batadv_bla_send_claim(struct batadv_priv *bat_priv, uint8_t *mac,
325 memcpy(hw_src, mac, ETH_ALEN); 326 memcpy(hw_src, mac, ETH_ALEN);
326 batadv_dbg(BATADV_DBG_BLA, bat_priv, 327 batadv_dbg(BATADV_DBG_BLA, bat_priv,
327 "bla_send_claim(): ANNOUNCE of %pM on vid %d\n", 328 "bla_send_claim(): ANNOUNCE of %pM on vid %d\n",
328 ethhdr->h_source, vid); 329 ethhdr->h_source, BATADV_PRINT_VID(vid));
329 break; 330 break;
330 case BATADV_CLAIM_TYPE_REQUEST: 331 case BATADV_CLAIM_TYPE_REQUEST:
331 /* request frame 332 /* request frame
@@ -335,13 +336,15 @@ static void batadv_bla_send_claim(struct batadv_priv *bat_priv, uint8_t *mac,
335 memcpy(hw_src, mac, ETH_ALEN); 336 memcpy(hw_src, mac, ETH_ALEN);
336 memcpy(ethhdr->h_dest, mac, ETH_ALEN); 337 memcpy(ethhdr->h_dest, mac, ETH_ALEN);
337 batadv_dbg(BATADV_DBG_BLA, bat_priv, 338 batadv_dbg(BATADV_DBG_BLA, bat_priv,
338 "bla_send_claim(): REQUEST of %pM to %pMon vid %d\n", 339 "bla_send_claim(): REQUEST of %pM to %pM on vid %d\n",
339 ethhdr->h_source, ethhdr->h_dest, vid); 340 ethhdr->h_source, ethhdr->h_dest,
341 BATADV_PRINT_VID(vid));
340 break; 342 break;
341 } 343 }
342 344
343 if (vid != -1) 345 if (vid & BATADV_VLAN_HAS_TAG)
344 skb = vlan_insert_tag(skb, htons(ETH_P_8021Q), vid); 346 skb = vlan_insert_tag(skb, htons(ETH_P_8021Q),
347 vid & VLAN_VID_MASK);
345 348
346 skb_reset_mac_header(skb); 349 skb_reset_mac_header(skb);
347 skb->protocol = eth_type_trans(skb, soft_iface); 350 skb->protocol = eth_type_trans(skb, soft_iface);
@@ -367,7 +370,7 @@ out:
367 */ 370 */
368static struct batadv_bla_backbone_gw * 371static struct batadv_bla_backbone_gw *
369batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, uint8_t *orig, 372batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, uint8_t *orig,
370 short vid, bool own_backbone) 373 unsigned short vid, bool own_backbone)
371{ 374{
372 struct batadv_bla_backbone_gw *entry; 375 struct batadv_bla_backbone_gw *entry;
373 struct batadv_orig_node *orig_node; 376 struct batadv_orig_node *orig_node;
@@ -380,7 +383,7 @@ batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, uint8_t *orig,
380 383
381 batadv_dbg(BATADV_DBG_BLA, bat_priv, 384 batadv_dbg(BATADV_DBG_BLA, bat_priv,
382 "bla_get_backbone_gw(): not found (%pM, %d), creating new entry\n", 385 "bla_get_backbone_gw(): not found (%pM, %d), creating new entry\n",
383 orig, vid); 386 orig, BATADV_PRINT_VID(vid));
384 387
385 entry = kzalloc(sizeof(*entry), GFP_ATOMIC); 388 entry = kzalloc(sizeof(*entry), GFP_ATOMIC);
386 if (!entry) 389 if (!entry)
@@ -434,7 +437,7 @@ batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, uint8_t *orig,
434static void 437static void
435batadv_bla_update_own_backbone_gw(struct batadv_priv *bat_priv, 438batadv_bla_update_own_backbone_gw(struct batadv_priv *bat_priv,
436 struct batadv_hard_iface *primary_if, 439 struct batadv_hard_iface *primary_if,
437 short vid) 440 unsigned short vid)
438{ 441{
439 struct batadv_bla_backbone_gw *backbone_gw; 442 struct batadv_bla_backbone_gw *backbone_gw;
440 443
@@ -456,7 +459,7 @@ batadv_bla_update_own_backbone_gw(struct batadv_priv *bat_priv,
456 */ 459 */
457static void batadv_bla_answer_request(struct batadv_priv *bat_priv, 460static void batadv_bla_answer_request(struct batadv_priv *bat_priv,
458 struct batadv_hard_iface *primary_if, 461 struct batadv_hard_iface *primary_if,
459 short vid) 462 unsigned short vid)
460{ 463{
461 struct hlist_head *head; 464 struct hlist_head *head;
462 struct batadv_hashtable *hash; 465 struct batadv_hashtable *hash;
@@ -547,7 +550,7 @@ static void batadv_bla_send_announce(struct batadv_priv *bat_priv,
547 * @backbone_gw: the backbone gateway which claims it 550 * @backbone_gw: the backbone gateway which claims it
548 */ 551 */
549static void batadv_bla_add_claim(struct batadv_priv *bat_priv, 552static void batadv_bla_add_claim(struct batadv_priv *bat_priv,
550 const uint8_t *mac, const short vid, 553 const uint8_t *mac, const unsigned short vid,
551 struct batadv_bla_backbone_gw *backbone_gw) 554 struct batadv_bla_backbone_gw *backbone_gw)
552{ 555{
553 struct batadv_bla_claim *claim; 556 struct batadv_bla_claim *claim;
@@ -572,7 +575,7 @@ static void batadv_bla_add_claim(struct batadv_priv *bat_priv,
572 atomic_set(&claim->refcount, 2); 575 atomic_set(&claim->refcount, 2);
573 batadv_dbg(BATADV_DBG_BLA, bat_priv, 576 batadv_dbg(BATADV_DBG_BLA, bat_priv,
574 "bla_add_claim(): adding new entry %pM, vid %d to hash ...\n", 577 "bla_add_claim(): adding new entry %pM, vid %d to hash ...\n",
575 mac, vid); 578 mac, BATADV_PRINT_VID(vid));
576 hash_added = batadv_hash_add(bat_priv->bla.claim_hash, 579 hash_added = batadv_hash_add(bat_priv->bla.claim_hash,
577 batadv_compare_claim, 580 batadv_compare_claim,
578 batadv_choose_claim, claim, 581 batadv_choose_claim, claim,
@@ -591,7 +594,7 @@ static void batadv_bla_add_claim(struct batadv_priv *bat_priv,
591 594
592 batadv_dbg(BATADV_DBG_BLA, bat_priv, 595 batadv_dbg(BATADV_DBG_BLA, bat_priv,
593 "bla_add_claim(): changing ownership for %pM, vid %d\n", 596 "bla_add_claim(): changing ownership for %pM, vid %d\n",
594 mac, vid); 597 mac, BATADV_PRINT_VID(vid));
595 598
596 claim->backbone_gw->crc ^= crc16(0, claim->addr, ETH_ALEN); 599 claim->backbone_gw->crc ^= crc16(0, claim->addr, ETH_ALEN);
597 batadv_backbone_gw_free_ref(claim->backbone_gw); 600 batadv_backbone_gw_free_ref(claim->backbone_gw);
@@ -611,7 +614,7 @@ claim_free_ref:
611 * given mac address and vid. 614 * given mac address and vid.
612 */ 615 */
613static void batadv_bla_del_claim(struct batadv_priv *bat_priv, 616static void batadv_bla_del_claim(struct batadv_priv *bat_priv,
614 const uint8_t *mac, const short vid) 617 const uint8_t *mac, const unsigned short vid)
615{ 618{
616 struct batadv_bla_claim search_claim, *claim; 619 struct batadv_bla_claim search_claim, *claim;
617 620
@@ -622,7 +625,7 @@ static void batadv_bla_del_claim(struct batadv_priv *bat_priv,
622 return; 625 return;
623 626
624 batadv_dbg(BATADV_DBG_BLA, bat_priv, "bla_del_claim(): %pM, vid %d\n", 627 batadv_dbg(BATADV_DBG_BLA, bat_priv, "bla_del_claim(): %pM, vid %d\n",
625 mac, vid); 628 mac, BATADV_PRINT_VID(vid));
626 629
627 batadv_hash_remove(bat_priv->bla.claim_hash, batadv_compare_claim, 630 batadv_hash_remove(bat_priv->bla.claim_hash, batadv_compare_claim,
628 batadv_choose_claim, claim); 631 batadv_choose_claim, claim);
@@ -637,7 +640,7 @@ static void batadv_bla_del_claim(struct batadv_priv *bat_priv,
637/* check for ANNOUNCE frame, return 1 if handled */ 640/* check for ANNOUNCE frame, return 1 if handled */
638static int batadv_handle_announce(struct batadv_priv *bat_priv, 641static int batadv_handle_announce(struct batadv_priv *bat_priv,
639 uint8_t *an_addr, uint8_t *backbone_addr, 642 uint8_t *an_addr, uint8_t *backbone_addr,
640 short vid) 643 unsigned short vid)
641{ 644{
642 struct batadv_bla_backbone_gw *backbone_gw; 645 struct batadv_bla_backbone_gw *backbone_gw;
643 uint16_t crc; 646 uint16_t crc;
@@ -658,12 +661,13 @@ static int batadv_handle_announce(struct batadv_priv *bat_priv,
658 661
659 batadv_dbg(BATADV_DBG_BLA, bat_priv, 662 batadv_dbg(BATADV_DBG_BLA, bat_priv,
660 "handle_announce(): ANNOUNCE vid %d (sent by %pM)... CRC = %#.4x\n", 663 "handle_announce(): ANNOUNCE vid %d (sent by %pM)... CRC = %#.4x\n",
661 vid, backbone_gw->orig, crc); 664 BATADV_PRINT_VID(vid), backbone_gw->orig, crc);
662 665
663 if (backbone_gw->crc != crc) { 666 if (backbone_gw->crc != crc) {
664 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv, 667 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv,
665 "handle_announce(): CRC FAILED for %pM/%d (my = %#.4x, sent = %#.4x)\n", 668 "handle_announce(): CRC FAILED for %pM/%d (my = %#.4x, sent = %#.4x)\n",
666 backbone_gw->orig, backbone_gw->vid, 669 backbone_gw->orig,
670 BATADV_PRINT_VID(backbone_gw->vid),
667 backbone_gw->crc, crc); 671 backbone_gw->crc, crc);
668 672
669 batadv_bla_send_request(backbone_gw); 673 batadv_bla_send_request(backbone_gw);
@@ -685,7 +689,7 @@ static int batadv_handle_announce(struct batadv_priv *bat_priv,
685static int batadv_handle_request(struct batadv_priv *bat_priv, 689static int batadv_handle_request(struct batadv_priv *bat_priv,
686 struct batadv_hard_iface *primary_if, 690 struct batadv_hard_iface *primary_if,
687 uint8_t *backbone_addr, 691 uint8_t *backbone_addr,
688 struct ethhdr *ethhdr, short vid) 692 struct ethhdr *ethhdr, unsigned short vid)
689{ 693{
690 /* check for REQUEST frame */ 694 /* check for REQUEST frame */
691 if (!batadv_compare_eth(backbone_addr, ethhdr->h_dest)) 695 if (!batadv_compare_eth(backbone_addr, ethhdr->h_dest))
@@ -699,7 +703,7 @@ static int batadv_handle_request(struct batadv_priv *bat_priv,
699 703
700 batadv_dbg(BATADV_DBG_BLA, bat_priv, 704 batadv_dbg(BATADV_DBG_BLA, bat_priv,
701 "handle_request(): REQUEST vid %d (sent by %pM)...\n", 705 "handle_request(): REQUEST vid %d (sent by %pM)...\n",
702 vid, ethhdr->h_source); 706 BATADV_PRINT_VID(vid), ethhdr->h_source);
703 707
704 batadv_bla_answer_request(bat_priv, primary_if, vid); 708 batadv_bla_answer_request(bat_priv, primary_if, vid);
705 return 1; 709 return 1;
@@ -709,7 +713,7 @@ static int batadv_handle_request(struct batadv_priv *bat_priv,
709static int batadv_handle_unclaim(struct batadv_priv *bat_priv, 713static int batadv_handle_unclaim(struct batadv_priv *bat_priv,
710 struct batadv_hard_iface *primary_if, 714 struct batadv_hard_iface *primary_if,
711 uint8_t *backbone_addr, 715 uint8_t *backbone_addr,
712 uint8_t *claim_addr, short vid) 716 uint8_t *claim_addr, unsigned short vid)
713{ 717{
714 struct batadv_bla_backbone_gw *backbone_gw; 718 struct batadv_bla_backbone_gw *backbone_gw;
715 719
@@ -727,7 +731,7 @@ static int batadv_handle_unclaim(struct batadv_priv *bat_priv,
727 /* this must be an UNCLAIM frame */ 731 /* this must be an UNCLAIM frame */
728 batadv_dbg(BATADV_DBG_BLA, bat_priv, 732 batadv_dbg(BATADV_DBG_BLA, bat_priv,
729 "handle_unclaim(): UNCLAIM %pM on vid %d (sent by %pM)...\n", 733 "handle_unclaim(): UNCLAIM %pM on vid %d (sent by %pM)...\n",
730 claim_addr, vid, backbone_gw->orig); 734 claim_addr, BATADV_PRINT_VID(vid), backbone_gw->orig);
731 735
732 batadv_bla_del_claim(bat_priv, claim_addr, vid); 736 batadv_bla_del_claim(bat_priv, claim_addr, vid);
733 batadv_backbone_gw_free_ref(backbone_gw); 737 batadv_backbone_gw_free_ref(backbone_gw);
@@ -738,7 +742,7 @@ static int batadv_handle_unclaim(struct batadv_priv *bat_priv,
738static int batadv_handle_claim(struct batadv_priv *bat_priv, 742static int batadv_handle_claim(struct batadv_priv *bat_priv,
739 struct batadv_hard_iface *primary_if, 743 struct batadv_hard_iface *primary_if,
740 uint8_t *backbone_addr, uint8_t *claim_addr, 744 uint8_t *backbone_addr, uint8_t *claim_addr,
741 short vid) 745 unsigned short vid)
742{ 746{
743 struct batadv_bla_backbone_gw *backbone_gw; 747 struct batadv_bla_backbone_gw *backbone_gw;
744 748
@@ -861,14 +865,15 @@ static int batadv_bla_process_claim(struct batadv_priv *bat_priv,
861 struct batadv_bla_claim_dst *bla_dst; 865 struct batadv_bla_claim_dst *bla_dst;
862 uint16_t proto; 866 uint16_t proto;
863 int headlen; 867 int headlen;
864 short vid = -1; 868 unsigned short vid = BATADV_NO_FLAGS;
865 int ret; 869 int ret;
866 870
867 ethhdr = (struct ethhdr *)skb_mac_header(skb); 871 ethhdr = eth_hdr(skb);
868 872
869 if (ntohs(ethhdr->h_proto) == ETH_P_8021Q) { 873 if (ntohs(ethhdr->h_proto) == ETH_P_8021Q) {
870 vhdr = (struct vlan_ethhdr *)ethhdr; 874 vhdr = (struct vlan_ethhdr *)ethhdr;
871 vid = ntohs(vhdr->h_vlan_TCI) & VLAN_VID_MASK; 875 vid = ntohs(vhdr->h_vlan_TCI) & VLAN_VID_MASK;
876 vid |= BATADV_VLAN_HAS_TAG;
872 proto = ntohs(vhdr->h_vlan_encapsulated_proto); 877 proto = ntohs(vhdr->h_vlan_encapsulated_proto);
873 headlen = sizeof(*vhdr); 878 headlen = sizeof(*vhdr);
874 } else { 879 } else {
@@ -885,7 +890,7 @@ static int batadv_bla_process_claim(struct batadv_priv *bat_priv,
885 return 0; 890 return 0;
886 891
887 /* pskb_may_pull() may have modified the pointers, get ethhdr again */ 892 /* pskb_may_pull() may have modified the pointers, get ethhdr again */
888 ethhdr = (struct ethhdr *)skb_mac_header(skb); 893 ethhdr = eth_hdr(skb);
889 arphdr = (struct arphdr *)((uint8_t *)ethhdr + headlen); 894 arphdr = (struct arphdr *)((uint8_t *)ethhdr + headlen);
890 895
891 /* Check whether the ARP frame carries a valid 896 /* Check whether the ARP frame carries a valid
@@ -910,7 +915,8 @@ static int batadv_bla_process_claim(struct batadv_priv *bat_priv,
910 if (ret == 1) 915 if (ret == 1)
911 batadv_dbg(BATADV_DBG_BLA, bat_priv, 916 batadv_dbg(BATADV_DBG_BLA, bat_priv,
912 "bla_process_claim(): received a claim frame from another group. From: %pM on vid %d ...(hw_src %pM, hw_dst %pM)\n", 917 "bla_process_claim(): received a claim frame from another group. From: %pM on vid %d ...(hw_src %pM, hw_dst %pM)\n",
913 ethhdr->h_source, vid, hw_src, hw_dst); 918 ethhdr->h_source, BATADV_PRINT_VID(vid), hw_src,
919 hw_dst);
914 920
915 if (ret < 2) 921 if (ret < 2)
916 return ret; 922 return ret;
@@ -945,7 +951,7 @@ static int batadv_bla_process_claim(struct batadv_priv *bat_priv,
945 951
946 batadv_dbg(BATADV_DBG_BLA, bat_priv, 952 batadv_dbg(BATADV_DBG_BLA, bat_priv,
947 "bla_process_claim(): ERROR - this looks like a claim frame, but is useless. eth src %pM on vid %d ...(hw_src %pM, hw_dst %pM)\n", 953 "bla_process_claim(): ERROR - this looks like a claim frame, but is useless. eth src %pM on vid %d ...(hw_src %pM, hw_dst %pM)\n",
948 ethhdr->h_source, vid, hw_src, hw_dst); 954 ethhdr->h_source, BATADV_PRINT_VID(vid), hw_src, hw_dst);
949 return 1; 955 return 1;
950} 956}
951 957
@@ -1362,7 +1368,7 @@ int batadv_bla_is_backbone_gw(struct sk_buff *skb,
1362 struct ethhdr *ethhdr; 1368 struct ethhdr *ethhdr;
1363 struct vlan_ethhdr *vhdr; 1369 struct vlan_ethhdr *vhdr;
1364 struct batadv_bla_backbone_gw *backbone_gw; 1370 struct batadv_bla_backbone_gw *backbone_gw;
1365 short vid = -1; 1371 unsigned short vid = BATADV_NO_FLAGS;
1366 1372
1367 if (!atomic_read(&orig_node->bat_priv->bridge_loop_avoidance)) 1373 if (!atomic_read(&orig_node->bat_priv->bridge_loop_avoidance))
1368 return 0; 1374 return 0;
@@ -1379,6 +1385,7 @@ int batadv_bla_is_backbone_gw(struct sk_buff *skb,
1379 1385
1380 vhdr = (struct vlan_ethhdr *)(skb->data + hdr_size); 1386 vhdr = (struct vlan_ethhdr *)(skb->data + hdr_size);
1381 vid = ntohs(vhdr->h_vlan_TCI) & VLAN_VID_MASK; 1387 vid = ntohs(vhdr->h_vlan_TCI) & VLAN_VID_MASK;
1388 vid |= BATADV_VLAN_HAS_TAG;
1382 } 1389 }
1383 1390
1384 /* see if this originator is a backbone gw for this VLAN */ 1391 /* see if this originator is a backbone gw for this VLAN */
@@ -1428,15 +1435,15 @@ void batadv_bla_free(struct batadv_priv *bat_priv)
1428 * returns 1, otherwise it returns 0 and the caller shall further 1435 * returns 1, otherwise it returns 0 and the caller shall further
1429 * process the skb. 1436 * process the skb.
1430 */ 1437 */
1431int batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb, short vid, 1438int batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb,
1432 bool is_bcast) 1439 unsigned short vid, bool is_bcast)
1433{ 1440{
1434 struct ethhdr *ethhdr; 1441 struct ethhdr *ethhdr;
1435 struct batadv_bla_claim search_claim, *claim = NULL; 1442 struct batadv_bla_claim search_claim, *claim = NULL;
1436 struct batadv_hard_iface *primary_if; 1443 struct batadv_hard_iface *primary_if;
1437 int ret; 1444 int ret;
1438 1445
1439 ethhdr = (struct ethhdr *)skb_mac_header(skb); 1446 ethhdr = eth_hdr(skb);
1440 1447
1441 primary_if = batadv_primary_if_get_selected(bat_priv); 1448 primary_if = batadv_primary_if_get_selected(bat_priv);
1442 if (!primary_if) 1449 if (!primary_if)
@@ -1523,7 +1530,8 @@ out:
1523 * returns 1, otherwise it returns 0 and the caller shall further 1530 * returns 1, otherwise it returns 0 and the caller shall further
1524 * process the skb. 1531 * process the skb.
1525 */ 1532 */
1526int batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb, short vid) 1533int batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb,
1534 unsigned short vid)
1527{ 1535{
1528 struct ethhdr *ethhdr; 1536 struct ethhdr *ethhdr;
1529 struct batadv_bla_claim search_claim, *claim = NULL; 1537 struct batadv_bla_claim search_claim, *claim = NULL;
@@ -1543,7 +1551,7 @@ int batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb, short vid)
1543 if (batadv_bla_process_claim(bat_priv, primary_if, skb)) 1551 if (batadv_bla_process_claim(bat_priv, primary_if, skb))
1544 goto handled; 1552 goto handled;
1545 1553
1546 ethhdr = (struct ethhdr *)skb_mac_header(skb); 1554 ethhdr = eth_hdr(skb);
1547 1555
1548 if (unlikely(atomic_read(&bat_priv->bla.num_requests))) 1556 if (unlikely(atomic_read(&bat_priv->bla.num_requests)))
1549 /* don't allow broadcasts while requests are in flight */ 1557 /* don't allow broadcasts while requests are in flight */
@@ -1627,8 +1635,8 @@ int batadv_bla_claim_table_seq_print_text(struct seq_file *seq, void *offset)
1627 hlist_for_each_entry_rcu(claim, head, hash_entry) { 1635 hlist_for_each_entry_rcu(claim, head, hash_entry) {
1628 is_own = batadv_compare_eth(claim->backbone_gw->orig, 1636 is_own = batadv_compare_eth(claim->backbone_gw->orig,
1629 primary_addr); 1637 primary_addr);
1630 seq_printf(seq, " * %pM on % 5d by %pM [%c] (%#.4x)\n", 1638 seq_printf(seq, " * %pM on %5d by %pM [%c] (%#.4x)\n",
1631 claim->addr, claim->vid, 1639 claim->addr, BATADV_PRINT_VID(claim->vid),
1632 claim->backbone_gw->orig, 1640 claim->backbone_gw->orig,
1633 (is_own ? 'x' : ' '), 1641 (is_own ? 'x' : ' '),
1634 claim->backbone_gw->crc); 1642 claim->backbone_gw->crc);
@@ -1680,10 +1688,10 @@ int batadv_bla_backbone_table_seq_print_text(struct seq_file *seq, void *offset)
1680 if (is_own) 1688 if (is_own)
1681 continue; 1689 continue;
1682 1690
1683 seq_printf(seq, 1691 seq_printf(seq, " * %pM on %5d %4i.%03is (%#.4x)\n",
1684 " * %pM on % 5d % 4i.%03is (%#.4x)\n", 1692 backbone_gw->orig,
1685 backbone_gw->orig, backbone_gw->vid, 1693 BATADV_PRINT_VID(backbone_gw->vid), secs,
1686 secs, msecs, backbone_gw->crc); 1694 msecs, backbone_gw->crc);
1687 } 1695 }
1688 rcu_read_unlock(); 1696 rcu_read_unlock();
1689 } 1697 }