diff options
author | Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> | 2018-06-02 21:38:56 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-06-04 21:23:25 +0200 |
commit | bb2fa4e847d779c0c3eba78c1abbe142134dcc3d (patch) | |
tree | 18e5f366a9619bff75e5b129c78e3900b840141a /drivers/net/ethernet/renesas/sh_eth.c | |
parent | sh_eth: make sh_eth_soft_swap() work on ARM (diff) | |
download | linux-bb2fa4e847d779c0c3eba78c1abbe142134dcc3d.tar.xz linux-bb2fa4e847d779c0c3eba78c1abbe142134dcc3d.zip |
sh_eth: uninline sh_eth_soft_swap()
sh_eth_tsu_soft_swap() is called twice by the driver, remove *inline* and
move that function from the header to the driver itself to let gcc decide
whether to expand it inline or not...
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/renesas/sh_eth.c')
-rw-r--r-- | drivers/net/ethernet/renesas/sh_eth.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c index d9cadfb1bc4a..82b03f13243e 100644 --- a/drivers/net/ethernet/renesas/sh_eth.c +++ b/drivers/net/ethernet/renesas/sh_eth.c @@ -460,6 +460,17 @@ static u32 sh_eth_tsu_read(struct sh_eth_private *mdp, int enum_index) return ioread32(mdp->tsu_addr + offset); } +static void sh_eth_soft_swap(char *src, int len) +{ +#ifdef __LITTLE_ENDIAN + u32 *p = (u32 *)src; + u32 *maxp = p + ((len + sizeof(u32) - 1) / sizeof(u32)); + + for (; p < maxp; p++) + *p = swab32(*p); +#endif +} + static void sh_eth_select_mii(struct net_device *ndev) { struct sh_eth_private *mdp = netdev_priv(ndev); |