Commit 3d58cefd authored by Frank Blaschka's avatar Frank Blaschka Committed by David S. Miller

qeth: fix usage of netdev_ops

Have separate netdev_ops for OSA and HiperSocket/TR.
Signed-off-by: default avatarFrank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c224969e
...@@ -916,7 +916,7 @@ static struct ethtool_ops qeth_l2_osn_ops = { ...@@ -916,7 +916,7 @@ static struct ethtool_ops qeth_l2_osn_ops = {
.get_drvinfo = qeth_core_get_drvinfo, .get_drvinfo = qeth_core_get_drvinfo,
}; };
static struct net_device_ops qeth_l2_netdev_ops = { static const struct net_device_ops qeth_l2_netdev_ops = {
.ndo_open = qeth_l2_open, .ndo_open = qeth_l2_open,
.ndo_stop = qeth_l2_stop, .ndo_stop = qeth_l2_stop,
.ndo_get_stats = qeth_get_stats, .ndo_get_stats = qeth_get_stats,
......
...@@ -2894,7 +2894,7 @@ qeth_l3_neigh_setup(struct net_device *dev, struct neigh_parms *np) ...@@ -2894,7 +2894,7 @@ qeth_l3_neigh_setup(struct net_device *dev, struct neigh_parms *np)
return 0; return 0;
} }
static struct net_device_ops qeth_l3_netdev_ops = { static const struct net_device_ops qeth_l3_netdev_ops = {
.ndo_open = qeth_l3_open, .ndo_open = qeth_l3_open,
.ndo_stop = qeth_l3_stop, .ndo_stop = qeth_l3_stop,
.ndo_get_stats = qeth_get_stats, .ndo_get_stats = qeth_get_stats,
...@@ -2909,6 +2909,22 @@ static struct net_device_ops qeth_l3_netdev_ops = { ...@@ -2909,6 +2909,22 @@ static struct net_device_ops qeth_l3_netdev_ops = {
.ndo_tx_timeout = qeth_tx_timeout, .ndo_tx_timeout = qeth_tx_timeout,
}; };
static const struct net_device_ops qeth_l3_osa_netdev_ops = {
.ndo_open = qeth_l3_open,
.ndo_stop = qeth_l3_stop,
.ndo_get_stats = qeth_get_stats,
.ndo_start_xmit = qeth_l3_hard_start_xmit,
.ndo_validate_addr = eth_validate_addr,
.ndo_set_multicast_list = qeth_l3_set_multicast_list,
.ndo_do_ioctl = qeth_l3_do_ioctl,
.ndo_change_mtu = qeth_change_mtu,
.ndo_vlan_rx_register = qeth_l3_vlan_rx_register,
.ndo_vlan_rx_add_vid = qeth_l3_vlan_rx_add_vid,
.ndo_vlan_rx_kill_vid = qeth_l3_vlan_rx_kill_vid,
.ndo_tx_timeout = qeth_tx_timeout,
.ndo_neigh_setup = qeth_l3_neigh_setup,
};
static int qeth_l3_setup_netdev(struct qeth_card *card) static int qeth_l3_setup_netdev(struct qeth_card *card)
{ {
if (card->info.type == QETH_CARD_TYPE_OSAE) { if (card->info.type == QETH_CARD_TYPE_OSAE) {
...@@ -2919,12 +2935,12 @@ static int qeth_l3_setup_netdev(struct qeth_card *card) ...@@ -2919,12 +2935,12 @@ static int qeth_l3_setup_netdev(struct qeth_card *card)
#endif #endif
if (!card->dev) if (!card->dev)
return -ENODEV; return -ENODEV;
card->dev->netdev_ops = &qeth_l3_netdev_ops;
} else { } else {
card->dev = alloc_etherdev(0); card->dev = alloc_etherdev(0);
if (!card->dev) if (!card->dev)
return -ENODEV; return -ENODEV;
qeth_l3_netdev_ops.ndo_neigh_setup = card->dev->netdev_ops = &qeth_l3_osa_netdev_ops;
qeth_l3_neigh_setup;
/*IPv6 address autoconfiguration stuff*/ /*IPv6 address autoconfiguration stuff*/
qeth_l3_get_unique_id(card); qeth_l3_get_unique_id(card);
...@@ -2937,6 +2953,7 @@ static int qeth_l3_setup_netdev(struct qeth_card *card) ...@@ -2937,6 +2953,7 @@ static int qeth_l3_setup_netdev(struct qeth_card *card)
if (!card->dev) if (!card->dev)
return -ENODEV; return -ENODEV;
card->dev->flags |= IFF_NOARP; card->dev->flags |= IFF_NOARP;
card->dev->netdev_ops = &qeth_l3_netdev_ops;
qeth_l3_iqd_read_initial_mac(card); qeth_l3_iqd_read_initial_mac(card);
} else } else
return -ENODEV; return -ENODEV;
...@@ -2944,7 +2961,6 @@ static int qeth_l3_setup_netdev(struct qeth_card *card) ...@@ -2944,7 +2961,6 @@ static int qeth_l3_setup_netdev(struct qeth_card *card)
card->dev->ml_priv = card; card->dev->ml_priv = card;
card->dev->watchdog_timeo = QETH_TX_TIMEOUT; card->dev->watchdog_timeo = QETH_TX_TIMEOUT;
card->dev->mtu = card->info.initial_mtu; card->dev->mtu = card->info.initial_mtu;
card->dev->netdev_ops = &qeth_l3_netdev_ops;
SET_ETHTOOL_OPS(card->dev, &qeth_l3_ethtool_ops); SET_ETHTOOL_OPS(card->dev, &qeth_l3_ethtool_ops);
card->dev->features |= NETIF_F_HW_VLAN_TX | card->dev->features |= NETIF_F_HW_VLAN_TX |
NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_RX |
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment