int hostap_80211_get_hdrlen(u16 fc);
 struct net_device_stats *hostap_get_stats(struct net_device *dev);
 void hostap_setup_dev(struct net_device *dev, local_info_t *local,
-                     int main_dev);
+                     int type);
 void hostap_set_multicast_list_queue(struct work_struct *work);
 int hostap_set_hostapd(local_info_t *local, int val, int rtnl_locked);
 int hostap_set_hostapd_sta(local_info_t *local, int val, int rtnl_locked);
 
 
        INIT_LIST_HEAD(&local->bss_list);
 
-       hostap_setup_dev(dev, local, 1);
+       hostap_setup_dev(dev, local, HOSTAP_INTERFACE_MASTER);
 
        dev->hard_start_xmit = hostap_master_start_xmit;
        dev->type = ARPHRD_IEEE80211;
 
        dev->mem_start = mdev->mem_start;
        dev->mem_end = mdev->mem_end;
 
-       hostap_setup_dev(dev, local, 0);
+       hostap_setup_dev(dev, local, type);
        dev->destructor = free_netdev;
 
        sprintf(dev->name, "%s%s", prefix, name);
 EXPORT_SYMBOL(hostap_80211_ops);
 
 void hostap_setup_dev(struct net_device *dev, local_info_t *local,
-                     int main_dev)
+                     int type)
 {
        struct hostap_interface *iface;
 
        dev->do_ioctl = hostap_ioctl;
        dev->open = prism2_open;
        dev->stop = prism2_close;
-       dev->hard_start_xmit = hostap_data_start_xmit;
        dev->set_mac_address = prism2_set_mac_address;
        dev->set_multicast_list = hostap_set_multicast_list;
        dev->change_mtu = prism2_change_mtu;
        dev->tx_timeout = prism2_tx_timeout;
        dev->watchdog_timeo = TX_TIMEOUT;
 
+       if (type == HOSTAP_INTERFACE_AP) {
+               dev->hard_start_xmit = hostap_mgmt_start_xmit;
+               dev->type = ARPHRD_IEEE80211;
+               dev->header_ops = &hostap_80211_ops;
+       } else {
+               dev->hard_start_xmit = hostap_data_start_xmit;
+       }
+
        dev->mtu = local->mtu;
-       if (!main_dev) {
+       if (type != HOSTAP_INTERFACE_MASTER) {
                /* use main radio device queue */
                dev->tx_queue_len = 0;
        }
        if (local->apdev == NULL)
                return -ENOMEM;
 
-       local->apdev->hard_start_xmit = hostap_mgmt_start_xmit;
-       local->apdev->type = ARPHRD_IEEE80211;
-       local->apdev->header_ops = &hostap_80211_ops;
-
        return 0;
 }