mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
[ar7] rename 973-cpmac_handle_mvswitch.c to 973-cpmac_handle_mvswitch.patch
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@24141 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
Index: linux-2.6.32.25/drivers/net/cpmac.c
|
||||
===================================================================
|
||||
--- linux-2.6.32.25.orig/drivers/net/cpmac.c 2010-11-24 12:16:56.067517245 -0800
|
||||
+++ linux-2.6.32.25/drivers/net/cpmac.c 2010-11-24 12:17:56.279985384 -0800
|
||||
@@ -387,6 +387,7 @@
|
||||
struct cpmac_desc *desc)
|
||||
{
|
||||
struct sk_buff *skb, *result = NULL;
|
||||
+ int offset;
|
||||
|
||||
if (unlikely(netif_msg_hw(priv)))
|
||||
cpmac_dump_desc(priv->dev, desc);
|
||||
@@ -400,9 +401,13 @@
|
||||
|
||||
skb = netdev_alloc_skb(priv->dev, CPMAC_SKB_SIZE);
|
||||
if (likely(skb)) {
|
||||
- skb_reserve(skb, 2);
|
||||
+ offset = 2;
|
||||
+ if (priv->phy) {
|
||||
+ offset += priv->phy->pkt_align;
|
||||
+ }
|
||||
+ skb_reserve(skb, offset);
|
||||
+
|
||||
skb_put(desc->skb, desc->datalen);
|
||||
- desc->skb->protocol = eth_type_trans(desc->skb, priv->dev);
|
||||
desc->skb->ip_summed = CHECKSUM_NONE;
|
||||
priv->dev->stats.rx_packets++;
|
||||
priv->dev->stats.rx_bytes += desc->datalen;
|
||||
@@ -474,7 +479,12 @@
|
||||
|
||||
skb = cpmac_rx_one(priv, desc);
|
||||
if (likely(skb)) {
|
||||
- netif_receive_skb(skb);
|
||||
+ if (priv->phy->netif_receive_skb) {
|
||||
+ priv->phy->netif_receive_skb(skb);
|
||||
+ } else {
|
||||
+ skb->protocol = eth_type_trans(skb, priv->dev);
|
||||
+ netif_receive_skb(skb);
|
||||
+ }
|
||||
received++;
|
||||
}
|
||||
desc = desc->next;
|
||||
@@ -970,7 +980,7 @@
|
||||
|
||||
static int cpmac_open(struct net_device *dev)
|
||||
{
|
||||
- int i, size, res;
|
||||
+ int i, size, res, offset;
|
||||
struct cpmac_priv *priv = netdev_priv(dev);
|
||||
struct resource *mem;
|
||||
struct cpmac_desc *desc;
|
||||
@@ -1014,7 +1024,12 @@
|
||||
res = -ENOMEM;
|
||||
goto fail_desc;
|
||||
}
|
||||
- skb_reserve(skb, 2);
|
||||
+ offset = 2;
|
||||
+ if (priv->phy) {
|
||||
+ offset += priv->phy->pkt_align;
|
||||
+ }
|
||||
+ skb_reserve(skb, offset);
|
||||
+
|
||||
desc->skb = skb;
|
||||
desc->data_mapping = dma_map_single(&dev->dev, skb->data,
|
||||
CPMAC_SKB_SIZE,
|
||||
Reference in New Issue
Block a user