]> Pileus Git - ~andy/linux/commitdiff
sh_eth: get R8A7740 Rx descriptor word 0 shift out of #ifdef
authorSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Thu, 13 Jun 2013 18:12:45 +0000 (22:12 +0400)
committerDavid S. Miller <davem@davemloft.net>
Thu, 20 Jun 2013 00:02:52 +0000 (17:02 -0700)
The only R8A7740 specific #ifdef hindering  ARM multiplatform build is  left in
sh_eth_rx(): it covers the code shifting Rx buffer descriptor word 0 by 16. Get
rid of the #ifdef by adding 'shift_rd0' field to the  'struct sh_eth_cpu_data',
making the shift dependent on it, and setting it to 1 for the R8A7740 case...

Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/renesas/sh_eth.c
drivers/net/ethernet/renesas/sh_eth.h

index 4b4c586d2c4f503ddd3fc4c8e3a585a1b9fc0af9..7732f11f14ad466f335a54289b2872be0651c176 100644 (file)
@@ -656,6 +656,7 @@ static struct sh_eth_cpu_data r8a7740_data = {
        .no_ade         = 1,
        .tsu            = 1,
        .select_mii     = 1,
+       .shift_rd0      = 1,
 };
 
 static struct sh_eth_cpu_data sh7619_data = {
@@ -1259,7 +1260,6 @@ static int sh_eth_rx(struct net_device *ndev, u32 intr_status, int *quota)
                if (!(desc_status & RDFEND))
                        ndev->stats.rx_length_errors++;
 
-#if defined(CONFIG_ARCH_R8A7740)
                /*
                 * In case of almost all GETHER/ETHERs, the Receive Frame State
                 * (RFS) bits in the Receive Descriptor 0 are from bit 9 to
@@ -1267,8 +1267,8 @@ static int sh_eth_rx(struct net_device *ndev, u32 intr_status, int *quota)
                 * bits are from bit 25 to bit 16. So, the driver needs right
                 * shifting by 16.
                 */
-               desc_status >>= 16;
-#endif
+               if (mdp->cd->shift_rd0)
+                       desc_status >>= 16;
 
                if (desc_status & (RD_RFS1 | RD_RFS2 | RD_RFS3 | RD_RFS4 |
                                   RD_RFS5 | RD_RFS6 | RD_RFS10)) {
index 7540dc35fdb859d32d61ee7360b56808acb452ac..a78fb0c424f86ea17bbcb3629ac1dfd0e83feb8e 100644 (file)
@@ -481,6 +481,7 @@ struct sh_eth_cpu_data {
        unsigned no_ade:1;      /* E-DMAC DO NOT have ADE bit in EESR */
        unsigned hw_crc:1;      /* E-DMAC have CSMR */
        unsigned select_mii:1;  /* EtherC have RMII_MII (MII select register) */
+       unsigned shift_rd0:1;   /* shift Rx descriptor word 0 right by 16 */
 };
 
 struct sh_eth_private {