Changeset 38004


Ignore:
Timestamp:
2013-09-16T21:46:34+02:00 (4 years ago)
Author:
hauke
Message:

brcm47xx: bgmac: implement unaligned addressing for DMA rings that support it

This is important patch for new devices that support unaligned
addressing. That devices suffer from the backward-compatibility bug in
DMA engine. In theory we should be able to use old mechanism, but in
practice DMA address seems to be randomly copied into status register
when hardware reaches end of a ring. This breaks reading slot number
from status register and we can't use DMA anymore.

Signed-off-by: Rafał Miłecki <zajec5@…>

Location:
trunk/target/linux/brcm47xx/patches-3.10
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/brcm47xx/patches-3.10/770-bgmac-phylib.patch

    r37304 r38004  
    1111--- a/drivers/net/ethernet/broadcom/bgmac.c 
    1212+++ b/drivers/net/ethernet/broadcom/bgmac.c 
    13 @@ -1201,27 +1201,14 @@ static int bgmac_set_mac_address(struct 
     13@@ -1219,27 +1219,14 @@ static int bgmac_set_mac_address(struct 
    1414 static int bgmac_ioctl(struct net_device *net_dev, struct ifreq *ifr, int cmd) 
    1515 { 
     
    4646  
    4747 static const struct net_device_ops bgmac_netdev_ops = { 
    48 @@ -1243,61 +1230,18 @@ static int bgmac_get_settings(struct net 
     48@@ -1261,61 +1248,18 @@ static int bgmac_get_settings(struct net 
    4949 { 
    5050        struct bgmac *bgmac = netdev_priv(net_dev); 
     
    112112 static void bgmac_get_drvinfo(struct net_device *net_dev, 
    113113                              struct ethtool_drvinfo *info) 
    114 @@ -1308,6 +1252,7 @@ static void bgmac_get_drvinfo(struct net 
     114@@ -1326,6 +1270,7 @@ static void bgmac_get_drvinfo(struct net 
    115115  
    116116 static const struct ethtool_ops bgmac_ethtool_ops = { 
     
    120120 }; 
    121121  
    122 @@ -1326,10 +1271,42 @@ static int bgmac_mii_write(struct mii_bu 
     122@@ -1344,10 +1289,42 @@ static int bgmac_mii_write(struct mii_bu 
    123123        return bgmac_phy_write(bus->priv, mii_id, regnum, value); 
    124124 } 
     
    163163        mii_bus = mdiobus_alloc(); 
    164164        if (!mii_bus) 
    165 @@ -1360,7 +1337,29 @@ static int bgmac_mii_register(struct bgm 
     165@@ -1378,7 +1355,29 @@ static int bgmac_mii_register(struct bgm 
    166166  
    167167        bgmac->mii_bus = mii_bus; 
     
    196196--- a/drivers/net/ethernet/broadcom/bgmac.h 
    197197+++ b/drivers/net/ethernet/broadcom/bgmac.h 
    198 @@ -399,7 +399,10 @@ struct bgmac { 
     198@@ -401,7 +401,10 @@ struct bgmac { 
    199199        struct bcma_device *cmn; /* Reference to CMN core for BCM4706 */ 
    200200        struct net_device *net_dev; 
Note: See TracChangeset for help on using the changeset viewer.