summaryrefslogtreecommitdiffstats
path: root/target/linux/storm/patches/1006-gmac-napi-tx.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/storm/patches/1006-gmac-napi-tx.patch')
-rw-r--r--target/linux/storm/patches/1006-gmac-napi-tx.patch110
1 files changed, 53 insertions, 57 deletions
diff --git a/target/linux/storm/patches/1006-gmac-napi-tx.patch b/target/linux/storm/patches/1006-gmac-napi-tx.patch
index e9c6d94e9..5861a6553 100644
--- a/target/linux/storm/patches/1006-gmac-napi-tx.patch
+++ b/target/linux/storm/patches/1006-gmac-napi-tx.patch
@@ -1,7 +1,5 @@
-Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/sl351x_gmac.c
-+++ linux-2.6.23.17/drivers/net/sl351x_gmac.c
+--- a/drivers/net/sl351x_gmac.c
++++ b/drivers/net/sl351x_gmac.c
@@ -43,9 +43,13 @@
#include <linux/mtd/kvctl.h>
@@ -17,7 +15,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
#ifndef CONFIG_SL351x_RXTOE
//#define CONFIG_SL351x_RXTOE 1
-@@ -126,7 +130,6 @@ static char _debug_prefetch_buf[_DEBUG_P
+@@ -126,7 +130,6 @@
*************************************************************/
static int gmac_initialized = 0;
TOE_INFO_T toe_private_data;
@@ -25,7 +23,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
static int rx_poll_enabled;
spinlock_t gmac_fq_lock;
unsigned int FLAG_SWITCH;
-@@ -190,7 +193,7 @@ void mac_get_sw_tx_weight(struct net_dev
+@@ -190,7 +193,7 @@
void mac_set_sw_tx_weight(struct net_device *dev, char *weight);
void mac_get_hw_tx_weight(struct net_device *dev, char *weight);
void mac_set_hw_tx_weight(struct net_device *dev, char *weight);
@@ -34,7 +32,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
#ifdef VITESSE_G5SWITCH
extern int Get_Set_port_status(void);
-@@ -295,12 +298,14 @@ static int __init gmac_init_module(void)
+@@ -295,12 +298,14 @@
for(j = 0; i<CONFIG_MAC_NUM; j++)
{
i=j;
@@ -49,7 +47,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
tp = (GMAC_INFO_T *)&toe_private_data.gmac[i];
tp->dev = NULL;
-@@ -459,7 +464,7 @@ void mac_init_drv(void)
+@@ -459,7 +464,7 @@
toe->gmac[1].dma_base_addr = TOE_GMAC1_DMA_BASE;
toe->gmac[0].auto_nego_cfg = 1;
toe->gmac[1].auto_nego_cfg = 1;
@@ -58,7 +56,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
toe->gmac[0].speed_cfg = GMAC_SPEED_1000;
toe->gmac[1].speed_cfg = GMAC_SPEED_1000;
#else
-@@ -508,7 +513,7 @@ void mac_init_drv(void)
+@@ -508,7 +513,7 @@
// Write GLOBAL_QUEUE_THRESHOLD_REG
threshold.bits32 = 0;
threshold.bits.swfq_empty = (TOE_SW_FREEQ_DESC_NUM > 256) ? 255 :
@@ -67,7 +65,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
threshold.bits.hwfq_empty = (TOE_HW_FREEQ_DESC_NUM > 256) ? 256/4 :
TOE_HW_FREEQ_DESC_NUM/4;
threshold.bits.toe_class = (TOE_TOE_DESC_NUM > 256) ? 256/4 :
-@@ -613,18 +618,25 @@ static void toe_init_free_queue(void)
+@@ -613,18 +618,25 @@
rwptr_reg.bits.rptr = 0;
toe->fq_rx_rwptr.bits32 = rwptr_reg.bits32;
writel(rwptr_reg.bits32, TOE_GLOBAL_BASE + GLOBAL_SWFQ_RWPTR_REG);
@@ -95,7 +93,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
// toe->rx_skb[i] = skb;
sw_desc_ptr->word2.buf_adr = (unsigned int)__pa(skb->data);
// consistent_sync((unsigned int)desc_ptr, sizeof(GMAC_RXDESC_T), PCI_DMA_TODEVICE);
-@@ -851,14 +863,14 @@ static void toe_init_hwtx_queue(void)
+@@ -851,14 +863,14 @@
*----------------------------------------------------------------------*/
static void toe_init_default_queue(void)
{
@@ -114,7 +112,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
if (!desc_ptr)
{
printk("%s::DMA_MALLOC fail !\n",__func__);
-@@ -866,14 +878,17 @@ static void toe_init_default_queue(void)
+@@ -866,14 +878,17 @@
}
memset((void *)desc_ptr, 0, TOE_DEFAULT_Q0_DESC_NUM * sizeof(GMAC_RXDESC_T));
toe->gmac[0].default_desc_base = (unsigned int)desc_ptr;
@@ -133,7 +131,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
if (!desc_ptr)
{
printk("%s::DMA_MALLOC fail !\n",__func__);
-@@ -1071,12 +1086,16 @@ static void toe_init_gmac(struct net_dev
+@@ -1071,12 +1086,16 @@
data = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_0_REG) & ~tp->intr0_selected;
writel(data, TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_0_REG);
@@ -150,7 +148,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
data = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_4_REG) & ~tp->intr4_selected;
writel(data, TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_4_REG);
}
-@@ -1176,11 +1195,11 @@ static int toe_gmac_init_chip(struct net
+@@ -1176,11 +1195,11 @@
GMAC_CONFIG2_T config2_val;
GMAC_CONFIG0_T config0,config0_mask;
GMAC_CONFIG1_T config1;
@@ -164,7 +162,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
// GMAC_HASH_ENABLE_REG0_T hash_ctrl;
//
#if 0 /* mac address will be set in late_initcall */
-@@ -1202,24 +1221,23 @@ static int toe_gmac_init_chip(struct net
+@@ -1202,24 +1221,23 @@
// config1.bits32 = 0x002004; //next version
/* set flow control threshold */
config1.bits32 = 0;
@@ -197,7 +195,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
// gmac_write_reg(tp->base_addr,GMAC_MCAST_FIL0,0x0,0xffffffff);
// gmac_write_reg(tp->base_addr,GMAC_MCAST_FIL1,0x0,0xffffffff);
-@@ -1249,7 +1267,7 @@ static int toe_gmac_init_chip(struct net
+@@ -1249,7 +1267,7 @@
config0.bits.dis_rx = 1; /* disable rx */
config0.bits.dis_tx = 1; /* disable tx */
config0.bits.loop_back = 0; /* enable/disable GMAC loopback */
@@ -206,7 +204,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
config0.bits.rgmii_en = 0;
config0.bits.rgmm_edge = 1;
config0.bits.rxc_inv = 0;
-@@ -1342,6 +1360,9 @@ static int toe_gmac_init_chip(struct net
+@@ -1342,6 +1360,9 @@
gmac_write_reg(tp->dma_base_addr, GMAC_AHB_WEIGHT_REG, ahb_weight.bits32, ahb_weight_mask.bits32);
#endif
@@ -216,7 +214,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
#if defined(CONFIG_SL351x_NAT) || defined(CONFIG_SL351x_RXTOE)
gmac_write_reg(tp->dma_base_addr, GMAC_SPR0, IPPROTO_TCP, 0xffffffff);
#endif
-@@ -1552,7 +1573,7 @@ static void toe_gmac_tx_complete(GMAC_I
+@@ -1552,7 +1573,7 @@
rwptr.bits32 = readl(swtxq->rwptr_reg);
if (rwptr.bits.rptr == swtxq->finished_idx)
break;
@@ -225,7 +223,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
// consistent_sync((void *)curr_desc, sizeof(GMAC_TXDESC_T), PCI_DMA_FROMDEVICE);
word0.bits32 = curr_desc->word0.bits32;
word1.bits32 = curr_desc->word1.bits32;
-@@ -1573,6 +1594,7 @@ static void toe_gmac_tx_complete(GMAC_I
+@@ -1573,6 +1594,7 @@
swtxq->finished_idx = RWPTR_ADVANCE_ONE(swtxq->finished_idx, swtxq->total_desc_num);
curr_desc = (GMAC_TXDESC_T *)swtxq->desc_base + swtxq->finished_idx;
word0.bits32 = curr_desc->word0.bits32;
@@ -233,7 +231,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
#ifdef _DUMP_TX_TCP_CONTENT
if (curr_desc->word0.bits.buffer_size < 16)
{
-@@ -1592,12 +1614,12 @@ static void toe_gmac_tx_complete(GMAC_I
+@@ -1592,12 +1614,12 @@
word0.bits.status_tx_ok = 0;
if (swtxq->tx_skb[swtxq->finished_idx])
{
@@ -250,7 +248,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
curr_desc->word0.bits32 = word0.bits32;
swtxq->curr_finished_desc = (GMAC_TXDESC_T *)curr_desc;
swtxq->total_finished++;
-@@ -1624,31 +1646,29 @@ static void toe_gmac_tx_complete(GMAC_I
+@@ -1624,31 +1646,29 @@
*----------------------------------------------------------------------*/
static int gmac_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
@@ -296,7 +294,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
total_pages = snd_pages;
#endif
-@@ -1664,13 +1684,6 @@ static int gmac_start_xmit(struct sk_buf
+@@ -1664,13 +1684,6 @@
}
#endif
@@ -310,7 +308,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
#ifdef GMAC_USE_TXQ0
#define tx_qid 0
#endif
-@@ -1703,9 +1716,9 @@ static int gmac_start_xmit(struct sk_buf
+@@ -1703,9 +1716,9 @@
toe_gmac_tx_complete(tp, tx_qid, dev, 0);
if (wptr >= swtxq->finished_idx)
@@ -322,7 +320,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
if (free_desc < snd_pages)
{
// spin_unlock(&tp->tx_mutex);
-@@ -2063,9 +2076,10 @@ void mac_start_txdma(struct net_device *
+@@ -2063,9 +2076,10 @@
struct net_device_stats * gmac_get_stats(struct net_device *dev)
{
GMAC_INFO_T *tp = (GMAC_INFO_T *)dev->priv;
@@ -335,7 +333,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
if (netif_running(dev))
{
-@@ -2073,10 +2087,14 @@ struct net_device_stats * gmac_get_stats
+@@ -2073,10 +2087,14 @@
// spin_lock_irqsave(&tp->lock,flags);
pkt_drop = gmac_read_reg(tp->base_addr,GMAC_IN_DISCARDS);
pkt_error = gmac_read_reg(tp->base_addr,GMAC_IN_ERRORS);
@@ -350,7 +348,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
return &tp->ifStatics;
}
-@@ -2401,36 +2419,63 @@ static int gmac_close(struct net_device
+@@ -2401,36 +2419,63 @@
* toe_gmac_fill_free_q
* allocate buffers for free queue.
*----------------------------------------------------------------------*/
@@ -427,7 +425,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
}
// EXPORT_SYMBOL(toe_gmac_fill_free_q);
-@@ -2442,14 +2487,14 @@ static void gmac_registers(const char *m
+@@ -2442,14 +2487,14 @@
unsigned int status3;
unsigned int status4;
@@ -444,7 +442,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
printk("status: s0:%08X, s1:%08X, s2:%08X, s3:%08X, s4:%08X\n",
status0, status1, status2, status3, status4);
-@@ -2468,8 +2513,9 @@ static void gmac_registers(const char *m
+@@ -2468,8 +2513,9 @@
status3 = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_3_REG);
status4 = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_4_REG);
@@ -456,7 +454,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
}
/*----------------------------------------------------------------------
* toe_gmac_interrupt
-@@ -2485,75 +2531,44 @@ static irqreturn_t toe_gmac_interrupt (i
+@@ -2485,75 +2531,44 @@
unsigned int status3;
unsigned int status4;
@@ -551,7 +549,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
{
#define G1_INTR0_BITS (GMAC1_HWTQ13_EOF_INT_BIT | GMAC1_HWTQ12_EOF_INT_BIT | GMAC1_HWTQ11_EOF_INT_BIT | GMAC1_HWTQ10_EOF_INT_BIT)
#define G0_INTR0_BITS (GMAC0_HWTQ03_EOF_INT_BIT | GMAC0_HWTQ02_EOF_INT_BIT | GMAC0_HWTQ01_EOF_INT_BIT | GMAC0_HWTQ00_EOF_INT_BIT)
-@@ -2563,7 +2578,7 @@ if (1)
+@@ -2563,7 +2578,7 @@
// because they should pass packets to upper layer
if (tp->port_id == 0)
{
@@ -560,7 +558,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
{
if (status1 & GMAC0_HWTQ03_EOF_INT_BIT)
tp->hwtxq[3].eof_cnt++;
-@@ -2574,50 +2589,51 @@ if (1)
+@@ -2574,50 +2589,51 @@
if (status1 & GMAC0_HWTQ00_EOF_INT_BIT)
tp->hwtxq[0].eof_cnt++;
}
@@ -648,7 +646,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
{
if (status1 & GMAC1_HWTQ13_EOF_INT_BIT)
tp->hwtxq[3].eof_cnt++;
-@@ -2629,14 +2645,14 @@ if (1)
+@@ -2629,14 +2645,14 @@
tp->hwtxq[0].eof_cnt++;
}
@@ -667,7 +665,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
BUG_ON(rx_poll_enabled == 1);
-@@ -2646,7 +2662,7 @@ if (1)
+@@ -2646,7 +2662,7 @@
data32 &= ~(DEFAULT_Q1_INT_BIT);
writel(data32, TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_ENABLE_1_REG);
@@ -676,7 +674,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
data32 = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_ENABLE_4_REG);
data32 &= ~DEFAULT_Q1_INT_BIT;
writel(data32, TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_ENABLE_4_REG);
-@@ -2656,24 +2672,21 @@ if (1)
+@@ -2656,24 +2672,21 @@
writel(data32, TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_4_REG);
#endif
@@ -708,7 +706,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
}
// Interrupt Status 0
-@@ -2814,676 +2827,93 @@ if (1)
+@@ -2814,676 +2827,93 @@
}
}
@@ -1459,7 +1457,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
{
case GMAC_PHY_GMII:
mii_write(tp->phy_addr,0x04,0x05e1); /* advertisement 100M full duplex, pause capable on */
-@@ -3552,6 +2982,7 @@ void gmac_set_phy_status(struct net_devi
+@@ -3552,6 +2982,7 @@
status.bits.link = LINK_DOWN;
// clear_bit(__LINK_STATE_START, &dev->state);
printk("Link Down (0x%04x) ", reg_val);
@@ -1467,7 +1465,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
if(Giga_switch == 1)
{
wan_port_id = 1;
-@@ -3565,6 +2996,7 @@ void gmac_set_phy_status(struct net_devi
+@@ -3565,6 +2996,7 @@
storlink_ctl.link[ tp->port_id] = 0;
#endif
}
@@ -1475,7 +1473,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
}
else
{
-@@ -3572,6 +3004,7 @@ void gmac_set_phy_status(struct net_devi
+@@ -3572,6 +3004,7 @@
status.bits.link = LINK_UP;
// set_bit(__LINK_STATE_START, &dev->state);
printk("Link Up (0x%04x) ",reg_val);
@@ -1483,7 +1481,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
if(Giga_switch == 1)
{
wan_port_id = 1;
-@@ -3585,6 +3018,7 @@ void gmac_set_phy_status(struct net_devi
+@@ -3585,6 +3018,7 @@
storlink_ctl.link[ tp->port_id] = 1;
#endif
}
@@ -1491,7 +1489,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
}
// value = mii_read(PHY_ADDR,0x05);
-@@ -3863,6 +3297,7 @@ void gmac_get_phy_status(struct net_devi
+@@ -3863,6 +3297,7 @@
}
}
status.bits.link = LINK_UP; /* link up */
@@ -1499,7 +1497,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
if(Giga_switch==1)
{
wan_port_id = 1;
-@@ -3874,6 +3309,7 @@ void gmac_get_phy_status(struct net_devi
+@@ -3874,6 +3309,7 @@
storlink_ctl.link[ tp->port_id] = 1;
#endif
}
@@ -1507,7 +1505,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
if ((ability & 0x20)==0x20)
{
if (tp->flow_control_enable == 0)
-@@ -3914,6 +3350,7 @@ void gmac_get_phy_status(struct net_devi
+@@ -3914,6 +3350,7 @@
else
{
status.bits.link = LINK_DOWN; /* link down */
@@ -1515,7 +1513,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
if(Giga_switch == 1)
{
wan_port_id = 1;
-@@ -3925,6 +3362,7 @@ void gmac_get_phy_status(struct net_devi
+@@ -3925,6 +3362,7 @@
storlink_ctl.link[ tp->port_id] = 0;
#endif
}
@@ -1523,7 +1521,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
if (tp->pre_phy_status == LINK_UP)
{
printk("GMAC-%d LINK_Down......\n",tp->port_id);
-@@ -4298,86 +3736,102 @@ static void gmac_set_rx_mode(struct net_
+@@ -4298,86 +3736,102 @@
}
#ifdef CONFIG_SL_NAPI
@@ -1687,7 +1685,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
{
good_frame = 0;
if (curr_desc->word0.bits32 & GMAC_RXDESC_0_T_derr)
-@@ -4388,7 +3842,6 @@ static int gmac_rx_poll(struct net_devic
+@@ -4388,7 +3842,6 @@
{
if (rx_status == 4 || rx_status == 7)
isPtr->rx_crc_errors++;
@@ -1695,7 +1693,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
}
#ifdef SL351x_GMAC_WORKAROUND
else if (pkt_size < 60)
-@@ -4407,17 +3860,32 @@ static int gmac_rx_poll(struct net_devic
+@@ -4407,17 +3860,32 @@
}
}
#endif
@@ -1733,7 +1731,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
#ifdef SL351x_GMAC_WORKAROUND
if (tp->short_frames_cnt >= GMAC_SHORT_FRAME_THRESHOLD)
-@@ -4432,225 +3900,118 @@ static int gmac_rx_poll(struct net_devic
+@@ -4432,225 +3900,118 @@
}
tp->short_frames_cnt = 0;
#endif
@@ -2017,7 +2015,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
}
#endif
-@@ -5114,6 +4475,7 @@ void sl351x_poll_gmac_hanged_status(u32
+@@ -5114,6 +4475,7 @@
{
sl351x_nat_workaround_cnt++;
sl351x_nat_workaround_handler();
@@ -2025,7 +2023,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
}
#endif
#endif
-@@ -5124,6 +4486,7 @@ void sl351x_poll_gmac_hanged_status(u32
+@@ -5124,6 +4486,7 @@
}
do_workaround:
@@ -2033,7 +2031,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
gmac_initialized = 0;
if (hanged_state)
-@@ -5290,6 +4653,7 @@ static void sl351x_gmac_release_swtx_q(v
+@@ -5290,6 +4653,7 @@
GMAC_SWTXQ_T *swtxq;
DMA_RWPTR_T rwptr;
@@ -2041,7 +2039,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
toe = (TOE_INFO_T *)&toe_private_data;
tp = (GMAC_INFO_T *)&toe->gmac[0];
for (i=0; i<GMAC_NUM; i++, tp++)
-@@ -5341,6 +4705,7 @@ static void sl351x_gmac_release_rx_q(voi
+@@ -5341,6 +4705,7 @@
volatile GMAC_RXDESC_T *curr_desc;
struct sk_buff *skb;
@@ -2049,7 +2047,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
toe = (TOE_INFO_T *)&toe_private_data;
tp = (GMAC_INFO_T *)&toe->gmac[0];
for (i=0; i<GMAC_NUM; i++, tp++)
-@@ -5374,6 +4739,7 @@ static void sl351x_gmac_release_class_q(
+@@ -5374,6 +4739,7 @@
volatile GMAC_RXDESC_T *curr_desc;
struct sk_buff *skb;
@@ -2057,7 +2055,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
toe = (TOE_INFO_T *)&toe_private_data;
classq = (CLASSQ_INFO_T *)&toe->classq[0];
for (i=0; i<TOE_CLASS_QUEUE_NUM; i++, classq++)
-@@ -5410,6 +4776,7 @@ static void sl351x_gmac_release_toe_q(vo
+@@ -5410,6 +4776,7 @@
GMAC_RXDESC_T *toe_curr_desc;
struct sk_buff *skb;
@@ -2065,10 +2063,8 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c
toe = (TOE_INFO_T *)&toe_private_data;
toe_qhdr = (TOE_QHDR_T *)TOE_TOE_QUE_HDR_BASE;
for (i=0; i<TOE_TOE_QUEUE_NUM; i++, toe_qhdr++)
-Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_gmac.h
-===================================================================
---- linux-2.6.23.17.orig/include/asm-arm/arch-sl2312/sl351x_gmac.h
-+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_gmac.h
+--- a/include/asm-arm/arch-sl2312/sl351x_gmac.h
++++ b/include/asm-arm/arch-sl2312/sl351x_gmac.h
@@ -107,7 +107,7 @@
* The base address and descriptor number are configured at
* DMA Queues Descriptor Ring Base Address/Size Register (offset 0x0004)