intel-wired-lan.lists.osuosl.org archive mirror
 help / color / mirror / Atom feed
* [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).