#define IEEE80211_MAX_SSID_LEN         32
 
 #define IEEE80211_MAX_MESH_ID_LEN      32
-#define IEEE80211_MESH_CONFIG_LEN      7
 
 #define IEEE80211_QOS_CTL_LEN          2
 #define IEEE80211_QOS_CTL_TID_MASK     0x000F
        u8 virtual_map[1];
 } __attribute__ ((packed));
 
+/**
+ * struct ieee80211_meshconf_ie
+ *
+ * This structure refers to "Mesh Configuration information element"
+ */
+struct ieee80211_meshconf_ie {
+       u8 meshconf_psel;
+       u8 meshconf_pmetric;
+       u8 meshconf_congest;
+       u8 meshconf_synch;
+       u8 meshconf_auth;
+       u8 meshconf_form;
+       u8 meshconf_cap;
+} __attribute__ ((packed));
+
 /**
  * struct ieee80211_rann_ie
  *
 
 #define IEEE80211_MESH_HOUSEKEEPING_INTERVAL (60 * HZ)
 #define IEEE80211_MESH_RANN_INTERVAL        (1 * HZ)
 
-#define MESHCONF_PP_OFFSET     0               /* Path Selection Protocol */
-#define MESHCONF_PM_OFFSET     1               /* Path Selection Metric   */
-#define MESHCONF_CC_OFFSET     2               /* Congestion Control Mode */
-#define MESHCONF_SP_OFFSET     3               /* Synchronization Protocol */
-#define MESHCONF_AUTH_OFFSET   4               /* Authentication Protocol */
-#define MESHCONF_CAPAB_OFFSET  6
 #define MESHCONF_CAPAB_ACCEPT_PLINKS 0x01
 #define MESHCONF_CAPAB_FORWARDING    0x08
 
         */
        if (ifmsh->mesh_id_len == ie->mesh_id_len &&
                memcmp(ifmsh->mesh_id, ie->mesh_id, ie->mesh_id_len) == 0 &&
-               (ifmsh->mesh_pp_id == *(ie->mesh_config + MESHCONF_PP_OFFSET))&&
-               (ifmsh->mesh_pm_id == *(ie->mesh_config + MESHCONF_PM_OFFSET))&&
-               (ifmsh->mesh_cc_id == *(ie->mesh_config + MESHCONF_CC_OFFSET))&&
-               (ifmsh->mesh_sp_id == *(ie->mesh_config + MESHCONF_SP_OFFSET))&&
-               (ifmsh->mesh_auth_id == *(ie->mesh_config +
-                   MESHCONF_AUTH_OFFSET)))
+               (ifmsh->mesh_pp_id == ie->mesh_config->meshconf_psel) &&
+               (ifmsh->mesh_pm_id == ie->mesh_config->meshconf_pmetric) &&
+               (ifmsh->mesh_cc_id == ie->mesh_config->meshconf_congest) &&
+               (ifmsh->mesh_sp_id == ie->mesh_config->meshconf_synch) &&
+               (ifmsh->mesh_auth_id == ie->mesh_config->meshconf_auth))
                return true;
 
        return false;
  */
 bool mesh_peer_accepts_plinks(struct ieee802_11_elems *ie)
 {
-       return (*(ie->mesh_config + MESHCONF_CAPAB_OFFSET) &
+       return (ie->mesh_config->meshconf_cap &
            MESHCONF_CAPAB_ACCEPT_PLINKS) != 0;
 }
 
        if (sdata->u.mesh.mesh_id_len)
                memcpy(pos, sdata->u.mesh.mesh_id, sdata->u.mesh.mesh_id_len);
 
-       pos = skb_put(skb, 2 + IEEE80211_MESH_CONFIG_LEN);
+       pos = skb_put(skb, 2 + sizeof(struct ieee80211_meshconf_ie));
        *pos++ = WLAN_EID_MESH_CONFIG;
-       *pos++ = IEEE80211_MESH_CONFIG_LEN;
+       *pos++ = sizeof(struct ieee80211_meshconf_ie);
 
        /* Active path selection protocol ID */
        *pos++ = sdata->u.mesh.mesh_pp_id;
 
                     a->len_information_elements);
        if (!ie)
                return false;
-       if (ie[1] != IEEE80211_MESH_CONFIG_LEN)
+       if (ie[1] != sizeof(struct ieee80211_meshconf_ie))
                return false;
 
        /*
         * comparing since that may differ between stations taking
         * part in the same mesh.
         */
-       return memcmp(ie + 2, meshcfg, IEEE80211_MESH_CONFIG_LEN - 2) == 0;
+       return memcmp(ie + 2, meshcfg,
+           sizeof(struct ieee80211_meshconf_ie) - 2) == 0;
 }
 
 static int cmp_bss(struct cfg80211_bss *a,
                                  res->pub.information_elements,
                                  res->pub.len_information_elements);
                if (!meshid || !meshcfg ||
-                   meshcfg[1] != IEEE80211_MESH_CONFIG_LEN) {
+                   meshcfg[1] != sizeof(struct ieee80211_meshconf_ie)) {
                        /* bogus mesh */
                        kref_put(&res->ref, bss_release);
                        return NULL;
                        break;
                case WLAN_EID_MESH_CONFIG:
                        ismesh = true;
-                       if (ie[1] != IEEE80211_MESH_CONFIG_LEN)
+                       if (ie[1] != sizeof(struct ieee80211_meshconf_ie))
                                break;
                        buf = kmalloc(50, GFP_ATOMIC);
                        if (!buf)