Changeset 30926


Ignore:
Timestamp:
2012-03-13T18:29:38+01:00 (6 years ago)
Author:
juhosg
Message:

ar71xx: ag71xx: fix ARP frame reception on AR934x switch ports

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ar7240.c

    r30925 r30926  
    208208#define   AR934X_REG_OPER_MODE1_PHY4_MII_EN     BIT(28) 
    209209 
     210#define AR934X_REG_FLOOD_MASK           0x2c 
     211#define   AR934X_FLOOD_MASK_BC_DP(_p)   BIT(25 + (_p)) 
     212 
     213#define AR934X_REG_QM_CTRL              0x3c 
     214#define   AR934X_QM_CTRL_ARP_EN         BIT(15) 
     215 
     216#define AR934X_REG_AT_CTRL              0x5c 
     217#define   AR934X_AT_CTRL_AGE_TIME       BITS(0, 15) 
     218#define   AR934X_AT_CTRL_AGE_EN         BIT(17) 
     219#define   AR934X_AT_CTRL_LEARN_CHANGE   BIT(18) 
     220 
    210221#define AR934X_REG_PORT_BASE(_port)     (0x100 + (_port) * 0x100) 
    211222 
     
    557568        ar7240sw_reg_write(mii, AR7240_REG_TAG_PRIORITY, 0xfa50); 
    558569 
    559         /* Enable ARP frame acknowledge, aging, MAC replacing */ 
    560         ar7240sw_reg_write(mii, AR7240_REG_AT_CTRL, 
    561                 AR7240_AT_CTRL_RESERVED | 
    562                 0x2b /* 5 min age time */ | 
    563                 AR7240_AT_CTRL_AGE_EN | 
    564                 AR7240_AT_CTRL_ARP_EN | 
    565                 AR7240_AT_CTRL_LEARN_CHANGE); 
    566  
    567         /* Enable Broadcast frames transmitted to the CPU */ 
    568         ar7240sw_reg_set(mii, AR7240_REG_FLOOD_MASK, 
    569                          AR7240_FLOOD_MASK_BROAD_TO_CPU); 
     570        if (sw_is_ar934x(as)) { 
     571                /* Enable aging, MAC replacing */ 
     572                ar7240sw_reg_write(mii, AR934X_REG_AT_CTRL, 
     573                        0x2b /* 5 min age time */ | 
     574                        AR934X_AT_CTRL_AGE_EN | 
     575                        AR934X_AT_CTRL_LEARN_CHANGE); 
     576                /* Enable ARP frame acknowledge */ 
     577                ar7240sw_reg_set(mii, AR934X_REG_QM_CTRL, 
     578                                 AR934X_QM_CTRL_ARP_EN); 
     579                /* Enable Broadcast frames transmitted to the CPU */ 
     580                ar7240sw_reg_set(mii, AR934X_REG_FLOOD_MASK, 
     581                                 AR934X_FLOOD_MASK_BC_DP(0)); 
     582        } else { 
     583                /* Enable ARP frame acknowledge, aging, MAC replacing */ 
     584                ar7240sw_reg_write(mii, AR7240_REG_AT_CTRL, 
     585                        AR7240_AT_CTRL_RESERVED | 
     586                        0x2b /* 5 min age time */ | 
     587                        AR7240_AT_CTRL_AGE_EN | 
     588                        AR7240_AT_CTRL_ARP_EN | 
     589                        AR7240_AT_CTRL_LEARN_CHANGE); 
     590                /* Enable Broadcast frames transmitted to the CPU */ 
     591                ar7240sw_reg_set(mii, AR7240_REG_FLOOD_MASK, 
     592                                 AR7240_FLOOD_MASK_BROAD_TO_CPU); 
     593        } 
    570594 
    571595        /* setup MTU */ 
Note: See TracChangeset for help on using the changeset viewer.