| From ab1371fec54bdd16b5f6c56c76d817404c696d4b Mon Sep 17 00:00:00 2001 |
| From: Camelia Groza <camelia.groza@nxp.com> |
| Date: Wed, 18 Oct 2017 16:38:30 +0300 |
| Subject: [PATCH] sdk_dpaa: accept frames on RX even if larger than MTU |
| |
| Documentation/networking/netdevices.txt mentions that interfaces must |
| be able to receive frames at least the size of the configured MTU. The |
| behavior for received frames larger than the MTU is unspecified. We have |
| been dropping these frames in software. Remove this behavior and accept |
| them. |
| |
| Signed-off-by: Camelia Groza <camelia.groza@nxp.com> |
| --- |
| drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h | 11 ----------- |
| drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_sg.c | 11 ----------- |
| 2 files changed, 22 deletions(-) |
| |
| --- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h |
| +++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h |
| @@ -514,17 +514,6 @@ dpa_fd_offset(const struct qm_fd *fd) |
| return fd->offset; |
| } |
| |
| -/* Verifies if the skb length is below the interface MTU */ |
| -static inline int dpa_check_rx_mtu(struct sk_buff *skb, int mtu) |
| -{ |
| - if (unlikely(skb->len > mtu)) |
| - if ((skb->protocol != htons(ETH_P_8021Q)) |
| - || (skb->len > mtu + 4)) |
| - return -1; |
| - |
| - return 0; |
| -} |
| - |
| static inline uint16_t dpa_get_headroom(struct dpa_buffer_layout_s *bl) |
| { |
| uint16_t headroom; |
| --- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_sg.c |
| +++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_sg.c |
| @@ -616,13 +616,6 @@ void __hot _dpa_rx(struct net_device *ne |
| (*count_ptr)--; |
| skb->protocol = eth_type_trans(skb, net_dev); |
| |
| - /* IP Reassembled frames are allowed to be larger than MTU */ |
| - if (unlikely(dpa_check_rx_mtu(skb, net_dev->mtu) && |
| - !(fd_status & FM_FD_IPR))) { |
| - percpu_stats->rx_dropped++; |
| - goto drop_bad_frame; |
| - } |
| - |
| skb_len = skb->len; |
| |
| #ifdef CONFIG_FSL_DPAA_DBG_LOOP |
| @@ -655,10 +648,6 @@ void __hot _dpa_rx(struct net_device *ne |
| packet_dropped: |
| return; |
| |
| -drop_bad_frame: |
| - dev_kfree_skb(skb); |
| - return; |
| - |
| _release_frame: |
| dpa_fd_release(net_dev, fd); |
| } |