| .. | .. |
|---|
| 2263 | 2263 | __func__, p_index, ring->c_index, |
|---|
| 2264 | 2264 | ring->read_ptr, dma_length_status); |
|---|
| 2265 | 2265 | |
|---|
| 2266 | + if (unlikely(len > RX_BUF_LENGTH)) { |
|---|
| 2267 | + netif_err(priv, rx_status, dev, "oversized packet\n"); |
|---|
| 2268 | + dev->stats.rx_length_errors++; |
|---|
| 2269 | + dev->stats.rx_errors++; |
|---|
| 2270 | + dev_kfree_skb_any(skb); |
|---|
| 2271 | + goto next; |
|---|
| 2272 | + } |
|---|
| 2273 | + |
|---|
| 2266 | 2274 | if (unlikely(!(dma_flag & DMA_EOP) || !(dma_flag & DMA_SOP))) { |
|---|
| 2267 | 2275 | netif_err(priv, rx_status, dev, |
|---|
| 2268 | 2276 | "dropping fragmented packet!\n"); |
|---|
| .. | .. |
|---|
| 3389 | 3397 | return ret; |
|---|
| 3390 | 3398 | } |
|---|
| 3391 | 3399 | |
|---|
| 3392 | | -static void bcmgenet_netif_stop(struct net_device *dev) |
|---|
| 3400 | +static void bcmgenet_netif_stop(struct net_device *dev, bool stop_phy) |
|---|
| 3393 | 3401 | { |
|---|
| 3394 | 3402 | struct bcmgenet_priv *priv = netdev_priv(dev); |
|---|
| 3395 | 3403 | |
|---|
| .. | .. |
|---|
| 3404 | 3412 | /* Disable MAC transmit. TX DMA disabled must be done before this */ |
|---|
| 3405 | 3413 | umac_enable_set(priv, CMD_TX_EN, false); |
|---|
| 3406 | 3414 | |
|---|
| 3407 | | - phy_stop(dev->phydev); |
|---|
| 3415 | + if (stop_phy) |
|---|
| 3416 | + phy_stop(dev->phydev); |
|---|
| 3408 | 3417 | bcmgenet_disable_rx_napi(priv); |
|---|
| 3409 | 3418 | bcmgenet_intr_disable(priv); |
|---|
| 3410 | 3419 | |
|---|
| .. | .. |
|---|
| 3430 | 3439 | |
|---|
| 3431 | 3440 | netif_dbg(priv, ifdown, dev, "bcmgenet_close\n"); |
|---|
| 3432 | 3441 | |
|---|
| 3433 | | - bcmgenet_netif_stop(dev); |
|---|
| 3442 | + bcmgenet_netif_stop(dev, false); |
|---|
| 3434 | 3443 | |
|---|
| 3435 | 3444 | /* Really kill the PHY state machine and disconnect from it */ |
|---|
| 3436 | 3445 | phy_disconnect(dev->phydev); |
|---|
| .. | .. |
|---|
| 4232 | 4241 | |
|---|
| 4233 | 4242 | netif_device_detach(dev); |
|---|
| 4234 | 4243 | |
|---|
| 4235 | | - bcmgenet_netif_stop(dev); |
|---|
| 4244 | + bcmgenet_netif_stop(dev, true); |
|---|
| 4236 | 4245 | |
|---|
| 4237 | 4246 | if (!device_may_wakeup(d)) |
|---|
| 4238 | 4247 | phy_suspend(dev->phydev); |
|---|