diff options
author | Karicheri, Muralidharan <m-karicheri2@ti.com> | 2017-01-06 15:37:43 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-01-07 21:03:50 -0500 |
commit | 4cd85a61d2185a79389cd5e52c02223db9062559 (patch) | |
tree | 62638654d287b2e65cc7a3fa5028694e9be7ba04 /drivers/net/ethernet/ti/netcp_core.c | |
parent | net: netcp: ethss: get phy-handle only if link interface is MAC-to-PHY (diff) | |
download | linux-dev-4cd85a61d2185a79389cd5e52c02223db9062559.tar.xz linux-dev-4cd85a61d2185a79389cd5e52c02223db9062559.zip |
net: netcp: use hw capability to remove FCS word from rx packets
Some of the newer Ethernet switch hw (such as that on k2e/l/g) can
strip the Etherenet FCS from packet at the port 0 egress of the switch.
So use this capability instead of doing it in software.
Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/ti/netcp_core.c')
-rw-r--r-- | drivers/net/ethernet/ti/netcp_core.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/ethernet/ti/netcp_core.c b/drivers/net/ethernet/ti/netcp_core.c index b077ed4abddc..68a75cc0731c 100644 --- a/drivers/net/ethernet/ti/netcp_core.c +++ b/drivers/net/ethernet/ti/netcp_core.c @@ -739,8 +739,12 @@ static int netcp_process_one_rx_packet(struct netcp_intf *netcp) dev_dbg(netcp->ndev_dev, "mismatch in packet size(%d) & sum of fragments(%d)\n", pkt_sz, accum_sz); - /* Remove ethernet FCS from the packet */ - __pskb_trim(skb, skb->len - ETH_FCS_LEN); + /* Newer version of the Ethernet switch can trim the Ethernet FCS + * from the packet and is indicated in hw_cap. So trim it only for + * older h/w + */ + if (!(netcp->hw_cap & ETH_SW_CAN_REMOVE_ETH_FCS)) + __pskb_trim(skb, skb->len - ETH_FCS_LEN); /* Call each of the RX hooks */ p_info.skb = skb; |