break;
 
                case WLAN_EID_FH_PARAMS:
-                       if (element_len + 2 < sizeof(*fh_param_set))
+                       if (total_ie_len < sizeof(*fh_param_set))
                                return -EINVAL;
                        fh_param_set =
                                (struct ieee_types_fh_param_set *) current_ptr;
                        break;
 
                case WLAN_EID_DS_PARAMS:
-                       if (element_len + 2 < sizeof(*ds_param_set))
+                       if (total_ie_len < sizeof(*ds_param_set))
                                return -EINVAL;
                        ds_param_set =
                                (struct ieee_types_ds_param_set *) current_ptr;
                        break;
 
                case WLAN_EID_CF_PARAMS:
-                       if (element_len + 2 < sizeof(*cf_param_set))
+                       if (total_ie_len < sizeof(*cf_param_set))
                                return -EINVAL;
                        cf_param_set =
                                (struct ieee_types_cf_param_set *) current_ptr;
                        break;
 
                case WLAN_EID_IBSS_PARAMS:
-                       if (element_len + 2 < sizeof(*ibss_param_set))
+                       if (total_ie_len < sizeof(*ibss_param_set))
                                return -EINVAL;
                        ibss_param_set =
                                (struct ieee_types_ibss_param_set *)
                        break;
                }
 
-               current_ptr += element_len + 2;
-
-               /* Need to account for IE ID and IE Len */
-               bytes_left -= (element_len + 2);
+               current_ptr += total_ie_len;
+               bytes_left -= total_ie_len;
 
        }       /* while (bytes_left > 2) */
        return ret;