aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ns83820.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ns83820.c')
-rw-r--r--drivers/net/ns83820.c35
1 files changed, 20 insertions, 15 deletions
diff --git a/drivers/net/ns83820.c b/drivers/net/ns83820.c
index b0127c71a5b6..568daeb3e9d8 100644
--- a/drivers/net/ns83820.c
+++ b/drivers/net/ns83820.c
@@ -414,10 +414,10 @@ struct rx_info {
414 414
415 struct sk_buff *skbs[NR_RX_DESC]; 415 struct sk_buff *skbs[NR_RX_DESC];
416 416
417 u32 *next_rx_desc; 417 __le32 *next_rx_desc;
418 u16 next_rx, next_empty; 418 u16 next_rx, next_empty;
419 419
420 u32 *descs; 420 __le32 *descs;
421 dma_addr_t phy_descs; 421 dma_addr_t phy_descs;
422}; 422};
423 423
@@ -427,6 +427,7 @@ struct ns83820 {
427 u8 __iomem *base; 427 u8 __iomem *base;
428 428
429 struct pci_dev *pci_dev; 429 struct pci_dev *pci_dev;
430 struct net_device *ndev;
430 431
431#ifdef NS83820_VLAN_ACCEL_SUPPORT 432#ifdef NS83820_VLAN_ACCEL_SUPPORT
432 struct vlan_group *vlgrp; 433 struct vlan_group *vlgrp;
@@ -459,7 +460,7 @@ struct ns83820 {
459 struct sk_buff *tx_skbs[NR_TX_DESC]; 460 struct sk_buff *tx_skbs[NR_TX_DESC];
460 461
461 char pad[16] __attribute__((aligned(16))); 462 char pad[16] __attribute__((aligned(16)));
462 u32 *tx_descs; 463 __le32 *tx_descs;
463 dma_addr_t tx_phy_descs; 464 dma_addr_t tx_phy_descs;
464 465
465 struct timer_list tx_watchdog; 466 struct timer_list tx_watchdog;
@@ -533,7 +534,7 @@ static void ns83820_vlan_rx_kill_vid(struct net_device *ndev, unsigned short vid
533 * conditions, still route realtime traffic with as low jitter as 534 * conditions, still route realtime traffic with as low jitter as
534 * possible. 535 * possible.
535 */ 536 */
536static inline void build_rx_desc(struct ns83820 *dev, u32 *desc, dma_addr_t link, dma_addr_t buf, u32 cmdsts, u32 extsts) 537static inline void build_rx_desc(struct ns83820 *dev, __le32 *desc, dma_addr_t link, dma_addr_t buf, u32 cmdsts, u32 extsts)
537{ 538{
538 desc_addr_set(desc + DESC_LINK, link); 539 desc_addr_set(desc + DESC_LINK, link);
539 desc_addr_set(desc + DESC_BUFPTR, buf); 540 desc_addr_set(desc + DESC_BUFPTR, buf);
@@ -547,7 +548,7 @@ static inline int ns83820_add_rx_skb(struct ns83820 *dev, struct sk_buff *skb)
547{ 548{
548 unsigned next_empty; 549 unsigned next_empty;
549 u32 cmdsts; 550 u32 cmdsts;
550 u32 *sg; 551 __le32 *sg;
551 dma_addr_t buf; 552 dma_addr_t buf;
552 553
553 next_empty = dev->rx_info.next_empty; 554 next_empty = dev->rx_info.next_empty;
@@ -631,10 +632,10 @@ static void fastcall rx_refill_atomic(struct net_device *ndev)
631} 632}
632 633
633/* REFILL */ 634/* REFILL */
634static inline void queue_refill(void *_dev) 635static inline void queue_refill(struct work_struct *work)
635{ 636{
636 struct net_device *ndev = _dev; 637 struct ns83820 *dev = container_of(work, struct ns83820, tq_refill);
637 struct ns83820 *dev = PRIV(ndev); 638 struct net_device *ndev = dev->ndev;
638 639
639 rx_refill(ndev, GFP_KERNEL); 640 rx_refill(ndev, GFP_KERNEL);
640 if (dev->rx_info.up) 641 if (dev->rx_info.up)
@@ -874,7 +875,8 @@ static void fastcall rx_irq(struct net_device *ndev)
874 struct rx_info *info = &dev->rx_info; 875 struct rx_info *info = &dev->rx_info;
875 unsigned next_rx; 876 unsigned next_rx;
876 int rx_rc, len; 877 int rx_rc, len;
877 u32 cmdsts, *desc; 878 u32 cmdsts;
879 __le32 *desc;
878 unsigned long flags; 880 unsigned long flags;
879 int nr = 0; 881 int nr = 0;
880 882
@@ -1010,7 +1012,8 @@ static inline void kick_tx(struct ns83820 *dev)
1010static void do_tx_done(struct net_device *ndev) 1012static void do_tx_done(struct net_device *ndev)
1011{ 1013{
1012 struct ns83820 *dev = PRIV(ndev); 1014 struct ns83820 *dev = PRIV(ndev);
1013 u32 cmdsts, tx_done_idx, *desc; 1015 u32 cmdsts, tx_done_idx;
1016 __le32 *desc;
1014 1017
1015 dprintk("do_tx_done(%p)\n", ndev); 1018 dprintk("do_tx_done(%p)\n", ndev);
1016 tx_done_idx = dev->tx_done_idx; 1019 tx_done_idx = dev->tx_done_idx;
@@ -1077,7 +1080,7 @@ static void ns83820_cleanup_tx(struct ns83820 *dev)
1077 struct sk_buff *skb = dev->tx_skbs[i]; 1080 struct sk_buff *skb = dev->tx_skbs[i];
1078 dev->tx_skbs[i] = NULL; 1081 dev->tx_skbs[i] = NULL;
1079 if (skb) { 1082 if (skb) {
1080 u32 *desc = dev->tx_descs + (i * DESC_SIZE); 1083 __le32 *desc = dev->tx_descs + (i * DESC_SIZE);
1081 pci_unmap_single(dev->pci_dev, 1084 pci_unmap_single(dev->pci_dev,
1082 desc_addr_get(desc + DESC_BUFPTR), 1085 desc_addr_get(desc + DESC_BUFPTR),
1083 le32_to_cpu(desc[DESC_CMDSTS]) & CMDSTS_LEN_MASK, 1086 le32_to_cpu(desc[DESC_CMDSTS]) & CMDSTS_LEN_MASK,
@@ -1107,7 +1110,7 @@ static int ns83820_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev)
1107 skb_frag_t *frag; 1110 skb_frag_t *frag;
1108 int stopped = 0; 1111 int stopped = 0;
1109 int do_intr = 0; 1112 int do_intr = 0;
1110 volatile u32 *first_desc; 1113 volatile __le32 *first_desc;
1111 1114
1112 dprintk("ns83820_hard_start_xmit\n"); 1115 dprintk("ns83820_hard_start_xmit\n");
1113 1116
@@ -1180,7 +1183,7 @@ again:
1180 first_desc = dev->tx_descs + (free_idx * DESC_SIZE); 1183 first_desc = dev->tx_descs + (free_idx * DESC_SIZE);
1181 1184
1182 for (;;) { 1185 for (;;) {
1183 volatile u32 *desc = dev->tx_descs + (free_idx * DESC_SIZE); 1186 volatile __le32 *desc = dev->tx_descs + (free_idx * DESC_SIZE);
1184 1187
1185 dprintk("frag[%3u]: %4u @ 0x%08Lx\n", free_idx, len, 1188 dprintk("frag[%3u]: %4u @ 0x%08Lx\n", free_idx, len,
1186 (unsigned long long)buf); 1189 (unsigned long long)buf);
@@ -1455,7 +1458,8 @@ static int ns83820_stop(struct net_device *ndev)
1455static void ns83820_tx_timeout(struct net_device *ndev) 1458static void ns83820_tx_timeout(struct net_device *ndev)
1456{ 1459{
1457 struct ns83820 *dev = PRIV(ndev); 1460 struct ns83820 *dev = PRIV(ndev);
1458 u32 tx_done_idx, *desc; 1461 u32 tx_done_idx;
1462 __le32 *desc;
1459 unsigned long flags; 1463 unsigned long flags;
1460 1464
1461 spin_lock_irqsave(&dev->tx_lock, flags); 1465 spin_lock_irqsave(&dev->tx_lock, flags);
@@ -1841,6 +1845,7 @@ static int __devinit ns83820_init_one(struct pci_dev *pci_dev, const struct pci_
1841 1845
1842 ndev = alloc_etherdev(sizeof(struct ns83820)); 1846 ndev = alloc_etherdev(sizeof(struct ns83820));
1843 dev = PRIV(ndev); 1847 dev = PRIV(ndev);
1848 dev->ndev = ndev;
1844 err = -ENOMEM; 1849 err = -ENOMEM;
1845 if (!dev) 1850 if (!dev)
1846 goto out; 1851 goto out;
@@ -1853,7 +1858,7 @@ static int __devinit ns83820_init_one(struct pci_dev *pci_dev, const struct pci_
1853 SET_MODULE_OWNER(ndev); 1858 SET_MODULE_OWNER(ndev);
1854 SET_NETDEV_DEV(ndev, &pci_dev->dev); 1859 SET_NETDEV_DEV(ndev, &pci_dev->dev);
1855 1860
1856 INIT_WORK(&dev->tq_refill, queue_refill, ndev); 1861 INIT_WORK(&dev->tq_refill, queue_refill);
1857 tasklet_init(&dev->rx_tasklet, rx_action, (unsigned long)ndev); 1862 tasklet_init(&dev->rx_tasklet, rx_action, (unsigned long)ndev);
1858 1863
1859 err = pci_enable_device(pci_dev); 1864 err = pci_enable_device(pci_dev);