__le32 offset_resp_ies;
 } __packed;
 
-struct ndis_80211_auth_encr_pair {
-       __le32 auth_mode;
-       __le32 encr_mode;
-} __packed;
-
 struct ndis_80211_capability {
        __le32 length;
        __le32 version;
        __le32 num_pmkids;
        __le32 num_auth_encr_pair;
-       struct ndis_80211_auth_encr_pair auth_encr_pair[0];
 } __packed;
 
 struct ndis_80211_bssid_info {
                __le32  num_items;
                __le32  items[8];
        } networks_supported;
-       struct ndis_80211_capability *caps;
-       u8 caps_buf[sizeof(*caps) + sizeof(caps->auth_encr_pair) * 16];
+       struct ndis_80211_capability caps;
        int len, retval, i, n;
        struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
 
        }
 
        /* get device 802.11 capabilities, number of PMKIDs */
-       caps = (struct ndis_80211_capability *)caps_buf;
-       len = sizeof(caps_buf);
+       len = sizeof(caps);
        retval = rndis_query_oid(usbdev,
                                 RNDIS_OID_802_11_CAPABILITY,
-                                caps, &len);
+                                &caps, &len);
        if (retval >= 0) {
                netdev_dbg(usbdev->net, "RNDIS_OID_802_11_CAPABILITY -> len %d, "
                                "ver %d, pmkids %d, auth-encr-pairs %d\n",
-                               le32_to_cpu(caps->length),
-                               le32_to_cpu(caps->version),
-                               le32_to_cpu(caps->num_pmkids),
-                               le32_to_cpu(caps->num_auth_encr_pair));
-               wiphy->max_num_pmkids = le32_to_cpu(caps->num_pmkids);
+                               le32_to_cpu(caps.length),
+                               le32_to_cpu(caps.version),
+                               le32_to_cpu(caps.num_pmkids),
+                               le32_to_cpu(caps.num_auth_encr_pair));
+               wiphy->max_num_pmkids = le32_to_cpu(caps.num_pmkids);
        } else
                wiphy->max_num_pmkids = 0;