staging: fsl-dpaa2/eth: Remove Rx frame size check

Most Ethernet drivers don't enforce the MTU value as upper limit
for ingress frames. We too support receiving frames larger than
MTU, so allow that.

Remove our ndo_change_mtu implementation, letting the default
stack implementation handle things. Also, set the max frame length
allowed by hardware only once at probe time, with the largest
possible value.

Signed-off-by: Ioana Radulescu <ruxandra.radulescu@nxp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Ioana Radulescu 2018-07-09 10:01:11 -05:00 коммит произвёл Greg Kroah-Hartman
Родитель 3ccc8d475f
Коммит 00fee00245
1 изменённых файлов: 6 добавлений и 20 удалений

Просмотреть файл

@ -1243,25 +1243,6 @@ static void dpaa2_eth_get_stats(struct net_device *net_dev,
}
}
static int dpaa2_eth_change_mtu(struct net_device *net_dev, int mtu)
{
struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
int err;
/* Set the maximum Rx frame length to match the transmit side;
* account for L2 headers when computing the MFL
*/
err = dpni_set_max_frame_length(priv->mc_io, 0, priv->mc_token,
(u16)DPAA2_ETH_L2_MAX_FRM(mtu));
if (err) {
netdev_err(net_dev, "dpni_set_max_frame_length() failed\n");
return err;
}
net_dev->mtu = mtu;
return 0;
}
/* Copy mac unicast addresses from @net_dev to @priv.
* Its sole purpose is to make dpaa2_eth_set_rx_mode() more readable.
*/
@ -1469,7 +1450,6 @@ static const struct net_device_ops dpaa2_eth_ops = {
.ndo_init = dpaa2_eth_init,
.ndo_set_mac_address = dpaa2_eth_set_addr,
.ndo_get_stats64 = dpaa2_eth_get_stats,
.ndo_change_mtu = dpaa2_eth_change_mtu,
.ndo_set_rx_mode = dpaa2_eth_set_rx_mode,
.ndo_set_features = dpaa2_eth_set_features,
.ndo_do_ioctl = dpaa2_eth_ioctl,
@ -2385,6 +2365,12 @@ static int netdev_init(struct net_device *net_dev)
/* Set MTU upper limit; lower limit is 68B (default value) */
net_dev->max_mtu = DPAA2_ETH_MAX_MTU;
err = dpni_set_max_frame_length(priv->mc_io, 0, priv->mc_token,
(u16)DPAA2_ETH_MFL);
if (err) {
dev_err(dev, "dpni_set_max_frame_length() failed\n");
return err;
}
/* Set actual number of queues in the net device */
num_queues = dpaa2_eth_queue_count(priv);