|
@@ -16,7 +16,6 @@
|
|
#include <linux/errno.h>
|
|
#include <linux/errno.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/etherdevice.h>
|
|
#include <linux/etherdevice.h>
|
|
-#include <linux/mii.h>
|
|
|
|
#include <linux/ip.h>
|
|
#include <linux/ip.h>
|
|
#include <linux/ipv6.h>
|
|
#include <linux/ipv6.h>
|
|
#include <linux/inetdevice.h>
|
|
#include <linux/inetdevice.h>
|
|
@@ -2457,15 +2456,8 @@ static int qeth_l3_do_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
|
{
|
|
{
|
|
struct qeth_card *card = dev->ml_priv;
|
|
struct qeth_card *card = dev->ml_priv;
|
|
struct qeth_arp_cache_entry arp_entry;
|
|
struct qeth_arp_cache_entry arp_entry;
|
|
- struct mii_ioctl_data *mii_data;
|
|
|
|
int rc = 0;
|
|
int rc = 0;
|
|
|
|
|
|
- if (!card)
|
|
|
|
- return -ENODEV;
|
|
|
|
-
|
|
|
|
- if (!qeth_card_hw_is_reachable(card))
|
|
|
|
- return -ENODEV;
|
|
|
|
-
|
|
|
|
switch (cmd) {
|
|
switch (cmd) {
|
|
case SIOC_QETH_ARP_SET_NO_ENTRIES:
|
|
case SIOC_QETH_ARP_SET_NO_ENTRIES:
|
|
if (!capable(CAP_NET_ADMIN)) {
|
|
if (!capable(CAP_NET_ADMIN)) {
|
|
@@ -2510,37 +2502,9 @@ static int qeth_l3_do_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
|
}
|
|
}
|
|
rc = qeth_l3_arp_flush_cache(card);
|
|
rc = qeth_l3_arp_flush_cache(card);
|
|
break;
|
|
break;
|
|
- case SIOC_QETH_ADP_SET_SNMP_CONTROL:
|
|
|
|
- rc = qeth_snmp_command(card, rq->ifr_ifru.ifru_data);
|
|
|
|
- break;
|
|
|
|
- case SIOC_QETH_GET_CARD_TYPE:
|
|
|
|
- if ((card->info.type == QETH_CARD_TYPE_OSD ||
|
|
|
|
- card->info.type == QETH_CARD_TYPE_OSX) &&
|
|
|
|
- !card->info.guestlan)
|
|
|
|
- return 1;
|
|
|
|
- return 0;
|
|
|
|
- break;
|
|
|
|
- case SIOCGMIIPHY:
|
|
|
|
- mii_data = if_mii(rq);
|
|
|
|
- mii_data->phy_id = 0;
|
|
|
|
- break;
|
|
|
|
- case SIOCGMIIREG:
|
|
|
|
- mii_data = if_mii(rq);
|
|
|
|
- if (mii_data->phy_id != 0)
|
|
|
|
- rc = -EINVAL;
|
|
|
|
- else
|
|
|
|
- mii_data->val_out = qeth_mdio_read(dev,
|
|
|
|
- mii_data->phy_id,
|
|
|
|
- mii_data->reg_num);
|
|
|
|
- break;
|
|
|
|
- case SIOC_QETH_QUERY_OAT:
|
|
|
|
- rc = qeth_query_oat_command(card, rq->ifr_ifru.ifru_data);
|
|
|
|
- break;
|
|
|
|
default:
|
|
default:
|
|
rc = -EOPNOTSUPP;
|
|
rc = -EOPNOTSUPP;
|
|
}
|
|
}
|
|
- if (rc)
|
|
|
|
- QETH_CARD_TEXT_(card, 2, "ioce%d", rc);
|
|
|
|
return rc;
|
|
return rc;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -3056,7 +3020,7 @@ static const struct net_device_ops qeth_l3_netdev_ops = {
|
|
.ndo_start_xmit = qeth_l3_hard_start_xmit,
|
|
.ndo_start_xmit = qeth_l3_hard_start_xmit,
|
|
.ndo_validate_addr = eth_validate_addr,
|
|
.ndo_validate_addr = eth_validate_addr,
|
|
.ndo_set_rx_mode = qeth_l3_set_multicast_list,
|
|
.ndo_set_rx_mode = qeth_l3_set_multicast_list,
|
|
- .ndo_do_ioctl = qeth_l3_do_ioctl,
|
|
|
|
|
|
+ .ndo_do_ioctl = qeth_do_ioctl,
|
|
.ndo_change_mtu = qeth_change_mtu,
|
|
.ndo_change_mtu = qeth_change_mtu,
|
|
.ndo_fix_features = qeth_fix_features,
|
|
.ndo_fix_features = qeth_fix_features,
|
|
.ndo_set_features = qeth_set_features,
|
|
.ndo_set_features = qeth_set_features,
|
|
@@ -3072,7 +3036,7 @@ static const struct net_device_ops qeth_l3_osa_netdev_ops = {
|
|
.ndo_start_xmit = qeth_l3_hard_start_xmit,
|
|
.ndo_start_xmit = qeth_l3_hard_start_xmit,
|
|
.ndo_validate_addr = eth_validate_addr,
|
|
.ndo_validate_addr = eth_validate_addr,
|
|
.ndo_set_rx_mode = qeth_l3_set_multicast_list,
|
|
.ndo_set_rx_mode = qeth_l3_set_multicast_list,
|
|
- .ndo_do_ioctl = qeth_l3_do_ioctl,
|
|
|
|
|
|
+ .ndo_do_ioctl = qeth_do_ioctl,
|
|
.ndo_change_mtu = qeth_change_mtu,
|
|
.ndo_change_mtu = qeth_change_mtu,
|
|
.ndo_fix_features = qeth_fix_features,
|
|
.ndo_fix_features = qeth_fix_features,
|
|
.ndo_set_features = qeth_set_features,
|
|
.ndo_set_features = qeth_set_features,
|
|
@@ -3439,6 +3403,7 @@ struct qeth_discipline qeth_l3_discipline = {
|
|
.freeze = qeth_l3_pm_suspend,
|
|
.freeze = qeth_l3_pm_suspend,
|
|
.thaw = qeth_l3_pm_resume,
|
|
.thaw = qeth_l3_pm_resume,
|
|
.restore = qeth_l3_pm_resume,
|
|
.restore = qeth_l3_pm_resume,
|
|
|
|
+ .do_ioctl = qeth_l3_do_ioctl,
|
|
.control_event_handler = qeth_l3_control_event,
|
|
.control_event_handler = qeth_l3_control_event,
|
|
};
|
|
};
|
|
EXPORT_SYMBOL_GPL(qeth_l3_discipline);
|
|
EXPORT_SYMBOL_GPL(qeth_l3_discipline);
|