spinlock_t mib_lock;
 
-       struct ieee802154_mac_params mac_params;
-
        /* protects sec from concurrent access by netlink. access by
         * encrypt/decrypt/header_create safe without additional protection.
         */
 
        }
 
        if (local->hw.flags & IEEE802154_HW_LBT) {
-               rc = drv_set_lbt_mode(local, sdata->mac_params.lbt);
+               rc = drv_set_lbt_mode(local, wpan_dev->lbt);
                if (rc < 0)
                        goto out;
        }
 
        if (local->hw.flags & IEEE802154_HW_CSMA_PARAMS) {
-               rc = drv_set_csma_params(local, sdata->mac_params.min_be,
-                                        sdata->mac_params.max_be,
-                                        sdata->mac_params.csma_retries);
+               rc = drv_set_csma_params(local, wpan_dev->min_be,
+                                        wpan_dev->max_be,
+                                        wpan_dev->csma_retries);
                if (rc < 0)
                        goto out;
        }
 
        if (local->hw.flags & IEEE802154_HW_FRAME_RETRIES) {
-               rc = drv_set_max_frame_retries(local,
-                                              sdata->mac_params.frame_retries);
+               rc = drv_set_max_frame_retries(local, wpan_dev->frame_retries);
                if (rc < 0)
                        goto out;
        }
        get_random_bytes(&wpan_dev->dsn, 1);
 
        /* defaults per 802.15.4-2011 */
-       sdata->mac_params.min_be = 3;
-       sdata->mac_params.max_be = 5;
-       sdata->mac_params.csma_retries = 4;
+       wpan_dev->min_be = 3;
+       wpan_dev->max_be = 5;
+       wpan_dev->csma_retries = 4;
        /* for compatibility, actual default is 3 */
-       sdata->mac_params.frame_retries = -1;
+       wpan_dev->frame_retries = -1;
 
        ieee802154_be64_to_le64(&wpan_dev->extended_addr, sdata->dev->dev_addr);
        wpan_dev->pan_id = cpu_to_le16(IEEE802154_PANID_BROADCAST);
 
 {
        struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
        struct ieee802154_local *local = sdata->local;
+       struct wpan_dev *wpan_dev = &sdata->wpan_dev;
        int ret;
 
        mutex_lock(&sdata->local->iflist_mtx);
-       sdata->mac_params = *params;
+       /* PHY */
+       wpan_dev->wpan_phy->transmit_power = params->transmit_power;
+       wpan_dev->wpan_phy->cca_mode = params->cca_mode;
+       wpan_dev->wpan_phy->cca_ed_level = params->cca_ed_level;
+
+       /* MAC */
+       wpan_dev->min_be = params->min_be;
+       wpan_dev->max_be = params->max_be;
+       wpan_dev->csma_retries = params->csma_retries;
+       wpan_dev->frame_retries = params->frame_retries;
+       wpan_dev->lbt = params->lbt;
        mutex_unlock(&sdata->local->iflist_mtx);
 
        if (local->hw.flags & IEEE802154_HW_TXPOWER) {
                                     struct ieee802154_mac_params *params)
 {
        struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
+       struct wpan_dev *wpan_dev = &sdata->wpan_dev;
 
        mutex_lock(&sdata->local->iflist_mtx);
-       *params = sdata->mac_params;
+       /* PHY */
+       params->transmit_power = wpan_dev->wpan_phy->transmit_power;
+       params->cca_mode = wpan_dev->wpan_phy->cca_mode;
+       params->cca_ed_level = wpan_dev->wpan_phy->cca_ed_level;
+
+       /* MAC */
+       params->min_be = wpan_dev->min_be;
+       params->max_be = wpan_dev->max_be;
+       params->csma_retries = wpan_dev->csma_retries;
+       params->frame_retries = wpan_dev->frame_retries;
+       params->lbt = wpan_dev->lbt;
        mutex_unlock(&sdata->local->iflist_mtx);
 }