-Index: linux-2.6.25.4/drivers/net/cpmac.c
-===================================================================
---- linux-2.6.25.4.orig/drivers/net/cpmac.c
-+++ linux-2.6.25.4/drivers/net/cpmac.c
-@@ -187,6 +187,7 @@ struct cpmac_desc {
+--- a/drivers/net/cpmac.c
++++ b/drivers/net/cpmac.c
+@@ -187,6 +187,7 @@
#define CPMAC_EOQ 0x1000
struct sk_buff *skb;
struct cpmac_desc *next;
dma_addr_t mapping;
dma_addr_t data_mapping;
};
-@@ -242,6 +243,16 @@ static void cpmac_dump_desc(struct net_d
+@@ -242,6 +243,16 @@
printk("\n");
}
static void cpmac_dump_skb(struct net_device *dev, struct sk_buff *skb)
{
int i;
-@@ -413,21 +424,40 @@ static struct sk_buff *cpmac_rx_one(stru
+@@ -413,21 +424,40 @@
static int cpmac_poll(struct napi_struct *napi, int budget)
{
struct sk_buff *skb;
skb = cpmac_rx_one(priv, desc);
if (likely(skb)) {
netif_receive_skb(skb);
-@@ -436,19 +466,81 @@ static int cpmac_poll(struct napi_struct
+@@ -436,19 +466,81 @@
desc = desc->next;
}
}
static int cpmac_start_xmit(struct sk_buff *skb, struct net_device *dev)
-@@ -625,8 +717,10 @@ static void cpmac_clear_rx(struct net_de
+@@ -625,8 +717,10 @@
desc->dataflags = CPMAC_OWN;
dev->stats.rx_dropped++;
}
}
static void cpmac_clear_tx(struct net_device *dev)
-@@ -928,9 +1022,12 @@ static int cpmac_open(struct net_device
+@@ -928,9 +1022,12 @@
desc->buflen = CPMAC_SKB_SIZE;
desc->dataflags = CPMAC_OWN;
desc->next = &priv->rx_head[(i + 1) % priv->ring_size];