Hi GhantaKrishnamurthy, Thank you for the patch! Yet something to improve:
[auto build test ERROR on net-next/master] url: https://github.com/0day-ci/linux/commits/GhantaKrishnamurthy-MohanKrishna/tipc-Confgiuration-of-MTU-for-media-UDP/20180420-224412 config: i386-randconfig-a0-201815 (attached as .config) compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4 reproduce: # save the attached .config to linux build tree make ARCH=i386 Note: the linux-review/GhantaKrishnamurthy-MohanKrishna/tipc-Confgiuration-of-MTU-for-media-UDP/20180420-224412 HEAD 5757244a45c9114ee8a7ed60e9b074107605f6eb builds fine. It only hurts bisectibility. All errors (new ones prefixed by >>): net/tipc/udp_media.c: In function 'tipc_udp_enable': net/tipc/udp_media.c:716:20: error: 'struct tipc_media' has no member named 'mtu' b->mtu = b->media->mtu; ^ net/tipc/udp_media.c: At top level: >> net/tipc/udp_media.c:805:2: error: unknown field 'mtu' specified in >> initializer .mtu = TIPC_DEF_LINK_UDP_MTU, ^ vim +/mtu +805 net/tipc/udp_media.c 632 633 /** 634 * tipc_udp_enable - callback to create a new udp bearer instance 635 * @net: network namespace 636 * @b: pointer to generic tipc_bearer 637 * @attrs: netlink bearer configuration 638 * 639 * validate the bearer parameters and initialize the udp bearer 640 * rtnl_lock should be held 641 */ 642 static int tipc_udp_enable(struct net *net, struct tipc_bearer *b, 643 struct nlattr *attrs[]) 644 { 645 int err = -EINVAL; 646 struct udp_bearer *ub; 647 struct udp_media_addr remote = {0}; 648 struct udp_media_addr local = {0}; 649 struct udp_port_cfg udp_conf = {0}; 650 struct udp_tunnel_sock_cfg tuncfg = {NULL}; 651 struct nlattr *opts[TIPC_NLA_UDP_MAX + 1]; 652 u8 node_id[NODE_ID_LEN] = {0,}; 653 654 ub = kzalloc(sizeof(*ub), GFP_ATOMIC); 655 if (!ub) 656 return -ENOMEM; 657 658 INIT_LIST_HEAD(&ub->rcast.list); 659 660 if (!attrs[TIPC_NLA_BEARER_UDP_OPTS]) 661 goto err; 662 663 if (nla_parse_nested(opts, TIPC_NLA_UDP_MAX, 664 attrs[TIPC_NLA_BEARER_UDP_OPTS], 665 tipc_nl_udp_policy, NULL)) 666 goto err; 667 668 if (!opts[TIPC_NLA_UDP_LOCAL] || !opts[TIPC_NLA_UDP_REMOTE]) { 669 pr_err("Invalid UDP bearer configuration"); 670 err = -EINVAL; 671 goto err; 672 } 673 674 err = tipc_parse_udp_addr(opts[TIPC_NLA_UDP_LOCAL], &local, 675 &ub->ifindex); 676 if (err) 677 goto err; 678 679 err = tipc_parse_udp_addr(opts[TIPC_NLA_UDP_REMOTE], &remote, NULL); 680 if (err) 681 goto err; 682 683 /* Autoconfigure own node identity if needed */ 684 if (!tipc_own_id(net)) { 685 memcpy(node_id, local.ipv6.in6_u.u6_addr8, 16); 686 tipc_net_init(net, node_id, 0); 687 } 688 if (!tipc_own_id(net)) { 689 pr_warn("Failed to set node id, please configure manually\n"); 690 err = -EINVAL; 691 goto err; 692 } 693 694 b->bcast_addr.media_id = TIPC_MEDIA_TYPE_UDP; 695 b->bcast_addr.broadcast = TIPC_BROADCAST_SUPPORT; 696 rcu_assign_pointer(b->media_ptr, ub); 697 rcu_assign_pointer(ub->bearer, b); 698 tipc_udp_media_addr_set(&b->addr, &local); 699 if (local.proto == htons(ETH_P_IP)) { 700 struct net_device *dev; 701 702 dev = __ip_dev_find(net, local.ipv4.s_addr, false); 703 if (!dev) { 704 err = -ENODEV; 705 goto err; 706 } 707 udp_conf.family = AF_INET; 708 udp_conf.local_ip.s_addr = htonl(INADDR_ANY); 709 udp_conf.use_udp_checksums = false; 710 ub->ifindex = dev->ifindex; 711 if (tipc_mtu_bad(dev, sizeof(struct iphdr) + 712 sizeof(struct udphdr))) { 713 err = -EINVAL; 714 goto err; 715 } > 716 b->mtu = b->media->mtu; 717 #if IS_ENABLED(CONFIG_IPV6) 718 } else if (local.proto == htons(ETH_P_IPV6)) { 719 udp_conf.family = AF_INET6; 720 udp_conf.use_udp6_tx_checksums = true; 721 udp_conf.use_udp6_rx_checksums = true; 722 udp_conf.local_ip6 = in6addr_any; 723 b->mtu = 1280; 724 #endif 725 } else { 726 err = -EAFNOSUPPORT; 727 goto err; 728 } 729 udp_conf.local_udp_port = local.port; 730 err = udp_sock_create(net, &udp_conf, &ub->ubsock); 731 if (err) 732 goto err; 733 tuncfg.sk_user_data = ub; 734 tuncfg.encap_type = 1; 735 tuncfg.encap_rcv = tipc_udp_recv; 736 tuncfg.encap_destroy = NULL; 737 setup_udp_tunnel_sock(net, ub->ubsock, &tuncfg); 738 739 /** 740 * The bcast media address port is used for all peers and the ip 741 * is used if it's a multicast address. 742 */ 743 memcpy(&b->bcast_addr.value, &remote, sizeof(remote)); 744 if (tipc_udp_is_mcast_addr(&remote)) 745 err = enable_mcast(ub, &remote); 746 else 747 err = tipc_udp_rcast_add(b, &remote); 748 if (err) 749 goto err; 750 751 return 0; 752 err: 753 if (ub->ubsock) 754 udp_tunnel_sock_release(ub->ubsock); 755 kfree(ub); 756 return err; 757 } 758 759 /* cleanup_bearer - break the socket/bearer association */ 760 static void cleanup_bearer(struct work_struct *work) 761 { 762 struct udp_bearer *ub = container_of(work, struct udp_bearer, work); 763 struct udp_replicast *rcast, *tmp; 764 765 list_for_each_entry_safe(rcast, tmp, &ub->rcast.list, list) { 766 list_del_rcu(&rcast->list); 767 kfree_rcu(rcast, rcu); 768 } 769 770 if (ub->ubsock) 771 udp_tunnel_sock_release(ub->ubsock); 772 synchronize_net(); 773 kfree(ub); 774 } 775 776 /* tipc_udp_disable - detach bearer from socket */ 777 static void tipc_udp_disable(struct tipc_bearer *b) 778 { 779 struct udp_bearer *ub; 780 781 ub = rcu_dereference_rtnl(b->media_ptr); 782 if (!ub) { 783 pr_err("UDP bearer instance not found\n"); 784 return; 785 } 786 if (ub->ubsock) 787 sock_set_flag(ub->ubsock->sk, SOCK_DEAD); 788 RCU_INIT_POINTER(ub->bearer, NULL); 789 790 /* sock_release need to be done outside of rtnl lock */ 791 INIT_WORK(&ub->work, cleanup_bearer); 792 schedule_work(&ub->work); 793 } 794 795 struct tipc_media udp_media_info = { 796 .send_msg = tipc_udp_send_msg, 797 .enable_media = tipc_udp_enable, 798 .disable_media = tipc_udp_disable, 799 .addr2str = tipc_udp_addr2str, 800 .addr2msg = tipc_udp_addr2msg, 801 .msg2addr = tipc_udp_msg2addr, 802 .priority = TIPC_DEF_LINK_PRI, 803 .tolerance = TIPC_DEF_LINK_TOL, 804 .window = TIPC_DEF_LINK_WIN, > 805 .mtu = TIPC_DEF_LINK_UDP_MTU, --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip