linux/drivers/net/ethernet/ti
Karicheri, Muralidharan 9ecfe875c4 net: ti: netcp: restore get/set_pad_info() functionality
The commit 8990777914 ("netcp: try to reduce type confusion in
descriptors") introduces a regression in Kernel 4.5-rc1 and it breaks
get/set_pad_info() functionality.

The TI NETCP driver uses pad0 and pad1 fields of knav_dma_desc to
store DMA/MEM buffer pointer and buffer size respectively. And in both
cases for Keystone 2 the pointer type size is 32 bit regardless of
LAPE enabled or not, because CONFIG_ARCH_DMA_ADDR_T_64BIT originally
is not expected to be defined.

Unfortunately, above commit changed buffer's pointers save/restore
code (get/set_pad_info()) and added intermediate conversation to u64
which works incorrectly on 32bit Keystone 2 and causes TI NETCP driver
crash in RX/TX path due to "Unable to handle kernel NULL pointer"
exception. This issue was reported and discussed in [1].

Hence, fix it by partially reverting above commit and restoring
get/set_pad_info() functionality as it was before.

[1] https://www.mail-archive.com/netdev@vger.kernel.org/msg95361.html
Cc: Wingman Kwok <w-kwok2@ti.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
CC: David Laight <David.Laight@ACULAB.COM>
CC: Arnd Bergmann <arnd@arndb.de>
Reported-by: Franklin S Cooper Jr <fcooper@ti.com>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-02-21 22:03:15 -05:00
..
cpmac.c net: ti: cpmac: Fix build error due to missed API change 2016-01-10 23:34:49 -05:00
cpsw_ale.c net: cpsw: remove two unused global functions 2015-05-25 18:19:09 -04:00
cpsw_ale.h net: cpsw: remove two unused global functions 2015-05-25 18:19:09 -04:00
cpsw-common.c net: cpsw: Fix ethernet regression for dm814x 2015-11-20 10:46:33 -05:00
cpsw-phy-sel.c drivers: net: cpsw-phy-sel: add dev_warn() for unsupported PHY mode 2016-02-17 10:50:15 -05:00
cpsw.c phy: Add an mdio_device structure 2016-01-07 14:31:26 -05:00
cpsw.h drivers: net: cpsw: davinci_emac: move reading mac id to common file 2015-09-21 17:21:46 -07:00
cpts.c ptp: cpts: use helpers for converting ns to timespec. 2015-03-31 17:19:19 -04:00
cpts.h
davinci_cpdma.c net: davinci_cpdma: use dma_addr_t for DMA address 2016-01-29 20:33:38 -08:00
davinci_cpdma.h
davinci_emac.c phy: Centralise print about attached phy 2016-01-07 14:31:25 -05:00
davinci_mdio.c phy: Add API for {un}registering an mdio device to a bus. 2016-01-07 14:31:26 -05:00
Kconfig drivers/net: remove all references to obsolete Ethernet-HOWTO 2015-06-23 06:50:35 -07:00
Makefile drivers: net: cpsw: make cpsw_ale.c a module to allow re-use on Keystone 2015-01-31 17:33:07 -08:00
netcp_core.c net: ti: netcp: restore get/set_pad_info() functionality 2016-02-21 22:03:15 -05:00
netcp_ethss.c phy: add phydev_name() wrapper 2016-01-07 14:31:25 -05:00
netcp_sgmii.c net: netcp: Fixes SGMII reset on network interface shutdown 2015-07-27 01:14:26 -07:00
netcp_xgbepcsr.c net: netcp: Enhance GBE driver to support 10G Ethernet 2015-01-19 15:07:39 -05:00
netcp.h netcp: add more __le32 annotations 2015-12-11 19:34:39 -05:00
tlan.c drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
tlan.h