struct regulatory_request *request)
 {
        struct lbs_private *priv = wiphy_priv(wiphy);
-       int ret;
+       int ret = 0;
 
        lbs_deb_enter_args(LBS_DEB_CFG80211, "cfg80211 regulatory domain "
                        "callback for domain %c%c\n", request->alpha2[0],
                        request->alpha2[1]);
 
-       ret = lbs_set_11d_domain_info(priv, request, wiphy->bands);
+       memcpy(priv->country_code, request->alpha2, sizeof(request->alpha2));
+       if (lbs_iface_active(priv))
+               ret = lbs_set_11d_domain_info(priv);
 
        lbs_deb_leave(LBS_DEB_CFG80211);
        return ret;
 
  *  to the firmware
  *
  *  @priv:     pointer to &struct lbs_private
- *  @request:  cfg80211 regulatory request structure
- *  @bands:    the device's supported bands and channels
  *
  *  returns:   0 on success, error code on failure
 */
-int lbs_set_11d_domain_info(struct lbs_private *priv,
-                           struct regulatory_request *request,
-                           struct ieee80211_supported_band **bands)
+int lbs_set_11d_domain_info(struct lbs_private *priv)
 {
+       struct wiphy *wiphy = priv->wdev->wiphy;
+       struct ieee80211_supported_band **bands = wiphy->bands;
        struct cmd_ds_802_11d_domain_info cmd;
        struct mrvl_ie_domain_param_set *domain = &cmd.domain;
        struct ieee80211_country_ie_triplet *t;
        u8 first_channel = 0, next_chan = 0, max_pwr = 0;
        u8 i, flag = 0;
        size_t triplet_size;
-       int ret;
+       int ret = 0;
 
        lbs_deb_enter(LBS_DEB_11D);
+       if (!priv->country_code[0])
+               goto out;
 
        memset(&cmd, 0, sizeof(cmd));
        cmd.action = cpu_to_le16(CMD_ACT_SET);
 
        lbs_deb_11d("Setting country code '%c%c'\n",
-                   request->alpha2[0], request->alpha2[1]);
+                   priv->country_code[0], priv->country_code[1]);
 
        domain->header.type = cpu_to_le16(TLV_TYPE_DOMAIN);
 
        /* Set country code */
-       domain->country_code[0] = request->alpha2[0];
-       domain->country_code[1] = request->alpha2[1];
+       domain->country_code[0] = priv->country_code[0];
+       domain->country_code[1] = priv->country_code[1];
        domain->country_code[2] = ' ';
 
        /* Now set up the channel triplets; firmware is somewhat picky here
 
        ret = lbs_cmd_with_response(priv, CMD_802_11D_DOMAIN_INFO, &cmd);
 
+out:
        lbs_deb_leave_args(LBS_DEB_11D, "ret %d", ret);
        return ret;
 }
 
 
 int lbs_get_rssi(struct lbs_private *priv, s8 *snr, s8 *nf);
 
-int lbs_set_11d_domain_info(struct lbs_private *priv,
-                           struct regulatory_request *request,
-                           struct ieee80211_supported_band **bands);
+int lbs_set_11d_domain_info(struct lbs_private *priv);
 
 int lbs_get_reg(struct lbs_private *priv, u16 reg, u16 offset, u32 *value);