CC: [email protected] CC: [email protected] BCC: [email protected] CC: [email protected] TO: Appana Durga Kedareswara Rao <[email protected]> CC: Michal Simek <[email protected]> CC: Radhey Shyam Pandey <[email protected]> CC: Sarath Babu Naidu Gaddam <[email protected]> CC: Swati Agarwal <[email protected]>
tree: https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.15_LTS head: 802aff9b79e15ede7cbb84ac784f943f5a66287a commit: 353f790929055728585095cb890b378ee0471607 [224/973] net: axienet: Add clock support :::::: branch date: 7 days ago :::::: commit date: 5 weeks ago config: x86_64-randconfig-c007 (https://download.01.org/0day-ci/archive/20220311/[email protected]/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 276ca87382b8f16a65bddac700202924228982f6) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/Xilinx/linux-xlnx/commit/353f790929055728585095cb890b378ee0471607 git remote add xilinx-xlnx https://github.com/Xilinx/linux-xlnx git fetch --no-tags xilinx-xlnx xlnx_rebase_v5.15_LTS git checkout 353f790929055728585095cb890b378ee0471607 # save the config file to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ~~~~~~~~ ^ Suppressed 8 warnings (8 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 15 warnings generated. Suppressed 15 warnings (15 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 15 warnings generated. drivers/net/wireless/ti/wl1251/main.c:658:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores] ret = wl1251_acx_wr_tbtt_and_dtim(wl, wl->beacon_int, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wireless/ti/wl1251/main.c:658:3: note: Value stored to 'ret' is never read ret = wl1251_acx_wr_tbtt_and_dtim(wl, wl->beacon_int, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 14 warnings (14 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 14 warnings generated. Suppressed 14 warnings (14 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 15 warnings generated. drivers/net/wireless/ti/wl1251/tx.c:227:4: warning: Value stored to 'tx_hdr' is never read [clang-analyzer-deadcode.DeadStores] tx_hdr = (struct tx_double_buffer_desc *) skb->data; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wireless/ti/wl1251/tx.c:227:4: note: Value stored to 'tx_hdr' is never read tx_hdr = (struct tx_double_buffer_desc *) skb->data; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 14 warnings (14 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 14 warnings generated. Suppressed 14 warnings (14 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 15 warnings generated. drivers/net/wireless/ti/wl1251/ps.c:64:2: warning: Value stored to 'start' is never read [clang-analyzer-deadcode.DeadStores] start = jiffies; ^ ~~~~~~~ drivers/net/wireless/ti/wl1251/ps.c:64:2: note: Value stored to 'start' is never read start = jiffies; ^ ~~~~~~~ Suppressed 14 warnings (14 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 14 warnings generated. Suppressed 14 warnings (14 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 14 warnings generated. Suppressed 14 warnings (14 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 11 warnings generated. Suppressed 11 warnings (11 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 12 warnings generated. Suppressed 12 warnings (12 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 12 warnings generated. Suppressed 12 warnings (12 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 11 warnings generated. Suppressed 11 warnings (11 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 12 warnings generated. Suppressed 12 warnings (12 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 18 warnings generated. drivers/net/ethernet/broadcom/bcmsysport.c:903:21: warning: Value stored to 'ndev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct net_device *ndev = priv->netdev; ^~~~ ~~~~~~~~~~~~ drivers/net/ethernet/broadcom/bcmsysport.c:903:21: note: Value stored to 'ndev' during its initialization is never read struct net_device *ndev = priv->netdev; ^~~~ ~~~~~~~~~~~~ Suppressed 17 warnings (13 in non-user code, 4 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 12 warnings generated. drivers/net/ethernet/fujitsu/fmvj18x_cs.c:580:5: warning: Value stored to 'j' is never read [clang-analyzer-deadcode.DeadStores] j = pcmcia_release_window(link, link->resource[2]); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/fujitsu/fmvj18x_cs.c:580:5: note: Value stored to 'j' is never read j = pcmcia_release_window(link, link->resource[2]); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 11 warnings (11 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 11 warnings generated. Suppressed 11 warnings (11 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 16 warnings generated. drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1521:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores] ret = axienet_mdio_enable(lp); ^ ~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1521:2: note: Value stored to 'ret' is never read ret = axienet_mdio_enable(lp); ^ ~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1556:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores] ret = axienet_device_reset(ndev); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1556:3: note: Value stored to 'ret' is never read ret = axienet_device_reset(ndev); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1558:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores] ret = axienet_mii_init(ndev); ^ ~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1558:3: note: Value stored to 'ret' is never read ret = axienet_mii_init(ndev); ^ ~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/xilinx/xilinx_axienet_main.c:2826:2: warning: Assigned >> value is garbage or undefined [clang-analyzer-core.uninitialized.Assign] int (*axienet_clk_init)(struct platform_device *pdev, ^ drivers/net/ethernet/xilinx/xilinx_axienet_main.c:2826:2: note: Assigned value is garbage or undefined int (*axienet_clk_init)(struct platform_device *pdev, ^ Suppressed 12 warnings (12 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 11 warnings generated. Suppressed 11 warnings (11 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 9 warnings generated. Suppressed 9 warnings (9 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 10 warnings generated. Suppressed 10 warnings (10 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 17 warnings generated. drivers/nvme/host/fc.c:2067:28: warning: Value stored to 'op_w_sgl' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct nvme_fcp_op_w_sgl *op_w_sgl = ^~~~~~~~ drivers/nvme/host/fc.c:2067:28: note: Value stored to 'op_w_sgl' during its initialization is never read struct nvme_fcp_op_w_sgl *op_w_sgl = ^~~~~~~~ drivers/nvme/host/fc.c:2758:7: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc] if (ctrl->rport->remoteport.port_state == FC_OBJSTATE_ONLINE && ^ drivers/nvme/host/fc.c:2818:6: note: Assuming the condition is false if (test_bit(FCCTRL_TERMIO, &ctrl->flags)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/nvme/host/fc.c:2818:2: note: Taking false branch if (test_bit(FCCTRL_TERMIO, &ctrl->flags)) ^ drivers/nvme/host/fc.c:2823:8: note: Calling 'nvme_fc_start_fcp_op' ret = nvme_fc_start_fcp_op(ctrl, aen_op->queue, aen_op, 0, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/nvme/host/fc.c:2665:6: note: Assuming field 'port_state' is equal to FC_OBJSTATE_ONLINE if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/nvme/host/fc.c:2665:2: note: Taking false branch if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE) ^ drivers/nvme/host/fc.c:2668:6: note: Assuming the condition is false if (!nvme_fc_ctrl_get(ctrl)) ^~~~~~~~~~~~~~~~~~~~~~~ drivers/nvme/host/fc.c:2668:2: note: Taking false branch if (!nvme_fc_ctrl_get(ctrl)) ^ drivers/nvme/host/fc.c:2674:2: note: Control jumps to 'case NVMEFC_FCP_NODATA:' at line 2681 switch (io_dir) { ^ drivers/nvme/host/fc.c:2683:3: note: Execution continues on line 2685 break; ^ drivers/nvme/host/fc.c:2696:2: note: Assuming field 'metadata' is 0 WARN_ON_ONCE(sqe->common.metadata); ^ include/asm-generic/bug.h:104:23: note: expanded from macro 'WARN_ON_ONCE' int __ret_warn_on = !!(condition); \ ^~~~~~~~~~~~ drivers/nvme/host/fc.c:2696:2: note: Taking false branch WARN_ON_ONCE(sqe->common.metadata); ^ include/asm-generic/bug.h:105:2: note: expanded from macro 'WARN_ON_ONCE' if (unlikely(__ret_warn_on)) \ ^ drivers/nvme/host/fc.c:2711:6: note: Assuming the condition is false if (!(op->flags & FCOP_FLAGS_AEN)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/nvme/host/fc.c:2711:2: note: Taking false branch if (!(op->flags & FCOP_FLAGS_AEN)) { ^ drivers/nvme/host/fc.c:2727:2: note: Taking false branch if (!(op->flags & FCOP_FLAGS_AEN)) ^ drivers/nvme/host/fc.c:2735:6: note: Assuming 'ret' is not equal to 0 if (ret) { ^~~ drivers/nvme/host/fc.c:2735:2: note: Taking true branch if (ret) { ^ drivers/nvme/host/fc.c:2751:7: note: Assuming the condition is false if (!(op->flags & FCOP_FLAGS_AEN)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/nvme/host/fc.c:2751:3: note: Taking false branch if (!(op->flags & FCOP_FLAGS_AEN)) { ^ drivers/nvme/host/fc.c:2756:3: note: Calling 'nvme_fc_ctrl_put' nvme_fc_ctrl_put(ctrl); ^~~~~~~~~~~~~~~~~~~~~~ drivers/nvme/host/fc.c:2404:2: note: Calling 'kref_put' kref_put(&ctrl->ref, nvme_fc_ctrl_free); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kref.h:64:2: note: Taking true branch if (refcount_dec_and_test(&kref->refcount)) { ^ include/linux/kref.h:65:3: note: Calling 'nvme_fc_ctrl_free' release(kref); vim +2826 drivers/net/ethernet/xilinx/xilinx_axienet_main.c a2fc9e93fefa1f Appana Durga Kedareswara Rao 2020-01-24 2811 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2812 /** 2be586205ca2b8 Srikanth Thokala 2015-05-05 2813 * axienet_probe - Axi Ethernet probe function. 95219aa538e11d Srikanth Thokala 2015-05-05 2814 * @pdev: Pointer to platform device structure. 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2815 * b0d081c524b46c Michal Simek 2015-05-05 2816 * Return: 0, on success 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2817 * Non-zero error value on failure. 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2818 * 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2819 * This is the probe routine for Axi Ethernet driver. This is called before 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2820 * any other driver routines are invoked. It allocates and sets up the Ethernet 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2821 * device. Parses through device tree and populates fields of 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2822 * axienet_local. It registers the Ethernet device. 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2823 */ 2be586205ca2b8 Srikanth Thokala 2015-05-05 2824 static int axienet_probe(struct platform_device *pdev) 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2825 { 353f7909290557 Appana Durga Kedareswara Rao 2021-01-22 @2826 int (*axienet_clk_init)(struct platform_device *pdev, 353f7909290557 Appana Durga Kedareswara Rao 2021-01-22 2827 struct clk **axi_aclk, struct clk **axis_clk, 353f7909290557 Appana Durga Kedareswara Rao 2021-01-22 2828 struct clk **ref_clk, struct clk **tmpclk) = 353f7909290557 Appana Durga Kedareswara Rao 2021-01-22 2829 axienet_clk_init; c9e6ca8b3f1707 Appana Durga Kedareswara Rao 2021-01-22 2830 int ret = 0; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2831 struct device_node *np; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2832 struct axienet_local *lp; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2833 struct net_device *ndev; 83216e3988cd19 Michael Walle 2021-04-12 2834 u8 mac_addr[ETH_ALEN]; daef06520f0d07 Radhey Shyam Pandey 2020-01-24 2835 struct resource *ethres, dmares; 5fff0151b3244d Andre Przywara 2020-03-24 2836 int addr_width = 32; 8495659bf93c8e Srikanth Thokala 2015-05-05 2837 u32 value; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2838 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2839 ndev = alloc_etherdev(sizeof(*lp)); 41de8d4cff21a2 Joe Perches 2012-01-29 2840 if (!ndev) 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2841 return -ENOMEM; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2842 95219aa538e11d Srikanth Thokala 2015-05-05 2843 platform_set_drvdata(pdev, ndev); 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2844 95219aa538e11d Srikanth Thokala 2015-05-05 2845 SET_NETDEV_DEV(ndev, &pdev->dev); 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2846 ndev->flags &= ~IFF_MULTICAST; /* clear multicast */ 28e24c62ab3062 Eric Dumazet 2013-12-02 2847 ndev->features = NETIF_F_SG; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2848 ndev->netdev_ops = &axienet_netdev_ops; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2849 ndev->ethtool_ops = &axienet_ethtool_ops; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2850 d894be57ca92c8 Jarod Wilson 2016-10-20 2851 /* MTU range: 64 - 9000 */ d894be57ca92c8 Jarod Wilson 2016-10-20 2852 ndev->min_mtu = 64; d894be57ca92c8 Jarod Wilson 2016-10-20 2853 ndev->max_mtu = XAE_JUMBO_MTU; d894be57ca92c8 Jarod Wilson 2016-10-20 2854 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2855 lp = netdev_priv(ndev); 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2856 lp->ndev = ndev; 95219aa538e11d Srikanth Thokala 2015-05-05 2857 lp->dev = &pdev->dev; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2858 lp->options = XAE_OPTION_DEFAULTS; 8b09ca823ffb4e Robert Hancock 2019-06-06 2859 lp->rx_bd_num = RX_BD_NUM_DEFAULT; 8b09ca823ffb4e Robert Hancock 2019-06-06 2860 lp->tx_bd_num = TX_BD_NUM_DEFAULT; 57baf8cc70ea4c Robert Hancock 2021-02-12 2861 b11bfb9a19f9d7 Robert Hancock 2021-03-25 2862 lp->axi_clk = devm_clk_get_optional(&pdev->dev, "s_axi_lite_clk"); b11bfb9a19f9d7 Robert Hancock 2021-03-25 2863 if (!lp->axi_clk) { b11bfb9a19f9d7 Robert Hancock 2021-03-25 2864 /* For backward compatibility, if named AXI clock is not present, b11bfb9a19f9d7 Robert Hancock 2021-03-25 2865 * treat the first clock specified as the AXI clock. b11bfb9a19f9d7 Robert Hancock 2021-03-25 2866 */ b11bfb9a19f9d7 Robert Hancock 2021-03-25 2867 lp->axi_clk = devm_clk_get_optional(&pdev->dev, NULL); b11bfb9a19f9d7 Robert Hancock 2021-03-25 2868 } b11bfb9a19f9d7 Robert Hancock 2021-03-25 2869 if (IS_ERR(lp->axi_clk)) { b11bfb9a19f9d7 Robert Hancock 2021-03-25 2870 ret = PTR_ERR(lp->axi_clk); 57baf8cc70ea4c Robert Hancock 2021-02-12 2871 goto free_netdev; 57baf8cc70ea4c Robert Hancock 2021-02-12 2872 } b11bfb9a19f9d7 Robert Hancock 2021-03-25 2873 ret = clk_prepare_enable(lp->axi_clk); 57baf8cc70ea4c Robert Hancock 2021-02-12 2874 if (ret) { b11bfb9a19f9d7 Robert Hancock 2021-03-25 2875 dev_err(&pdev->dev, "Unable to enable AXI clock: %d\n", ret); 57baf8cc70ea4c Robert Hancock 2021-02-12 2876 goto free_netdev; 57baf8cc70ea4c Robert Hancock 2021-02-12 2877 } 57baf8cc70ea4c Robert Hancock 2021-02-12 2878 b11bfb9a19f9d7 Robert Hancock 2021-03-25 2879 lp->misc_clks[0].id = "axis_clk"; b11bfb9a19f9d7 Robert Hancock 2021-03-25 2880 lp->misc_clks[1].id = "ref_clk"; b11bfb9a19f9d7 Robert Hancock 2021-03-25 2881 lp->misc_clks[2].id = "mgt_clk"; b11bfb9a19f9d7 Robert Hancock 2021-03-25 2882 b11bfb9a19f9d7 Robert Hancock 2021-03-25 2883 ret = devm_clk_bulk_get_optional(&pdev->dev, XAE_NUM_MISC_CLOCKS, lp->misc_clks); b11bfb9a19f9d7 Robert Hancock 2021-03-25 2884 if (ret) b11bfb9a19f9d7 Robert Hancock 2021-03-25 2885 goto cleanup_clk; b11bfb9a19f9d7 Robert Hancock 2021-03-25 2886 b11bfb9a19f9d7 Robert Hancock 2021-03-25 2887 ret = clk_bulk_prepare_enable(XAE_NUM_MISC_CLOCKS, lp->misc_clks); b11bfb9a19f9d7 Robert Hancock 2021-03-25 2888 if (ret) b11bfb9a19f9d7 Robert Hancock 2021-03-25 2889 goto cleanup_clk; b11bfb9a19f9d7 Robert Hancock 2021-03-25 2890 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2891 /* Map device registers */ 47651c51c02fc4 Yang Yingliang 2021-06-10 2892 lp->regs = devm_platform_get_and_ioremap_resource(pdev, 0, ðres); fcc028c106e575 Krzysztof Kozlowski 2015-07-09 2893 if (IS_ERR(lp->regs)) { fcc028c106e575 Krzysztof Kozlowski 2015-07-09 2894 ret = PTR_ERR(lp->regs); 59cd4f19267a0a Robert Hancock 2021-03-11 2895 goto cleanup_clk; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2896 } 7fa0043d5c74c6 Robert Hancock 2019-06-11 2897 lp->regs_start = ethres->start; 46aa27df885321 Srikanth Thokala 2015-05-05 2898 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2899 /* Setup checksum offload, but default to off if not specified */ 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2900 lp->features = 0; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2901 a2fc9e93fefa1f Appana Durga Kedareswara Rao 2020-01-24 2902 if (pdev->dev.of_node) { a2fc9e93fefa1f Appana Durga Kedareswara Rao 2020-01-24 2903 const struct of_device_id *match; a2fc9e93fefa1f Appana Durga Kedareswara Rao 2020-01-24 2904 a2fc9e93fefa1f Appana Durga Kedareswara Rao 2020-01-24 2905 match = of_match_node(axienet_of_match, pdev->dev.of_node); 353f7909290557 Appana Durga Kedareswara Rao 2021-01-22 2906 if (match && match->data) { a2fc9e93fefa1f Appana Durga Kedareswara Rao 2020-01-24 2907 lp->axienet_config = match->data; 353f7909290557 Appana Durga Kedareswara Rao 2021-01-22 2908 axienet_clk_init = lp->axienet_config->clk_init; 353f7909290557 Appana Durga Kedareswara Rao 2021-01-22 2909 } a2fc9e93fefa1f Appana Durga Kedareswara Rao 2020-01-24 2910 } a2fc9e93fefa1f Appana Durga Kedareswara Rao 2020-01-24 2911 8495659bf93c8e Srikanth Thokala 2015-05-05 2912 ret = of_property_read_u32(pdev->dev.of_node, "xlnx,txcsum", &value); 8495659bf93c8e Srikanth Thokala 2015-05-05 2913 if (!ret) { c9e6ca8b3f1707 Appana Durga Kedareswara Rao 2021-01-22 2914 dev_info(&pdev->dev, "TX_CSUM %d\n", value); c9e6ca8b3f1707 Appana Durga Kedareswara Rao 2021-01-22 2915 8495659bf93c8e Srikanth Thokala 2015-05-05 2916 switch (value) { 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2917 case 1: 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2918 lp->csum_offload_on_tx_path = 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2919 XAE_FEATURE_PARTIAL_TX_CSUM; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2920 lp->features |= XAE_FEATURE_PARTIAL_TX_CSUM; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2921 /* Can checksum TCP/UDP over IPv4. */ c9e6ca8b3f1707 Appana Durga Kedareswara Rao 2021-01-22 2922 ndev->features |= NETIF_F_IP_CSUM | NETIF_F_SG; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2923 break; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2924 case 2: 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2925 lp->csum_offload_on_tx_path = 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2926 XAE_FEATURE_FULL_TX_CSUM; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2927 lp->features |= XAE_FEATURE_FULL_TX_CSUM; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2928 /* Can checksum TCP/UDP over IPv4. */ c9e6ca8b3f1707 Appana Durga Kedareswara Rao 2021-01-22 2929 ndev->features |= NETIF_F_IP_CSUM | NETIF_F_SG; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2930 break; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2931 default: 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2932 lp->csum_offload_on_tx_path = XAE_NO_CSUM_OFFLOAD; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2933 } 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2934 } 8495659bf93c8e Srikanth Thokala 2015-05-05 2935 ret = of_property_read_u32(pdev->dev.of_node, "xlnx,rxcsum", &value); 8495659bf93c8e Srikanth Thokala 2015-05-05 2936 if (!ret) { c9e6ca8b3f1707 Appana Durga Kedareswara Rao 2021-01-22 2937 dev_info(&pdev->dev, "RX_CSUM %d\n", value); c9e6ca8b3f1707 Appana Durga Kedareswara Rao 2021-01-22 2938 8495659bf93c8e Srikanth Thokala 2015-05-05 2939 switch (value) { 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2940 case 1: 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2941 lp->csum_offload_on_rx_path = 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2942 XAE_FEATURE_PARTIAL_RX_CSUM; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2943 lp->features |= XAE_FEATURE_PARTIAL_RX_CSUM; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2944 break; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2945 case 2: 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2946 lp->csum_offload_on_rx_path = 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2947 XAE_FEATURE_FULL_RX_CSUM; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2948 lp->features |= XAE_FEATURE_FULL_RX_CSUM; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2949 break; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2950 default: 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2951 lp->csum_offload_on_rx_path = XAE_NO_CSUM_OFFLOAD; 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2952 } 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2953 } 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2954 /* For supporting jumbo frames, the Axi Ethernet hardware must have f080a8c35d8932 Srikanth Thokala 2015-05-05 2955 * a larger Rx/Tx Memory. Typically, the size must be large so that f080a8c35d8932 Srikanth Thokala 2015-05-05 2956 * we can enable jumbo option and start supporting jumbo frames. f080a8c35d8932 Srikanth Thokala 2015-05-05 2957 * Here we check for memory allocated for Rx/Tx in the hardware from f080a8c35d8932 Srikanth Thokala 2015-05-05 2958 * the device-tree and accordingly set flags. f080a8c35d8932 Srikanth Thokala 2015-05-05 2959 */ 8495659bf93c8e Srikanth Thokala 2015-05-05 2960 of_property_read_u32(pdev->dev.of_node, "xlnx,rxmem", &lp->rxmem); ee06b1728b9564 Alvaro G. M 2017-07-17 2961 6c8f06bb2e5147 Robert Hancock 2021-02-12 2962 lp->switch_x_sgmii = of_property_read_bool(pdev->dev.of_node, 6c8f06bb2e5147 Robert Hancock 2021-02-12 2963 "xlnx,switch-x-sgmii"); 6c8f06bb2e5147 Robert Hancock 2021-02-12 2964 ee06b1728b9564 Alvaro G. M 2017-07-17 2965 /* Start with the proprietary, and broken phy_type */ ee06b1728b9564 Alvaro G. M 2017-07-17 2966 ret = of_property_read_u32(pdev->dev.of_node, "xlnx,phy-type", &value); ee06b1728b9564 Alvaro G. M 2017-07-17 2967 if (!ret) { ee06b1728b9564 Alvaro G. M 2017-07-17 2968 switch (value) { ee06b1728b9564 Alvaro G. M 2017-07-17 2969 case XAE_PHY_TYPE_MII: ee06b1728b9564 Alvaro G. M 2017-07-17 2970 lp->phy_mode = PHY_INTERFACE_MODE_MII; ee06b1728b9564 Alvaro G. M 2017-07-17 2971 break; ee06b1728b9564 Alvaro G. M 2017-07-17 2972 case XAE_PHY_TYPE_GMII: ee06b1728b9564 Alvaro G. M 2017-07-17 2973 lp->phy_mode = PHY_INTERFACE_MODE_GMII; ee06b1728b9564 Alvaro G. M 2017-07-17 2974 break; ee06b1728b9564 Alvaro G. M 2017-07-17 2975 case XAE_PHY_TYPE_RGMII_2_0: ee06b1728b9564 Alvaro G. M 2017-07-17 2976 lp->phy_mode = PHY_INTERFACE_MODE_RGMII_ID; ee06b1728b9564 Alvaro G. M 2017-07-17 2977 break; ee06b1728b9564 Alvaro G. M 2017-07-17 2978 case XAE_PHY_TYPE_SGMII: ee06b1728b9564 Alvaro G. M 2017-07-17 2979 lp->phy_mode = PHY_INTERFACE_MODE_SGMII; ee06b1728b9564 Alvaro G. M 2017-07-17 2980 break; ee06b1728b9564 Alvaro G. M 2017-07-17 2981 case XAE_PHY_TYPE_1000BASE_X: ee06b1728b9564 Alvaro G. M 2017-07-17 2982 lp->phy_mode = PHY_INTERFACE_MODE_1000BASEX; ee06b1728b9564 Alvaro G. M 2017-07-17 2983 break; ee06b1728b9564 Alvaro G. M 2017-07-17 2984 default: 9dce88e232cf19 Appana Durga Kedareswara Rao 2020-01-24 2985 /* Don't error out as phy-type is an optional property */ 9dce88e232cf19 Appana Durga Kedareswara Rao 2020-01-24 2986 break; ee06b1728b9564 Alvaro G. M 2017-07-17 2987 } ee06b1728b9564 Alvaro G. M 2017-07-17 2988 } else { 0c65b2b90d13c1 Andrew Lunn 2019-11-04 2989 ret = of_get_phy_mode(pdev->dev.of_node, &lp->phy_mode); 0c65b2b90d13c1 Andrew Lunn 2019-11-04 2990 if (ret) 59cd4f19267a0a Robert Hancock 2021-03-11 2991 goto cleanup_clk; ee06b1728b9564 Alvaro G. M 2017-07-17 2992 } 6c8f06bb2e5147 Robert Hancock 2021-02-12 2993 if (lp->switch_x_sgmii && lp->phy_mode != PHY_INTERFACE_MODE_SGMII && 6c8f06bb2e5147 Robert Hancock 2021-02-12 2994 lp->phy_mode != PHY_INTERFACE_MODE_1000BASEX) { 6c8f06bb2e5147 Robert Hancock 2021-02-12 2995 dev_err(&pdev->dev, "xlnx,switch-x-sgmii only supported with SGMII or 1000BaseX\n"); 6c8f06bb2e5147 Robert Hancock 2021-02-12 2996 ret = -EINVAL; 59cd4f19267a0a Robert Hancock 2021-03-11 2997 goto cleanup_clk; 6c8f06bb2e5147 Robert Hancock 2021-02-12 2998 } 8a3b7a252dca9f Daniel Borkmann 2012-01-19 2999 f6420dd2cc68a9 Appana Durga Kedareswara Rao 2020-01-24 3000 lp->eth_hasnobuf = of_property_read_bool(pdev->dev.of_node, f6420dd2cc68a9 Appana Durga Kedareswara Rao 2020-01-24 3001 "xlnx,eth-hasnobuf"); bf05571deda79b Appana Durga Kedareswara Rao 2020-01-24 3002 lp->eth_hasptp = of_property_read_bool(pdev->dev.of_node, bf05571deda79b Appana Durga Kedareswara Rao 2020-01-24 3003 "xlnx,eth-hasptp"); f6420dd2cc68a9 Appana Durga Kedareswara Rao 2020-01-24 3004 9dce88e232cf19 Appana Durga Kedareswara Rao 2020-01-24 3005 if (lp->axienet_config->mactype == XAXIENET_1G && !lp->eth_hasnobuf) 9dce88e232cf19 Appana Durga Kedareswara Rao 2020-01-24 3006 lp->eth_irq = platform_get_irq(pdev, 0); bf05571deda79b Appana Durga Kedareswara Rao 2020-01-24 3007 --- 0-DAY CI Kernel Test Service https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
