void i40e_fill_rss_lut(struct i40e_pf *pf, u8 *lut,
                       u16 rss_table_size, u16 rss_size);
 struct i40e_vsi *i40e_find_vsi_from_id(struct i40e_pf *pf, u16 id);
+/**
+ * i40e_find_vsi_by_type - Find and return Flow Director VSI
+ * @pf: PF to search for VSI
+ * @type: Value indicating type of VSI we are looking for
+ **/
+static inline struct i40e_vsi *
+i40e_find_vsi_by_type(struct i40e_pf *pf, u16 type)
+{
+       int i;
+
+       for (i = 0; i < pf->num_alloc_vsi; i++) {
+               struct i40e_vsi *vsi = pf->vsi[i];
+
+               if (vsi && vsi->type == type)
+                       return vsi;
+       }
+
+       return NULL;
+}
 void i40e_update_stats(struct i40e_vsi *vsi);
 void i40e_update_eth_stats(struct i40e_vsi *vsi);
 struct rtnl_link_stats64 *i40e_get_vsi_stats_struct(struct i40e_vsi *vsi);
 
 
 static inline bool i40e_active_vmdqs(struct i40e_pf *pf)
 {
-       struct i40e_vsi **vsi = pf->vsi;
-       int i;
-
-       for (i = 0; i < pf->num_alloc_vsi; i++) {
-               if (!vsi[i])
-                       continue;
-               if (vsi[i]->type == I40E_VSI_VMDQ2)
-                       return true;
-       }
-
-       return false;
+       return !!i40e_find_vsi_by_type(pf, I40E_VSI_VMDQ2);
 }
 
 static void i40e_diag_test(struct net_device *netdev,
 
 static void i40e_fdir_sb_setup(struct i40e_pf *pf)
 {
        struct i40e_vsi *vsi;
-       int i;
 
        /* quick workaround for an NVM issue that leaves a critical register
         * uninitialized
                        0xeacb7d61, 0xaa4f05b6, 0x9c5c89ed, 0xfc425ddb,
                        0xa4654832, 0xfc7461d4, 0x8f827619, 0xf5c63c21,
                        0x95b3a76d};
+               int i;
 
                for (i = 0; i <= I40E_GLQF_HKEY_MAX_INDEX; i++)
                        wr32(&pf->hw, I40E_GLQF_HKEY(i), hkey[i]);
                return;
 
        /* find existing VSI and see if it needs configuring */
-       vsi = NULL;
-       for (i = 0; i < pf->num_alloc_vsi; i++) {
-               if (pf->vsi[i] && pf->vsi[i]->type == I40E_VSI_FDIR) {
-                       vsi = pf->vsi[i];
-                       break;
-               }
-       }
+       vsi = i40e_find_vsi_by_type(pf, I40E_VSI_FDIR);
 
        /* create a new VSI if none exists */
        if (!vsi) {
  **/
 static void i40e_fdir_teardown(struct i40e_pf *pf)
 {
-       int i;
+       struct i40e_vsi *vsi;
 
        i40e_fdir_filter_exit(pf);
-       for (i = 0; i < pf->num_alloc_vsi; i++) {
-               if (pf->vsi[i] && pf->vsi[i]->type == I40E_VSI_FDIR) {
-                       i40e_vsi_release(pf->vsi[i]);
-                       break;
-               }
-       }
+       vsi = i40e_find_vsi_by_type(pf, I40E_VSI_FDIR);
+       if (vsi)
+               i40e_vsi_release(vsi);
 }
 
 /**
 
        u16 i;
 
        /* find existing FDIR VSI */
-       vsi = NULL;
-       for (i = 0; i < pf->num_alloc_vsi; i++)
-               if (pf->vsi[i] && pf->vsi[i]->type == I40E_VSI_FDIR)
-                       vsi = pf->vsi[i];
+       vsi = i40e_find_vsi_by_type(pf, I40E_VSI_FDIR);
        if (!vsi)
                return -ENOENT;