diff options
Diffstat (limited to 'drivers/net/ethernet/marvell/skge.c')
| -rw-r--r-- | drivers/net/ethernet/marvell/skge.c | 25 | 
1 files changed, 17 insertions, 8 deletions
diff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c index ef94a591f9e..e912b6887d4 100644 --- a/drivers/net/ethernet/marvell/skge.c +++ b/drivers/net/ethernet/marvell/skge.c @@ -2845,7 +2845,7 @@ mapping_unwind:  mapping_error:  	if (net_ratelimit())  		dev_warn(&hw->pdev->dev, "%s: tx mapping error\n", dev->name); -	dev_kfree_skb(skb); +	dev_kfree_skb_any(skb);  	return NETDEV_TX_OK;  } @@ -3086,23 +3086,27 @@ static struct sk_buff *skge_rx_get(struct net_device *dev,  					       PCI_DMA_FROMDEVICE);  		skge_rx_reuse(e, skge->rx_buf_size);  	} else { +		struct skge_element ee;  		struct sk_buff *nskb;  		nskb = netdev_alloc_skb_ip_align(dev, skge->rx_buf_size);  		if (!nskb)  			goto resubmit; +		ee = *e; + +		skb = ee.skb; +		prefetch(skb->data); +  		if (skge_rx_setup(skge, e, nskb, skge->rx_buf_size) < 0) {  			dev_kfree_skb(nskb);  			goto resubmit;  		}  		pci_unmap_single(skge->hw->pdev, -				 dma_unmap_addr(e, mapaddr), -				 dma_unmap_len(e, maplen), +				 dma_unmap_addr(&ee, mapaddr), +				 dma_unmap_len(&ee, maplen),  				 PCI_DMA_FROMDEVICE); -		skb = e->skb; -		prefetch(skb->data);  	}  	skb_put(skb, len); @@ -3168,7 +3172,7 @@ static void skge_tx_done(struct net_device *dev)  			pkts_compl++;  			bytes_compl += e->skb->len; -			dev_kfree_skb(e->skb); +			dev_consume_skb_any(e->skb);  		}  	}  	netdev_completed_queue(dev, pkts_compl, bytes_compl); @@ -4042,7 +4046,6 @@ err_out_free_regions:  	pci_release_regions(pdev);  err_out_disable_pdev:  	pci_disable_device(pdev); -	pci_set_drvdata(pdev, NULL);  err_out:  	return err;  } @@ -4086,7 +4089,6 @@ static void skge_remove(struct pci_dev *pdev)  	iounmap(hw->regs);  	kfree(hw); -	pci_set_drvdata(pdev, NULL);  }  #ifdef CONFIG_PM_SLEEP @@ -4197,6 +4199,13 @@ static struct dmi_system_id skge_32bit_dma_boards[] = {  			DMI_MATCH(DMI_BOARD_NAME, "P5NSLI")  		},  	}, +	{ +		.ident = "FUJITSU SIEMENS A8NE-FM", +		.matches = { +			DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTek Computer INC."), +			DMI_MATCH(DMI_BOARD_NAME, "A8NE-FM") +		}, +	},  	{}  };  | 
