提交 5ae4efbc 编写于 作者: S Stephen Hemminger 提交者: David S. Miller

hostap: convert to net_device_ops

Signed-off-by: NStephen Hemminger <shemminger@vyatta.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 4cfa8e45
...@@ -3222,7 +3222,6 @@ while (0) ...@@ -3222,7 +3222,6 @@ while (0)
hostap_setup_dev(dev, local, HOSTAP_INTERFACE_MASTER); hostap_setup_dev(dev, local, HOSTAP_INTERFACE_MASTER);
dev->hard_start_xmit = hostap_master_start_xmit;
dev->type = ARPHRD_IEEE80211; dev->type = ARPHRD_IEEE80211;
dev->header_ops = &hostap_80211_ops; dev->header_ops = &hostap_80211_ops;
......
...@@ -815,6 +815,46 @@ const struct header_ops hostap_80211_ops = { ...@@ -815,6 +815,46 @@ const struct header_ops hostap_80211_ops = {
}; };
EXPORT_SYMBOL(hostap_80211_ops); EXPORT_SYMBOL(hostap_80211_ops);
static const struct net_device_ops hostap_netdev_ops = {
.ndo_start_xmit = hostap_data_start_xmit,
.ndo_open = prism2_open,
.ndo_stop = prism2_close,
.ndo_do_ioctl = hostap_ioctl,
.ndo_set_mac_address = prism2_set_mac_address,
.ndo_set_multicast_list = hostap_set_multicast_list,
.ndo_change_mtu = prism2_change_mtu,
.ndo_tx_timeout = prism2_tx_timeout,
.ndo_validate_addr = eth_validate_addr,
};
static const struct net_device_ops hostap_mgmt_netdev_ops = {
.ndo_start_xmit = hostap_mgmt_start_xmit,
.ndo_open = prism2_open,
.ndo_stop = prism2_close,
.ndo_do_ioctl = hostap_ioctl,
.ndo_set_mac_address = prism2_set_mac_address,
.ndo_set_multicast_list = hostap_set_multicast_list,
.ndo_change_mtu = prism2_change_mtu,
.ndo_tx_timeout = prism2_tx_timeout,
.ndo_validate_addr = eth_validate_addr,
};
static const struct net_device_ops hostap_master_ops = {
.ndo_start_xmit = hostap_master_start_xmit,
.ndo_open = prism2_open,
.ndo_stop = prism2_close,
.ndo_do_ioctl = hostap_ioctl,
.ndo_set_mac_address = prism2_set_mac_address,
.ndo_set_multicast_list = hostap_set_multicast_list,
.ndo_change_mtu = prism2_change_mtu,
.ndo_tx_timeout = prism2_tx_timeout,
.ndo_validate_addr = eth_validate_addr,
};
void hostap_setup_dev(struct net_device *dev, local_info_t *local, void hostap_setup_dev(struct net_device *dev, local_info_t *local,
int type) int type)
{ {
...@@ -830,30 +870,25 @@ void hostap_setup_dev(struct net_device *dev, local_info_t *local, ...@@ -830,30 +870,25 @@ void hostap_setup_dev(struct net_device *dev, local_info_t *local,
iface->wireless_data.spy_data = &iface->spy_data; iface->wireless_data.spy_data = &iface->spy_data;
dev->wireless_data = &iface->wireless_data; dev->wireless_data = &iface->wireless_data;
} }
dev->wireless_handlers = dev->wireless_handlers = &hostap_iw_handler_def;
(struct iw_handler_def *) &hostap_iw_handler_def;
dev->do_ioctl = hostap_ioctl;
dev->open = prism2_open;
dev->stop = prism2_close;
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; dev->watchdog_timeo = TX_TIMEOUT;
if (type == HOSTAP_INTERFACE_AP) { switch(type) {
dev->hard_start_xmit = hostap_mgmt_start_xmit; case HOSTAP_INTERFACE_AP:
dev->netdev_ops = &hostap_mgmt_netdev_ops;
dev->type = ARPHRD_IEEE80211; dev->type = ARPHRD_IEEE80211;
dev->header_ops = &hostap_80211_ops; dev->header_ops = &hostap_80211_ops;
} else { break;
dev->hard_start_xmit = hostap_data_start_xmit; case HOSTAP_INTERFACE_MASTER:
dev->tx_queue_len = 0; /* use main radio device queue */
dev->netdev_ops = &hostap_master_ops;
break;
default:
dev->netdev_ops = &hostap_netdev_ops;
} }
dev->mtu = local->mtu; dev->mtu = local->mtu;
if (type != HOSTAP_INTERFACE_MASTER) {
/* use main radio device queue */
dev->tx_queue_len = 0;
}
SET_ETHTOOL_OPS(dev, &prism2_ethtool_ops); SET_ETHTOOL_OPS(dev, &prism2_ethtool_ops);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册