Changeset 14655 for trunk


Ignore:
Timestamp:
2009-02-25T17:47:11+01:00 (7 years ago)
Author:
juhosg
Message:

[ar71xx] ag71xx driver: add a workaround for the ar8216 chip, until we get a suitable switch driver

Location:
trunk/target/linux/ar71xx
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/config-2.6.28

    r14639 r14655  
    55CONFIG_AG71XX=y 
    66# CONFIG_AG71XX_DEBUG is not set 
     7CONFIG_AG71XX_AR8216_SUPPORT=y 
    78# CONFIG_AR71XX_EARLY_SERIAL is not set 
    89CONFIG_AR71XX_MACH_AP83=y 
  • trunk/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/platform.h

    r14635 r14655  
    2929        u8              has_gbit:1; 
    3030        u8              is_ar91xx:1; 
     31        u8              has_ar8216:1; 
    3132 
    3233        void            (* ddr_flush)(void); 
  • trunk/target/linux/ar71xx/files/drivers/net/ag71xx/Kconfig

    r14517 r14655  
    1313        help 
    1414          Atheros AR71xx built-in ethernet driver debugging messages. 
     15 
     16config AG71XX_AR8216_SUPPORT 
     17        bool "special support for the Atheros AR8216 switch" 
     18        depends on AG71XX 
     19        default n 
     20        default y if AR71XX_MACH_WNR2000 || AR71XX_MACH_MZK_W04NU 
     21        help 
     22          Say 'y' here if you want to enable special support for the 
     23          Atheros AR8216 switch found on some boards. 
  • trunk/target/linux/ar71xx/files/drivers/net/ag71xx/Makefile

    r11995 r14655  
    33# 
    44 
     5ag71xx-y        += ag71xx_main.o  
     6ag71xx-y        += ag71xx_ethtool.o  
     7ag71xx-y        += ag71xx_phy.o  
     8ag71xx-y        += ag71xx_mdio.o 
     9 
     10ag71xx-$(CONFIG_AG71XX_AR8216_SUPPORT) += ag71xx_ar8216.o 
     11 
    512obj-$(CONFIG_AG71XX)    += ag71xx.o 
    613 
    7 ag71xx-objs     := ag71xx_main.o ag71xx_ethtool.o ag71xx_phy.o ag71xx_mdio.o 
  • trunk/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx.h

    r14517 r14655  
    3939 
    4040#define AG71XX_DRV_NAME         "ag71xx" 
    41 #define AG71XX_DRV_VERSION      "0.5.20" 
     41#define AG71XX_DRV_VERSION      "0.5.21" 
    4242 
    4343#define AG71XX_NAPI_WEIGHT      64 
     
    431431} 
    432432 
     433#ifdef CONFIG_AG71XX_AR8216_SUPPORT 
     434void ag71xx_add_ar8216_header(struct ag71xx *ag, struct sk_buff *skb); 
     435int ag71xx_remove_ar8216_header(struct ag71xx *ag, struct sk_buff *skb); 
     436#else 
     437static inline void ag71xx_add_ar8216_header(struct ag71xx *ag, 
     438                                           struct sk_buff *skb) 
     439{ 
     440} 
     441 
     442static inline int ag71xx_remove_ar8216_header(struct ag71xx *ag, 
     443                                              struct sk_buff *skb) 
     444{ 
     445        return 0; 
     446} 
     447#endif 
     448 
    433449#endif /* _AG71XX_H */ 
  • trunk/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c

    r14515 r14655  
    474474                goto err_drop; 
    475475 
     476        ag71xx_add_ar8216_header(ag, skb); 
     477 
    476478        if (skb->len <= 0) { 
    477479                DBG("%s: packet len is too small\n", ag->dev->name); 
     
    648650 
    649651                skb->dev = dev; 
    650                 skb->protocol = eth_type_trans(skb, dev); 
    651652                skb->ip_summed = CHECKSUM_NONE; 
    652  
    653                 netif_receive_skb(skb); 
    654653 
    655654                dev->last_rx = jiffies; 
    656655                dev->stats.rx_packets++; 
    657656                dev->stats.rx_bytes += pktlen; 
     657 
     658                if (ag71xx_remove_ar8216_header(ag, skb) != 0) { 
     659                        dev->stats.rx_dropped++; 
     660                        kfree_skb(skb); 
     661                } else { 
     662                        skb->protocol = eth_type_trans(skb, dev); 
     663                        netif_receive_skb(skb); 
     664                } 
    658665 
    659666                ring->buf[i].skb = NULL; 
Note: See TracChangeset for help on using the changeset viewer.