* [Intel-wired-lan] [bug report] ice: split ice_vsi_setup into smaller functions
@ 2023-02-08 13:07 Dan Carpenter
0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2023-02-08 13:07 UTC (permalink / raw)
To: michal.swiatkowski; +Cc: intel-wired-lan
Hello Michal Swiatkowski,
The patch 6624e780a577: "ice: split ice_vsi_setup into smaller
functions" from Dec 21, 2022, leads to the following Smatch static
checker warning:
drivers/net/ethernet/intel/ice/ice_lib.c:2150 ice_vsi_cfg_xdp_txqs() info: returning a literal zero is cleaner
drivers/net/ethernet/intel/ice/ice_lib.c:2722 ice_vsi_cfg_def() warn: missing error code here? 'ice_vsi_alloc_stat_arrays()' failed. 'ret' = '0'
drivers/net/ethernet/intel/ice/ice_lib.c:2729 ice_vsi_cfg_def() warn: missing error code here? 'ice_vsi_get_qs()' failed. 'ret' = '0'
drivers/net/ethernet/intel/ice/ice_lib.c:3521 ice_vsi_rebuild() warn: missing error code 'ret'
drivers/net/ethernet/intel/ice/ice_lib.c:3766 ice_vsi_cfg_tc() info: returning a literal zero is cleaner
drivers/net/ethernet/intel/ice/ice_lib.c
2706 static int
2707 ice_vsi_cfg_def(struct ice_vsi *vsi, struct ice_vf *vf, struct ice_channel *ch,
2708 int init_vsi)
2709 {
2710 struct device *dev = ice_pf_to_dev(vsi->back);
2711 struct ice_pf *pf = vsi->back;
2712 int ret;
2713
2714 vsi->vsw = pf->first_sw;
2715
2716 ret = ice_vsi_alloc_def(vsi, vf, ch);
2717 if (ret)
2718 return ret;
2719
2720 /* allocate memory for Tx/Rx ring stat pointers */
2721 if (ice_vsi_alloc_stat_arrays(vsi))
2722 goto unroll_vsi_alloc;
Missing error code.
2723
2724 ice_alloc_fd_res(vsi);
2725
2726 if (ice_vsi_get_qs(vsi)) {
2727 dev_err(dev, "Failed to allocate queues. vsi->idx = %d\n",
2728 vsi->idx);
--> 2729 goto unroll_vsi_alloc_stat;
Needs error code.
2730 }
2731
2732 /* set RSS capabilities */
2733 ice_vsi_set_rss_params(vsi);
2734
2735 /* set TC configuration */
2736 ice_vsi_set_tc_cfg(vsi);
2737
2738 /* create the VSI */
2739 ret = ice_vsi_init(vsi, init_vsi);
2740 if (ret)
2741 goto unroll_get_qs;
2742
2743 ice_vsi_init_vlan_ops(vsi);
2744
2745 switch (vsi->type) {
2746 case ICE_VSI_CTRL:
2747 case ICE_VSI_SWITCHDEV_CTRL:
2748 case ICE_VSI_PF:
2749 ret = ice_vsi_alloc_q_vectors(vsi);
2750 if (ret)
2751 goto unroll_vsi_init;
2752
2753 ret = ice_vsi_setup_vector_base(vsi);
2754 if (ret)
2755 goto unroll_alloc_q_vector;
2756
2757 ret = ice_vsi_set_q_vectors_reg_idx(vsi);
2758 if (ret)
2759 goto unroll_vector_base;
2760
2761 ret = ice_vsi_alloc_rings(vsi);
2762 if (ret)
2763 goto unroll_vector_base;
2764
2765 ret = ice_vsi_alloc_ring_stats(vsi);
2766 if (ret)
2767 goto unroll_vector_base;
2768
2769 ice_vsi_map_rings_to_vectors(vsi);
2770 if (ice_is_xdp_ena_vsi(vsi)) {
2771 ret = ice_vsi_determine_xdp_res(vsi);
2772 if (ret)
2773 goto unroll_vector_base;
2774 ret = ice_prepare_xdp_rings(vsi, vsi->xdp_prog);
2775 if (ret)
2776 goto unroll_vector_base;
2777 }
2778
2779 /* ICE_VSI_CTRL does not need RSS so skip RSS processing */
2780 if (vsi->type != ICE_VSI_CTRL)
2781 /* Do not exit if configuring RSS had an issue, at
2782 * least receive traffic on first queue. Hence no
2783 * need to capture return value
2784 */
2785 if (test_bit(ICE_FLAG_RSS_ENA, pf->flags)) {
2786 ice_vsi_cfg_rss_lut_key(vsi);
2787 ice_vsi_set_rss_flow_fld(vsi);
2788 }
2789 ice_init_arfs(vsi);
2790 break;
2791 case ICE_VSI_CHNL:
2792 if (test_bit(ICE_FLAG_RSS_ENA, pf->flags)) {
2793 ice_vsi_cfg_rss_lut_key(vsi);
2794 ice_vsi_set_rss_flow_fld(vsi);
2795 }
2796 break;
2797 case ICE_VSI_VF:
2798 /* VF driver will take care of creating netdev for this type and
2799 * map queues to vectors through Virtchnl, PF driver only
2800 * creates a VSI and corresponding structures for bookkeeping
2801 * purpose
2802 */
2803 ret = ice_vsi_alloc_q_vectors(vsi);
2804 if (ret)
2805 goto unroll_vsi_init;
2806
2807 ret = ice_vsi_alloc_rings(vsi);
2808 if (ret)
2809 goto unroll_alloc_q_vector;
2810
2811 ret = ice_vsi_set_q_vectors_reg_idx(vsi);
2812 if (ret)
2813 goto unroll_vector_base;
2814
2815 ret = ice_vsi_alloc_ring_stats(vsi);
2816 if (ret)
2817 goto unroll_vector_base;
2818 /* Do not exit if configuring RSS had an issue, at least
2819 * receive traffic on first queue. Hence no need to capture
2820 * return value
2821 */
2822 if (test_bit(ICE_FLAG_RSS_ENA, pf->flags)) {
2823 ice_vsi_cfg_rss_lut_key(vsi);
2824 ice_vsi_set_vf_rss_flow_fld(vsi);
2825 }
2826 break;
2827 case ICE_VSI_LB:
2828 ret = ice_vsi_alloc_rings(vsi);
2829 if (ret)
2830 goto unroll_vsi_init;
2831
2832 ret = ice_vsi_alloc_ring_stats(vsi);
2833 if (ret)
2834 goto unroll_vector_base;
2835
2836 break;
2837 default:
2838 /* clean up the resources and exit */
2839 goto unroll_vsi_init;
Error code here as well?
2840 }
2841
2842 return 0;
2843
2844 unroll_vector_base:
2845 /* reclaim SW interrupts back to the common pool */
2846 ice_free_res(pf->irq_tracker, vsi->base_vector, vsi->idx);
2847 pf->num_avail_sw_msix += vsi->num_q_vectors;
2848 unroll_alloc_q_vector:
2849 ice_vsi_free_q_vectors(vsi);
2850 unroll_vsi_init:
2851 ice_vsi_delete_from_hw(vsi);
2852 unroll_get_qs:
2853 ice_vsi_put_qs(vsi);
2854 unroll_vsi_alloc_stat:
2855 ice_vsi_free_stats(vsi);
2856 unroll_vsi_alloc:
2857 ice_vsi_free_arrays(vsi);
2858 return ret;
2859 }
regards,
dan carpenter
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-02-08 16:30 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-08 13:07 [Intel-wired-lan] [bug report] ice: split ice_vsi_setup into smaller functions Dan Carpenter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).