source: trunk/target/linux/atheros/patches-2.6.36/200-ar2313_enable_mvswitch.patch @ 23454

Last change on this file since 23454 was 23454, checked in by acoul, 6 years ago

linux/atheros: add preliminary 2.6.36 kernel support (refresh patches)

File size: 1.8 KB
  • drivers/net/ar231x.c

    a b static void ar231x_load_rx_ring(struct n 
    740740        for (i = 0; i < nr_bufs; i++) { 
    741741                struct sk_buff *skb; 
    742742                ar231x_descr_t *rd; 
     743                int offset = RX_OFFSET; 
    743744 
    744745                if (sp->rx_skb[idx]) 
    745746                        break; 
    static void ar231x_load_rx_ring(struct n 
    755756                 * Make sure IP header starts on a fresh cache line. 
    756757                 */ 
    757758                skb->dev = dev; 
    758                 skb_reserve(skb, RX_OFFSET); 
     759                if (sp->phy_dev) 
     760                        offset += sp->phy_dev->pkt_align; 
     761                skb_reserve(skb, offset); 
    759762                sp->rx_skb[idx] = skb; 
    760763 
    761764                rd = (ar231x_descr_t *) & sp->rx_ring[idx]; 
    static int ar231x_rx_int(struct net_devi 
    829832                        /* alloc new buffer. */ 
    830833                        skb_new = netdev_alloc_skb(dev, AR2313_BUFSIZE + RX_OFFSET); 
    831834                        if (skb_new != NULL) { 
     835                                int offset; 
    832836 
    833837                                skb = sp->rx_skb[idx]; 
    834838                                /* set skb */ 
    835839                                skb_put(skb, 
    836840                                                ((status >> DMA_RX_LEN_SHIFT) & 0x3fff) - CRC_LEN); 
    837  
    838841                                dev->stats.rx_bytes += skb->len; 
    839                                 skb->protocol = eth_type_trans(skb, dev); 
    840                                 /* pass the packet to upper layers */ 
    841                                 netif_rx(skb); 
    842842 
     843                                /* pass the packet to upper layers */ 
     844                                sp->rx(skb); 
    843845                                skb_new->dev = dev; 
     846 
    844847                                /* 16 bit align */ 
    845                                 skb_reserve(skb_new, RX_OFFSET); 
     848                                offset = RX_OFFSET; 
     849                                if (sp->phy_dev) 
     850                                        offset += sp->phy_dev->pkt_align; 
     851                                skb_reserve(skb_new, offset); 
    846852                                /* reset descriptor's curr_addr */ 
    847853                                rxdesc->addr = virt_to_phys(skb_new->data); 
    848854 
    static int ar231x_mdiobus_probe (struct 
    12541260                return PTR_ERR(phydev); 
    12551261        } 
    12561262 
     1263        sp->rx = phydev->netif_rx; 
     1264 
    12571265        /* mask with MAC supported features */ 
    12581266        phydev->supported &= (SUPPORTED_10baseT_Half 
    12591267                | SUPPORTED_10baseT_Full 
  • drivers/net/ar231x.h

    a b typedef struct { 
    221221 */ 
    222222struct ar231x_private { 
    223223        struct net_device *dev; 
     224        int (*rx)(struct sk_buff *skb); 
     225 
    224226        int version; 
    225227        u32 mb[2]; 
    226228 
Note: See TracBrowser for help on using the repository browser.