Changeset 35574


Ignore:
Timestamp:
2013-02-12T21:10:38+01:00 (5 years ago)
Author:
hauke
Message:

brcm47xx: add some more fixes to bgmac

Thank you Rafał Miłecki and Nathan Hintz

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/brcm47xx/patches-3.6/760-bgmac-fixes.patch

    r35507 r35574  
    2020+ 
    2121+       if (net_dev->flags & IFF_PROMISC) 
    22 +               bgmac_cmdcfg_maskset(bgmac, ~0, BGMAC_CMDCFG_PROM, false); 
     22+               bgmac_cmdcfg_maskset(bgmac, ~0, BGMAC_CMDCFG_PROM, true); 
    2323+       else 
    24 +               bgmac_cmdcfg_maskset(bgmac, ~BGMAC_CMDCFG_PROM, 0, false); 
     24+               bgmac_cmdcfg_maskset(bgmac, ~BGMAC_CMDCFG_PROM, 0, true); 
    2525+} 
    2626+ 
     
    4141                bcma_chipco_chipctl_maskset(cc, 1, 
    4242                                            ~(BGMAC_CHIPCTL_1_IF_TYPE_MASK | 
    43 @@ -1004,8 +1026,6 @@ static void bgmac_enable(struct bgmac *b 
     43@@ -948,6 +970,7 @@ static void bgmac_chip_intrs_on(struct b 
     44 static void bgmac_chip_intrs_off(struct bgmac *bgmac) 
     45 { 
     46        bgmac_write(bgmac, BGMAC_INT_MASK, 0); 
     47+       bgmac_read(bgmac, BGMAC_INT_MASK); 
     48 } 
     49  
     50 /* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/gmac_enable */ 
     51@@ -1004,8 +1027,6 @@ static void bgmac_enable(struct bgmac *b 
    4452 static void bgmac_chip_init(struct bgmac *bgmac, bool full_init) 
    4553 { 
     
    5058  
    5159        /* 1 interrupt per received frame */ 
    52 @@ -1014,16 +1034,9 @@ static void bgmac_chip_init(struct bgmac 
     60@@ -1014,21 +1035,14 @@ static void bgmac_chip_init(struct bgmac 
    5361        /* Enable 802.3x tx flow control (honor received PAUSE frames) */ 
    5462        bgmac_cmdcfg_maskset(bgmac, ~BGMAC_CMDCFG_RPI, 0, true); 
     
    6876  
    6977        if (bgmac->loopback) 
    70                 bgmac_cmdcfg_maskset(bgmac, ~0, BGMAC_CMDCFG_ML, true); 
    71 @@ -1160,6 +1173,19 @@ static netdev_tx_t bgmac_start_xmit(stru 
     78-               bgmac_cmdcfg_maskset(bgmac, ~0, BGMAC_CMDCFG_ML, true); 
     79+               bgmac_cmdcfg_maskset(bgmac, ~0, BGMAC_CMDCFG_ML, false); 
     80        else 
     81-               bgmac_cmdcfg_maskset(bgmac, ~BGMAC_CMDCFG_ML, 0, true); 
     82+               bgmac_cmdcfg_maskset(bgmac, ~BGMAC_CMDCFG_ML, 0, false); 
     83  
     84        bgmac_write(bgmac, BGMAC_RXMAX_LENGTH, 32 + ETHER_MAX_LEN); 
     85  
     86@@ -1160,6 +1174,19 @@ static netdev_tx_t bgmac_start_xmit(stru 
    7287        return bgmac_dma_tx_add(bgmac, ring, skb); 
    7388 } 
     
    89104 { 
    90105        struct bgmac *bgmac = netdev_priv(net_dev); 
    91 @@ -1190,7 +1216,9 @@ static const struct net_device_ops bgmac 
     106@@ -1190,7 +1217,9 @@ static const struct net_device_ops bgmac 
    92107        .ndo_open               = bgmac_open, 
    93108        .ndo_stop               = bgmac_stop, 
     
    100115 }; 
    101116  
     117@@ -1290,6 +1319,12 @@ static int bgmac_probe(struct bcma_devic 
     118                return -ENOTSUPP; 
     119        } 
     120  
     121+       if (!is_valid_ether_addr(mac)) { 
     122+               dev_err(&core->dev, "Invalid MAC addr: %pM\n", mac); 
     123+               eth_random_addr(mac); 
     124+               dev_warn(&core->dev, "Using random MAC: %pM\n", mac); 
     125+       } 
     126+ 
     127        /* Allocation and references */ 
     128        net_dev = alloc_etherdev(sizeof(*bgmac)); 
     129        if (!net_dev) 
    102130--- a/drivers/net/ethernet/broadcom/bgmac.h 
    103131+++ b/drivers/net/ethernet/broadcom/bgmac.h 
Note: See TracChangeset for help on using the changeset viewer.