Lines Matching refs:adapter

75 static void atl2_check_options(struct atl2_adapter *adapter);
85 static int atl2_sw_init(struct atl2_adapter *adapter) in atl2_sw_init() argument
87 struct atl2_hw *hw = &adapter->hw; in atl2_sw_init()
88 struct pci_dev *pdev = adapter->pdev; in atl2_sw_init()
99 adapter->wol = 0; in atl2_sw_init()
100 adapter->ict = 50000; /* ~100ms */ in atl2_sw_init()
101 adapter->link_speed = SPEED_0; /* hardware init */ in atl2_sw_init()
102 adapter->link_duplex = FULL_DUPLEX; in atl2_sw_init()
116 hw->max_frame_size = adapter->netdev->mtu; in atl2_sw_init()
118 spin_lock_init(&adapter->stats_lock); in atl2_sw_init()
120 set_bit(__ATL2_DOWN, &adapter->flags); in atl2_sw_init()
136 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_set_multi() local
137 struct atl2_hw *hw = &adapter->hw; in atl2_set_multi()
166 static void init_ring_ptrs(struct atl2_adapter *adapter) in init_ring_ptrs() argument
169 adapter->txd_write_ptr = 0; in init_ring_ptrs()
170 atomic_set(&adapter->txd_read_ptr, 0); in init_ring_ptrs()
172 adapter->rxd_read_ptr = 0; in init_ring_ptrs()
173 adapter->rxd_write_ptr = 0; in init_ring_ptrs()
175 atomic_set(&adapter->txs_write_ptr, 0); in init_ring_ptrs()
176 adapter->txs_next_clear = 0; in init_ring_ptrs()
185 static int atl2_configure(struct atl2_adapter *adapter) in atl2_configure() argument
187 struct atl2_hw *hw = &adapter->hw; in atl2_configure()
191 ATL2_WRITE_REG(&adapter->hw, REG_ISR, 0xffffffff); in atl2_configure()
205 (u32)((adapter->ring_dma & 0xffffffff00000000ULL) >> 32)); in atl2_configure()
209 (u32)(adapter->txd_dma & 0x00000000ffffffffULL)); in atl2_configure()
211 (u32)(adapter->txs_dma & 0x00000000ffffffffULL)); in atl2_configure()
213 (u32)(adapter->rxd_dma & 0x00000000ffffffffULL)); in atl2_configure()
216 ATL2_WRITE_REGW(hw, REG_TXD_MEM_SIZE, (u16)(adapter->txd_ring_size/4)); in atl2_configure()
217 ATL2_WRITE_REGW(hw, REG_TXS_MEM_SIZE, (u16)adapter->txs_ring_size); in atl2_configure()
218 ATL2_WRITE_REGW(hw, REG_RXD_BUF_NUM, (u16)adapter->rxd_ring_size); in atl2_configure()
248 ATL2_WRITE_REGW(hw, REG_IRQ_MODU_TIMER_INIT, adapter->imt); in atl2_configure()
252 ATL2_WRITE_REGW(hw, REG_CMBDISDMA_TIMER, adapter->ict); in atl2_configure()
255 ATL2_WRITE_REG(hw, REG_MTU, adapter->netdev->mtu + in atl2_configure()
266 ATL2_WRITE_REGW(hw, REG_MB_TXD_WR_IDX, (u16)adapter->txd_write_ptr); in atl2_configure()
267 ATL2_WRITE_REGW(hw, REG_MB_RXD_RD_IDX, (u16)adapter->rxd_read_ptr); in atl2_configure()
273 value = ATL2_READ_REG(&adapter->hw, REG_ISR); in atl2_configure()
280 ATL2_WRITE_REG(&adapter->hw, REG_ISR, 0x3fffffff); in atl2_configure()
281 ATL2_WRITE_REG(&adapter->hw, REG_ISR, 0); in atl2_configure()
291 static s32 atl2_setup_ring_resources(struct atl2_adapter *adapter) in atl2_setup_ring_resources() argument
293 struct pci_dev *pdev = adapter->pdev; in atl2_setup_ring_resources()
298 adapter->ring_size = size = in atl2_setup_ring_resources()
299 adapter->txd_ring_size * 1 + 7 + /* dword align */ in atl2_setup_ring_resources()
300 adapter->txs_ring_size * 4 + 7 + /* dword align */ in atl2_setup_ring_resources()
301 adapter->rxd_ring_size * 1536 + 127; /* 128bytes align */ in atl2_setup_ring_resources()
303 adapter->ring_vir_addr = pci_alloc_consistent(pdev, size, in atl2_setup_ring_resources()
304 &adapter->ring_dma); in atl2_setup_ring_resources()
305 if (!adapter->ring_vir_addr) in atl2_setup_ring_resources()
307 memset(adapter->ring_vir_addr, 0, adapter->ring_size); in atl2_setup_ring_resources()
310 adapter->txd_dma = adapter->ring_dma ; in atl2_setup_ring_resources()
311 offset = (adapter->txd_dma & 0x7) ? (8 - (adapter->txd_dma & 0x7)) : 0; in atl2_setup_ring_resources()
312 adapter->txd_dma += offset; in atl2_setup_ring_resources()
313 adapter->txd_ring = adapter->ring_vir_addr + offset; in atl2_setup_ring_resources()
316 adapter->txs_dma = adapter->txd_dma + adapter->txd_ring_size; in atl2_setup_ring_resources()
317 offset = (adapter->txs_dma & 0x7) ? (8 - (adapter->txs_dma & 0x7)) : 0; in atl2_setup_ring_resources()
318 adapter->txs_dma += offset; in atl2_setup_ring_resources()
319 adapter->txs_ring = (struct tx_pkt_status *) in atl2_setup_ring_resources()
320 (((u8 *)adapter->txd_ring) + (adapter->txd_ring_size + offset)); in atl2_setup_ring_resources()
323 adapter->rxd_dma = adapter->txs_dma + adapter->txs_ring_size * 4; in atl2_setup_ring_resources()
324 offset = (adapter->rxd_dma & 127) ? in atl2_setup_ring_resources()
325 (128 - (adapter->rxd_dma & 127)) : 0; in atl2_setup_ring_resources()
331 adapter->rxd_dma += offset; in atl2_setup_ring_resources()
332 adapter->rxd_ring = (struct rx_desc *) (((u8 *)adapter->txs_ring) + in atl2_setup_ring_resources()
333 (adapter->txs_ring_size * 4 + offset)); in atl2_setup_ring_resources()
346 static inline void atl2_irq_enable(struct atl2_adapter *adapter) in atl2_irq_enable() argument
348 ATL2_WRITE_REG(&adapter->hw, REG_IMR, IMR_NORMAL_MASK); in atl2_irq_enable()
349 ATL2_WRITE_FLUSH(&adapter->hw); in atl2_irq_enable()
356 static inline void atl2_irq_disable(struct atl2_adapter *adapter) in atl2_irq_disable() argument
358 ATL2_WRITE_REG(&adapter->hw, REG_IMR, 0); in atl2_irq_disable()
359 ATL2_WRITE_FLUSH(&adapter->hw); in atl2_irq_disable()
360 synchronize_irq(adapter->pdev->irq); in atl2_irq_disable()
377 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_vlan_mode() local
380 atl2_irq_disable(adapter); in atl2_vlan_mode()
382 ctrl = ATL2_READ_REG(&adapter->hw, REG_MAC_CTRL); in atl2_vlan_mode()
384 ATL2_WRITE_REG(&adapter->hw, REG_MAC_CTRL, ctrl); in atl2_vlan_mode()
386 atl2_irq_enable(adapter); in atl2_vlan_mode()
389 static void atl2_restore_vlan(struct atl2_adapter *adapter) in atl2_restore_vlan() argument
391 atl2_vlan_mode(adapter->netdev, adapter->netdev->features); in atl2_restore_vlan()
420 static void atl2_intr_rx(struct atl2_adapter *adapter) in atl2_intr_rx() argument
422 struct net_device *netdev = adapter->netdev; in atl2_intr_rx()
427 rxd = adapter->rxd_ring+adapter->rxd_write_ptr; in atl2_intr_rx()
473 if (++adapter->rxd_write_ptr == adapter->rxd_ring_size) in atl2_intr_rx()
474 adapter->rxd_write_ptr = 0; in atl2_intr_rx()
478 adapter->rxd_read_ptr = adapter->rxd_write_ptr; in atl2_intr_rx()
479 ATL2_WRITE_REGW(&adapter->hw, REG_MB_RXD_RD_IDX, adapter->rxd_read_ptr); in atl2_intr_rx()
482 static void atl2_intr_tx(struct atl2_adapter *adapter) in atl2_intr_tx() argument
484 struct net_device *netdev = adapter->netdev; in atl2_intr_tx()
492 txs_write_ptr = (u32) atomic_read(&adapter->txs_write_ptr); in atl2_intr_tx()
493 txs = adapter->txs_ring + txs_write_ptr; in atl2_intr_tx()
500 if (++txs_write_ptr == adapter->txs_ring_size) in atl2_intr_tx()
502 atomic_set(&adapter->txs_write_ptr, (int)txs_write_ptr); in atl2_intr_tx()
504 txd_read_ptr = (u32) atomic_read(&adapter->txd_read_ptr); in atl2_intr_tx()
506 (((u8 *)adapter->txd_ring) + txd_read_ptr); in atl2_intr_tx()
513 adapter->netdev->name, in atl2_intr_tx()
518 txs = adapter->txs_ring + txs_write_ptr; in atl2_intr_tx()
523 txs = adapter->txs_ring + in atl2_intr_tx()
524 (adapter->txs_ring_size + in atl2_intr_tx()
527 txs = adapter->txs_ring + (txs_write_ptr - 2); in atl2_intr_tx()
537 if (txd_read_ptr >= adapter->txd_ring_size) in atl2_intr_tx()
538 txd_read_ptr -= adapter->txd_ring_size; in atl2_intr_tx()
540 atomic_set(&adapter->txd_read_ptr, (int)txd_read_ptr); in atl2_intr_tx()
561 if (netif_queue_stopped(adapter->netdev) && in atl2_intr_tx()
562 netif_carrier_ok(adapter->netdev)) in atl2_intr_tx()
563 netif_wake_queue(adapter->netdev); in atl2_intr_tx()
567 static void atl2_check_for_link(struct atl2_adapter *adapter) in atl2_check_for_link() argument
569 struct net_device *netdev = adapter->netdev; in atl2_check_for_link()
572 spin_lock(&adapter->stats_lock); in atl2_check_for_link()
573 atl2_read_phy_reg(&adapter->hw, MII_BMSR, &phy_data); in atl2_check_for_link()
574 atl2_read_phy_reg(&adapter->hw, MII_BMSR, &phy_data); in atl2_check_for_link()
575 spin_unlock(&adapter->stats_lock); in atl2_check_for_link()
582 adapter->link_speed = SPEED_0; in atl2_check_for_link()
587 schedule_work(&adapter->link_chg_task); in atl2_check_for_link()
590 static inline void atl2_clear_phy_int(struct atl2_adapter *adapter) in atl2_clear_phy_int() argument
593 spin_lock(&adapter->stats_lock); in atl2_clear_phy_int()
594 atl2_read_phy_reg(&adapter->hw, 19, &phy_data); in atl2_clear_phy_int()
595 spin_unlock(&adapter->stats_lock); in atl2_clear_phy_int()
605 struct atl2_adapter *adapter = netdev_priv(data); in atl2_intr() local
606 struct atl2_hw *hw = &adapter->hw; in atl2_intr()
615 atl2_clear_phy_int(adapter); in atl2_intr()
622 if (netif_running(adapter->netdev)) { /* reset MAC */ in atl2_intr()
626 schedule_work(&adapter->reset_task); in atl2_intr()
636 schedule_work(&adapter->reset_task); in atl2_intr()
642 adapter->netdev->stats.tx_carrier_errors++; in atl2_intr()
643 atl2_check_for_link(adapter); in atl2_intr()
648 atl2_intr_tx(adapter); in atl2_intr()
652 atl2_intr_rx(adapter); in atl2_intr()
655 ATL2_WRITE_REG(&adapter->hw, REG_ISR, 0); in atl2_intr()
659 static int atl2_request_irq(struct atl2_adapter *adapter) in atl2_request_irq() argument
661 struct net_device *netdev = adapter->netdev; in atl2_request_irq()
665 adapter->have_msi = true; in atl2_request_irq()
666 err = pci_enable_msi(adapter->pdev); in atl2_request_irq()
668 adapter->have_msi = false; in atl2_request_irq()
670 if (adapter->have_msi) in atl2_request_irq()
673 return request_irq(adapter->pdev->irq, atl2_intr, flags, netdev->name, in atl2_request_irq()
683 static void atl2_free_ring_resources(struct atl2_adapter *adapter) in atl2_free_ring_resources() argument
685 struct pci_dev *pdev = adapter->pdev; in atl2_free_ring_resources()
686 pci_free_consistent(pdev, adapter->ring_size, adapter->ring_vir_addr, in atl2_free_ring_resources()
687 adapter->ring_dma); in atl2_free_ring_resources()
704 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_open() local
709 if (test_bit(__ATL2_TESTING, &adapter->flags)) in atl2_open()
713 err = atl2_setup_ring_resources(adapter); in atl2_open()
717 err = atl2_init_hw(&adapter->hw); in atl2_open()
725 init_ring_ptrs(adapter); in atl2_open()
727 atl2_restore_vlan(adapter); in atl2_open()
729 if (atl2_configure(adapter)) { in atl2_open()
734 err = atl2_request_irq(adapter); in atl2_open()
738 clear_bit(__ATL2_DOWN, &adapter->flags); in atl2_open()
740 mod_timer(&adapter->watchdog_timer, round_jiffies(jiffies + 4*HZ)); in atl2_open()
742 val = ATL2_READ_REG(&adapter->hw, REG_MASTER_CTRL); in atl2_open()
743 ATL2_WRITE_REG(&adapter->hw, REG_MASTER_CTRL, in atl2_open()
746 atl2_irq_enable(adapter); in atl2_open()
753 atl2_free_ring_resources(adapter); in atl2_open()
754 atl2_reset_hw(&adapter->hw); in atl2_open()
759 static void atl2_down(struct atl2_adapter *adapter) in atl2_down() argument
761 struct net_device *netdev = adapter->netdev; in atl2_down()
765 set_bit(__ATL2_DOWN, &adapter->flags); in atl2_down()
770 atl2_reset_hw(&adapter->hw); in atl2_down()
773 atl2_irq_disable(adapter); in atl2_down()
775 del_timer_sync(&adapter->watchdog_timer); in atl2_down()
776 del_timer_sync(&adapter->phy_config_timer); in atl2_down()
777 clear_bit(0, &adapter->cfg_phy); in atl2_down()
780 adapter->link_speed = SPEED_0; in atl2_down()
781 adapter->link_duplex = -1; in atl2_down()
784 static void atl2_free_irq(struct atl2_adapter *adapter) in atl2_free_irq() argument
786 struct net_device *netdev = adapter->netdev; in atl2_free_irq()
788 free_irq(adapter->pdev->irq, netdev); in atl2_free_irq()
791 if (adapter->have_msi) in atl2_free_irq()
792 pci_disable_msi(adapter->pdev); in atl2_free_irq()
809 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_close() local
811 WARN_ON(test_bit(__ATL2_RESETTING, &adapter->flags)); in atl2_close()
813 atl2_down(adapter); in atl2_close()
814 atl2_free_irq(adapter); in atl2_close()
815 atl2_free_ring_resources(adapter); in atl2_close()
820 static inline int TxsFreeUnit(struct atl2_adapter *adapter) in TxsFreeUnit() argument
822 u32 txs_write_ptr = (u32) atomic_read(&adapter->txs_write_ptr); in TxsFreeUnit()
824 return (adapter->txs_next_clear >= txs_write_ptr) ? in TxsFreeUnit()
825 (int) (adapter->txs_ring_size - adapter->txs_next_clear + in TxsFreeUnit()
827 (int) (txs_write_ptr - adapter->txs_next_clear - 1); in TxsFreeUnit()
830 static inline int TxdFreeBytes(struct atl2_adapter *adapter) in TxdFreeBytes() argument
832 u32 txd_read_ptr = (u32)atomic_read(&adapter->txd_read_ptr); in TxdFreeBytes()
834 return (adapter->txd_write_ptr >= txd_read_ptr) ? in TxdFreeBytes()
835 (int) (adapter->txd_ring_size - adapter->txd_write_ptr + in TxdFreeBytes()
837 (int) (txd_read_ptr - adapter->txd_write_ptr - 1); in TxdFreeBytes()
843 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_xmit_frame() local
849 if (test_bit(__ATL2_DOWN, &adapter->flags)) { in atl2_xmit_frame()
859 txs_unused = TxsFreeUnit(adapter); in atl2_xmit_frame()
860 txbuf_unused = TxdFreeBytes(adapter); in atl2_xmit_frame()
869 offset = adapter->txd_write_ptr; in atl2_xmit_frame()
871 txph = (struct tx_pkt_header *) (((u8 *)adapter->txd_ring) + offset); in atl2_xmit_frame()
877 if (offset >= adapter->txd_ring_size) in atl2_xmit_frame()
878 offset -= adapter->txd_ring_size; in atl2_xmit_frame()
879 copy_len = adapter->txd_ring_size - offset; in atl2_xmit_frame()
881 memcpy(((u8 *)adapter->txd_ring) + offset, skb->data, skb->len); in atl2_xmit_frame()
884 memcpy(((u8 *)adapter->txd_ring)+offset, skb->data, copy_len); in atl2_xmit_frame()
885 memcpy((u8 *)adapter->txd_ring, skb->data+copy_len, in atl2_xmit_frame()
899 if (offset >= adapter->txd_ring_size) in atl2_xmit_frame()
900 offset -= adapter->txd_ring_size; in atl2_xmit_frame()
901 adapter->txd_write_ptr = offset; in atl2_xmit_frame()
904 adapter->txs_ring[adapter->txs_next_clear].update = 0; in atl2_xmit_frame()
905 if (++adapter->txs_next_clear == adapter->txs_ring_size) in atl2_xmit_frame()
906 adapter->txs_next_clear = 0; in atl2_xmit_frame()
908 ATL2_WRITE_REGW(&adapter->hw, REG_MB_TXD_WR_IDX, in atl2_xmit_frame()
909 (adapter->txd_write_ptr >> 2)); in atl2_xmit_frame()
925 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_change_mtu() local
926 struct atl2_hw *hw = &adapter->hw; in atl2_change_mtu()
950 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_set_mac() local
960 memcpy(adapter->hw.mac_addr, addr->sa_data, netdev->addr_len); in atl2_set_mac()
962 atl2_set_mac_addr(&adapter->hw); in atl2_set_mac()
969 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_mii_ioctl() local
978 spin_lock_irqsave(&adapter->stats_lock, flags); in atl2_mii_ioctl()
979 if (atl2_read_phy_reg(&adapter->hw, in atl2_mii_ioctl()
981 spin_unlock_irqrestore(&adapter->stats_lock, flags); in atl2_mii_ioctl()
984 spin_unlock_irqrestore(&adapter->stats_lock, flags); in atl2_mii_ioctl()
989 spin_lock_irqsave(&adapter->stats_lock, flags); in atl2_mii_ioctl()
990 if (atl2_write_phy_reg(&adapter->hw, data->reg_num, in atl2_mii_ioctl()
992 spin_unlock_irqrestore(&adapter->stats_lock, flags); in atl2_mii_ioctl()
995 spin_unlock_irqrestore(&adapter->stats_lock, flags); in atl2_mii_ioctl()
1025 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_tx_timeout() local
1028 schedule_work(&adapter->reset_task); in atl2_tx_timeout()
1037 struct atl2_adapter *adapter = (struct atl2_adapter *) data; in atl2_watchdog() local
1039 if (!test_bit(__ATL2_DOWN, &adapter->flags)) { in atl2_watchdog()
1043 spin_lock_irqsave(&adapter->stats_lock, flags); in atl2_watchdog()
1044 drop_rxd = ATL2_READ_REG(&adapter->hw, REG_STS_RXD_OV); in atl2_watchdog()
1045 drop_rxs = ATL2_READ_REG(&adapter->hw, REG_STS_RXS_OV); in atl2_watchdog()
1046 spin_unlock_irqrestore(&adapter->stats_lock, flags); in atl2_watchdog()
1048 adapter->netdev->stats.rx_over_errors += drop_rxd + drop_rxs; in atl2_watchdog()
1051 mod_timer(&adapter->watchdog_timer, in atl2_watchdog()
1062 struct atl2_adapter *adapter = (struct atl2_adapter *) data; in atl2_phy_config() local
1063 struct atl2_hw *hw = &adapter->hw; in atl2_phy_config()
1066 spin_lock_irqsave(&adapter->stats_lock, flags); in atl2_phy_config()
1070 spin_unlock_irqrestore(&adapter->stats_lock, flags); in atl2_phy_config()
1071 clear_bit(0, &adapter->cfg_phy); in atl2_phy_config()
1074 static int atl2_up(struct atl2_adapter *adapter) in atl2_up() argument
1076 struct net_device *netdev = adapter->netdev; in atl2_up()
1082 err = atl2_init_hw(&adapter->hw); in atl2_up()
1089 init_ring_ptrs(adapter); in atl2_up()
1091 atl2_restore_vlan(adapter); in atl2_up()
1093 if (atl2_configure(adapter)) { in atl2_up()
1098 clear_bit(__ATL2_DOWN, &adapter->flags); in atl2_up()
1100 val = ATL2_READ_REG(&adapter->hw, REG_MASTER_CTRL); in atl2_up()
1101 ATL2_WRITE_REG(&adapter->hw, REG_MASTER_CTRL, val | in atl2_up()
1104 atl2_irq_enable(adapter); in atl2_up()
1110 static void atl2_reinit_locked(struct atl2_adapter *adapter) in atl2_reinit_locked() argument
1113 while (test_and_set_bit(__ATL2_RESETTING, &adapter->flags)) in atl2_reinit_locked()
1115 atl2_down(adapter); in atl2_reinit_locked()
1116 atl2_up(adapter); in atl2_reinit_locked()
1117 clear_bit(__ATL2_RESETTING, &adapter->flags); in atl2_reinit_locked()
1122 struct atl2_adapter *adapter; in atl2_reset_task() local
1123 adapter = container_of(work, struct atl2_adapter, reset_task); in atl2_reset_task()
1125 atl2_reinit_locked(adapter); in atl2_reset_task()
1128 static void atl2_setup_mac_ctrl(struct atl2_adapter *adapter) in atl2_setup_mac_ctrl() argument
1131 struct atl2_hw *hw = &adapter->hw; in atl2_setup_mac_ctrl()
1132 struct net_device *netdev = adapter->netdev; in atl2_setup_mac_ctrl()
1138 if (FULL_DUPLEX == adapter->link_duplex) in atl2_setup_mac_ctrl()
1148 value |= (((u32)adapter->hw.preamble_len & MAC_CTRL_PRMLEN_MASK) << in atl2_setup_mac_ctrl()
1162 value |= (((u32)(adapter->hw.retry_buf & in atl2_setup_mac_ctrl()
1168 static int atl2_check_link(struct atl2_adapter *adapter) in atl2_check_link() argument
1170 struct atl2_hw *hw = &adapter->hw; in atl2_check_link()
1171 struct net_device *netdev = adapter->netdev; in atl2_check_link()
1186 adapter->link_speed = SPEED_0; in atl2_check_link()
1217 if (adapter->link_speed != speed || in atl2_check_link()
1218 adapter->link_duplex != duplex) { in atl2_check_link()
1219 adapter->link_speed = speed; in atl2_check_link()
1220 adapter->link_duplex = duplex; in atl2_check_link()
1221 atl2_setup_mac_ctrl(adapter); in atl2_check_link()
1224 adapter->link_speed, in atl2_check_link()
1225 adapter->link_duplex == FULL_DUPLEX ? in atl2_check_link()
1244 adapter->link_speed = SPEED_0; in atl2_check_link()
1251 if (!test_bit(__ATL2_DOWN, &adapter->flags)) { in atl2_check_link()
1252 if (!test_and_set_bit(0, &adapter->cfg_phy)) in atl2_check_link()
1253 mod_timer(&adapter->phy_config_timer, in atl2_check_link()
1265 struct atl2_adapter *adapter; in atl2_link_chg_task() local
1268 adapter = container_of(work, struct atl2_adapter, link_chg_task); in atl2_link_chg_task()
1270 spin_lock_irqsave(&adapter->stats_lock, flags); in atl2_link_chg_task()
1271 atl2_check_link(adapter); in atl2_link_chg_task()
1272 spin_unlock_irqrestore(&adapter->stats_lock, flags); in atl2_link_chg_task()
1340 struct atl2_adapter *adapter; in atl2_probe() local
1381 adapter = netdev_priv(netdev); in atl2_probe()
1382 adapter->netdev = netdev; in atl2_probe()
1383 adapter->pdev = pdev; in atl2_probe()
1384 adapter->hw.back = adapter; in atl2_probe()
1389 adapter->hw.mem_rang = (u32)mmio_len; in atl2_probe()
1390 adapter->hw.hw_addr = ioremap(mmio_start, mmio_len); in atl2_probe()
1391 if (!adapter->hw.hw_addr) { in atl2_probe()
1405 adapter->bd_number = cards_found; in atl2_probe()
1406 adapter->pci_using_64 = false; in atl2_probe()
1409 err = atl2_sw_init(adapter); in atl2_probe()
1419 atl2_phy_init(&adapter->hw); in atl2_probe()
1424 if (atl2_reset_hw(&adapter->hw)) { in atl2_probe()
1430 atl2_read_mac_addr(&adapter->hw); in atl2_probe()
1431 memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len); in atl2_probe()
1437 atl2_check_options(adapter); in atl2_probe()
1439 setup_timer(&adapter->watchdog_timer, atl2_watchdog, in atl2_probe()
1440 (unsigned long)adapter); in atl2_probe()
1442 setup_timer(&adapter->phy_config_timer, atl2_phy_config, in atl2_probe()
1443 (unsigned long)adapter); in atl2_probe()
1445 INIT_WORK(&adapter->reset_task, atl2_reset_task); in atl2_probe()
1446 INIT_WORK(&adapter->link_chg_task, atl2_link_chg_task); in atl2_probe()
1465 iounmap(adapter->hw.hw_addr); in atl2_probe()
1490 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_remove() local
1494 set_bit(__ATL2_DOWN, &adapter->flags); in atl2_remove()
1496 del_timer_sync(&adapter->watchdog_timer); in atl2_remove()
1497 del_timer_sync(&adapter->phy_config_timer); in atl2_remove()
1498 cancel_work_sync(&adapter->reset_task); in atl2_remove()
1499 cancel_work_sync(&adapter->link_chg_task); in atl2_remove()
1503 atl2_force_ps(&adapter->hw); in atl2_remove()
1505 iounmap(adapter->hw.hw_addr); in atl2_remove()
1516 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_suspend() local
1517 struct atl2_hw *hw = &adapter->hw; in atl2_suspend()
1520 u32 wufc = adapter->wol; in atl2_suspend()
1529 WARN_ON(test_bit(__ATL2_RESETTING, &adapter->flags)); in atl2_suspend()
1530 atl2_down(adapter); in atl2_suspend()
1566 if (FULL_DUPLEX == adapter->link_duplex) in atl2_suspend()
1569 ctrl |= (((u32)adapter->hw.preamble_len & in atl2_suspend()
1571 ctrl |= (((u32)(adapter->hw.retry_buf & in atl2_suspend()
1633 atl2_free_irq(adapter); in atl2_suspend()
1646 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_resume() local
1661 ATL2_READ_REG(&adapter->hw, REG_WOL_CTRL); /* clear WOL status */ in atl2_resume()
1666 ATL2_WRITE_REG(&adapter->hw, REG_WOL_CTRL, 0); in atl2_resume()
1669 err = atl2_request_irq(adapter); in atl2_resume()
1674 atl2_reset_hw(&adapter->hw); in atl2_resume()
1677 atl2_up(adapter); in atl2_resume()
1732 struct atl2_adapter *adapter = hw->back; in atl2_read_pci_cfg() local
1733 pci_read_config_word(adapter->pdev, reg, value); in atl2_read_pci_cfg()
1738 struct atl2_adapter *adapter = hw->back; in atl2_write_pci_cfg() local
1739 pci_write_config_word(adapter->pdev, reg, *value); in atl2_write_pci_cfg()
1745 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_get_settings() local
1746 struct atl2_hw *hw = &adapter->hw; in atl2_get_settings()
1763 if (adapter->link_speed != SPEED_0) { in atl2_get_settings()
1764 ethtool_cmd_speed_set(ecmd, adapter->link_speed); in atl2_get_settings()
1765 if (adapter->link_duplex == FULL_DUPLEX) in atl2_get_settings()
1781 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_set_settings() local
1782 struct atl2_hw *hw = &adapter->hw; in atl2_set_settings()
1784 while (test_and_set_bit(__ATL2_RESETTING, &adapter->flags)) in atl2_set_settings()
1813 clear_bit(__ATL2_RESETTING, &adapter->flags); in atl2_set_settings()
1819 clear_bit(__ATL2_RESETTING, &adapter->flags); in atl2_set_settings()
1824 if (netif_running(adapter->netdev)) { in atl2_set_settings()
1825 atl2_down(adapter); in atl2_set_settings()
1826 atl2_up(adapter); in atl2_set_settings()
1828 atl2_reset_hw(&adapter->hw); in atl2_set_settings()
1830 clear_bit(__ATL2_RESETTING, &adapter->flags); in atl2_set_settings()
1855 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_get_regs() local
1856 struct atl2_hw *hw = &adapter->hw; in atl2_get_regs()
1912 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_get_eeprom_len() local
1914 if (!atl2_check_eeprom_exist(&adapter->hw)) in atl2_get_eeprom_len()
1923 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_get_eeprom() local
1924 struct atl2_hw *hw = &adapter->hw; in atl2_get_eeprom()
1964 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_set_eeprom() local
1965 struct atl2_hw *hw = &adapter->hw; in atl2_set_eeprom()
2025 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_get_drvinfo() local
2031 strlcpy(drvinfo->bus_info, pci_name(adapter->pdev), in atl2_get_drvinfo()
2042 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_get_wol() local
2047 if (adapter->wol & ATLX_WUFC_EX) in atl2_get_wol()
2049 if (adapter->wol & ATLX_WUFC_MC) in atl2_get_wol()
2051 if (adapter->wol & ATLX_WUFC_BC) in atl2_get_wol()
2053 if (adapter->wol & ATLX_WUFC_MAG) in atl2_get_wol()
2055 if (adapter->wol & ATLX_WUFC_LNKC) in atl2_get_wol()
2061 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_set_wol() local
2070 adapter->wol = 0; in atl2_set_wol()
2073 adapter->wol |= ATLX_WUFC_MAG; in atl2_set_wol()
2075 adapter->wol |= ATLX_WUFC_LNKC; in atl2_set_wol()
2082 struct atl2_adapter *adapter = netdev_priv(netdev); in atl2_nway_reset() local
2084 atl2_reinit_locked(adapter); in atl2_nway_reset()
2973 static void atl2_check_options(struct atl2_adapter *adapter) in atl2_check_options() argument
2977 int bd = adapter->bd_number; in atl2_check_options()
2999 adapter->txd_ring_size = ((u32) val) * 1024; in atl2_check_options()
3002 adapter->txd_ring_size = ((u32)opt.def) * 1024; in atl2_check_options()
3005 adapter->txs_ring_size = adapter->txd_ring_size / 128; in atl2_check_options()
3006 if (adapter->txs_ring_size > 160) in atl2_check_options()
3007 adapter->txs_ring_size = 160; in atl2_check_options()
3021 adapter->rxd_ring_size = (u32)val; in atl2_check_options()
3026 adapter->rxd_ring_size = (u32)opt.def; in atl2_check_options()
3029 adapter->hw.fc_rxd_hi = (adapter->rxd_ring_size / 8) * 7; in atl2_check_options()
3030 adapter->hw.fc_rxd_lo = (ATL2_MIN_RXD_COUNT / 8) > in atl2_check_options()
3031 (adapter->rxd_ring_size / 12) ? (ATL2_MIN_RXD_COUNT / 8) : in atl2_check_options()
3032 (adapter->rxd_ring_size / 12); in atl2_check_options()
3046 adapter->imt = (u16) val; in atl2_check_options()
3049 adapter->imt = (u16)(opt.def); in atl2_check_options()
3063 adapter->hw.flash_vendor = (u8) val; in atl2_check_options()
3066 adapter->hw.flash_vendor = (u8)(opt.def); in atl2_check_options()
3080 adapter->hw.MediaType = (u16) val; in atl2_check_options()
3083 adapter->hw.MediaType = (u16)(opt.def); in atl2_check_options()