Home | History | Annotate | Download | only in net

Lines Matching full:adapter

64 static void atl1e_setup_mac_ctrl(struct atl1e_adapter *adapter);
90 * @adapter: board private structure
92 static inline void atl1e_irq_enable(struct atl1e_adapter *adapter)
94 AT_WRITE_REG(&adapter->hw, REG_ISR, 0);
95 AT_WRITE_REG(&adapter->hw, REG_IMR, IMR_NORMAL_MASK);
96 AT_WRITE_FLUSH(&adapter->hw);
101 * @adapter: board private structure
103 static inline void atl1e_irq_disable(struct atl1e_adapter *adapter)
105 AT_WRITE_REG(&adapter->hw, REG_IMR, 0);
106 AT_WRITE_FLUSH(&adapter->hw);
111 * @adapter: board private structure
113 static inline void atl1e_irq_reset(struct atl1e_adapter *adapter)
115 AT_WRITE_REG(&adapter->hw, REG_ISR, 0);
116 AT_WRITE_REG(&adapter->hw, REG_IMR, 0);
117 AT_WRITE_FLUSH(&adapter->hw);
120 static void atl1e_reset(struct atl1e_adapter *adapter)
122 atl1e_down(adapter);
123 atl1e_up(adapter);
126 static int atl1e_check_link(struct atl1e_adapter *adapter)
128 struct atl1e_hw *hw = &adapter->hw;
129 struct net_device *netdev = adapter->netdev;
145 adapter->link_speed = SPEED_0;
157 if (adapter->link_speed != speed ||
158 adapter->link_duplex != duplex) {
159 adapter->link_speed = speed;
160 adapter->link_duplex = duplex;
161 atl1e_setup_mac_ctrl(adapter);
164 netdev->name, adapter->link_speed,
165 adapter->link_duplex == FULL_DUPLEX ?
176 struct atl1e_adapter *adapter = netdev_priv(netdev);
179 atl1e_read_phy_reg(&adapter->hw, reg_num & MDIO_REG_ADDR_MASK, &result);
186 struct atl1e_adapter *adapter = netdev_priv(netdev);
188 atl1e_write_phy_reg(&adapter->hw, reg_num & MDIO_REG_ADDR_MASK, val);
210 * @adapter: board private structure to initialize
212 * atl1e_sw_init initializes the Adapter private data structure.
216 static int atl1e_sw_init(struct atl1e_adapter *adapter)
218 struct atl1e_hw *hw = &adapter->hw;
219 struct pci_device *pdev = adapter->pdev;
223 adapter->link_speed = SPEED_0; /* hardware init */
224 adapter->link_duplex = FULL_DUPLEX;
251 netdev_link_down(adapter->netdev);
258 * @adapter: board private structure
260 static void atl1e_clean_tx_ring(struct atl1e_adapter *adapter)
263 &adapter->tx_ring;
273 netdev_tx_complete(adapter->netdev, tx_buffer->iob);
288 * @adapter: board private structure
290 static void atl1e_clean_rx_ring(struct atl1e_adapter *adapter)
293 (struct atl1e_rx_ring *)&adapter->rx_ring;
297 if (adapter->ring_vir_addr == NULL)
309 static void atl1e_cal_ring_size(struct atl1e_adapter *adapter, u32 *ring_size)
311 *ring_size = ((u32)(adapter->tx_ring.count *
314 + adapter->rx_ring.real_page_size * AT_PAGE_NUM_PER_QUEUE
322 static void atl1e_init_ring_resources(struct atl1e_adapter *adapter)
327 tx_ring = &adapter->tx_ring;
328 rx_ring = &adapter->rx_ring;
330 rx_ring->real_page_size = adapter->rx_ring.page_size
334 atl1e_cal_ring_size(adapter, &adapter->ring_size);
336 adapter->ring_vir_addr = NULL;
337 adapter->rx_ring.desc = NULL;
345 static void atl1e_init_ring_ptrs(struct atl1e_adapter *adapter)
352 tx_ring = &adapter->tx_ring;
353 rx_ring = &adapter->rx_ring;
369 * @adapter: board private structure
373 static void atl1e_free_ring_resources(struct atl1e_adapter *adapter)
375 atl1e_clean_tx_ring(adapter);
376 atl1e_clean_rx_ring(adapter);
378 if (adapter->ring_vir_addr) {
379 free_dma(adapter->ring_vir_addr, adapter->ring_size);
380 adapter->ring_vir_addr = NULL;
381 adapter->ring_dma = 0;
384 if (adapter->tx_ring.tx_buffer) {
385 free(adapter->tx_ring.tx_buffer);
386 adapter->tx_ring.tx_buffer = NULL;
392 * @adapter: board private structure
396 static int atl1e_setup_ring_resources(struct atl1e_adapter *adapter)
405 if (adapter->ring_vir_addr != NULL)
408 tx_ring = &adapter->tx_ring;
409 rx_ring = &adapter->rx_ring;
413 size = adapter->ring_size;
414 adapter->ring_vir_addr = malloc_dma(adapter->ring_size, 32);
416 if (adapter->ring_vir_addr == NULL) {
418 adapter->ring_size, adapter->netdev->name);
422 adapter->ring_dma = virt_to_bus(adapter->ring_vir_addr);
423 memset(adapter->ring_vir_addr, 0, adapter->ring_size);
428 tx_ring->dma = (adapter->ring_dma + 7) & ~7;
429 offset = tx_ring->dma - adapter->ring_dma;
431 (adapter->ring_vir_addr + offset);
436 size, adapter->netdev->name);
447 adapter->ring_dma + offset;
449 adapter->ring_vir_addr + offset;
454 tx_ring->cmb_dma = adapter->ring_dma + offset;
455 tx_ring->cmb = (u32 *)(adapter->ring_vir_addr + offset);
460 adapter->ring_dma + offset;
462 adapter->ring_vir_addr + offset;
466 if (offset > adapter->ring_size) {
468 offset, adapter->ring_size);
475 atl1e_free_ring_resources(adapter);
479 static inline void atl1e_configure_des_ring(const struct atl1e_adapter *adapter)
482 struct atl1e_hw *hw = (struct atl1e_hw *)&adapter->hw;
484 (struct atl1e_rx_ring *)&adapter->rx_ring;
486 (struct atl1e_tx_ring *)&adapter->tx_ring;
521 static inline void atl1e_configure_tx(struct atl1e_adapter *adapter)
523 struct atl1e_hw *hw = (struct atl1e_hw *)&adapter->hw;
559 static inline void atl1e_configure_rx(struct atl1e_adapter *adapter)
561 struct atl1e_hw *hw = (struct atl1e_hw *)&adapter->hw;
597 static inline void atl1e_configure_dma(struct atl1e_adapter *adapter)
599 struct atl1e_hw *hw = &adapter->hw;
617 static void atl1e_setup_mac_ctrl(struct atl1e_adapter *adapter)
620 struct atl1e_hw *hw = &adapter->hw;
626 if (FULL_DUPLEX == adapter->link_duplex)
629 value |= ((u32)((SPEED_1000 == adapter->link_speed) ?
645 * @adapter: board private structure
649 static int atl1e_configure(struct atl1e_adapter *adapter)
651 struct atl1e_hw *hw = &adapter->hw;
670 atl1e_configure_des_ring(adapter);
692 atl1e_configure_tx(adapter);
695 atl1e_configure_rx(adapter);
698 atl1e_configure_dma(adapter);
713 static inline void atl1e_clear_phy_int(struct atl1e_adapter *adapter)
717 atl1e_read_phy_reg(&adapter->hw, MII_INT_STATUS, &phy_data);
720 static int atl1e_clean_tx_irq(struct atl1e_adapter *adapter)
723 &adapter->tx_ring;
725 u16 hw_next_to_clean = AT_READ_REGW(&adapter->hw, REG_TPD_CONS_IDX);
733 netdev_tx_complete(adapter->netdev, tx_buffer->iob);
746 static struct atl1e_rx_page *atl1e_get_rx_page(struct atl1e_adapter *adapter)
749 (struct atl1e_rx_page_desc *) &adapter->rx_ring.rx_page_desc;
755 static void atl1e_clean_rx_irq(struct atl1e_adapter *adapter)
757 struct net_device *netdev = adapter->netdev;
759 &adapter->rx_ring;
763 struct atl1e_rx_page *rx_page = atl1e_get_rx_page(adapter);
830 AT_WRITE_REGB(&adapter->hw, reg_addr, 1);
832 rx_page = atl1e_get_rx_page(adapter);
840 if (!netdev_link_ok(adapter->netdev))
841 atl1e_reset(adapter);
850 struct atl1e_adapter *adapter = netdev_priv(netdev);
851 struct atl1e_hw *hw = &adapter->hw;
862 atl1e_clear_phy_int(adapter);
869 if (netdev_link_ok(adapter->netdev)) {
871 atl1e_irq_reset(adapter);
872 atl1e_reset(adapter);
880 atl1e_irq_reset(adapter);
881 atl1e_reset(adapter);
887 atl1e_check_link(adapter);
893 atl1e_clean_tx_irq(adapter);
896 atl1e_clean_rx_irq(adapter);
900 AT_WRITE_REG(&adapter->hw, REG_ISR, 0);
905 static inline u16 atl1e_tpd_avail(struct atl1e_adapter *adapter)
907 struct atl1e_tx_ring *tx_ring = &adapter->tx_ring;
924 static struct atl1e_tpd_desc *atl1e_get_tpd(struct atl1e_adapter *adapter)
926 struct atl1e_tx_ring *tx_ring = &adapter->tx_ring;
938 atl1e_get_tx_buffer(struct atl1e_adapter *adapter, struct atl1e_tpd_desc *tpd)
940 struct atl1e_tx_ring *tx_ring = &adapter->tx_ring;
945 static void atl1e_tx_map(struct atl1e_adapter *adapter,
951 tx_buffer = atl1e_get_tx_buffer(adapter, tpd);
962 static void atl1e_tx_queue(struct atl1e_adapter *adapter, u16 count __unused,
965 struct atl1e_tx_ring *tx_ring = &adapter->tx_ring;
967 AT_WRITE_REG(&adapter->hw, REG_MB_TPD_PROD_IDX, tx_ring->next_to_use);
972 struct atl1e_adapter *adapter = netdev_priv(netdev);
980 if (atl1e_tpd_avail(adapter) < tpd_req) {
984 tpd = atl1e_get_tpd(adapter);
986 atl1e_tx_map(adapter, iob, tpd);
987 atl1e_tx_queue(adapter, tpd_req, tpd);
992 int atl1e_up(struct atl1e_adapter *adapter)
994 struct net_device *netdev = adapter->netdev;
999 err = atl1e_init_hw(&adapter->hw);
1003 atl1e_init_ring_ptrs(adapter);
1005 memcpy(adapter->hw.mac_addr, netdev->ll_addr, ETH_ALEN);
1007 if (atl1e_configure(adapter) != 0) {
1011 atl1e_irq_disable(adapter);
1013 val = AT_READ_REG(&adapter->hw, REG_MASTER_CTRL);
1014 AT_WRITE_REG(&adapter->hw, REG_MASTER_CTRL,
1022 struct atl1e_adapter *adapter = netdev_priv(netdev);
1025 atl1e_irq_enable(adapter);
1027 atl1e_irq_disable(adapter);
1030 void atl1e_down(struct atl1e_adapter *adapter)
1032 struct net_device *netdev = adapter->netdev;
1035 atl1e_reset_hw(&adapter->hw);
1039 adapter->link_speed = SPEED_0;
1040 adapter->link_duplex = -1;
1042 atl1e_clean_tx_ring(adapter);
1043 atl1e_clean_rx_ring(adapter);
1060 struct atl1e_adapter *adapter = netdev_priv(netdev);
1064 atl1e_init_ring_resources(adapter);
1065 err = atl1e_setup_ring_resources(adapter);
1069 err = atl1e_up(adapter);
1076 atl1e_free_ring_resources(adapter);
1077 atl1e_reset_hw(&adapter->hw);
1095 struct atl1e_adapter *adapter = netdev_priv(netdev);
1097 atl1e_down(adapter);
1098 atl1e_free_ring_resources(adapter);
1124 * atl1e_probe initializes an adapter identified by a pci_device structure.
1125 * The OS initialization, configuring of the adapter private structure,
1132 struct atl1e_adapter *adapter = NULL;
1148 adapter = netdev_priv(netdev);
1149 adapter->bd_number = cards_found;
1150 adapter->netdev = netdev;
1151 adapter->pdev = pdev;
1152 adapter->hw.adapter = adapter;
1158 adapter->hw.hw_addr = bus_to_virt(pdev->membase);
1161 adapter->mii.dev = netdev;
1162 adapter->mii.mdio_read = atl1e_mdio_read;
1163 adapter->mii.mdio_write = atl1e_mdio_write;
1164 adapter->mii.phy_id_mask = 0x1f;
1165 adapter->mii.reg_num_mask = MDIO_REG_ADDR_MASK;
1168 adapter->tx_ring.count = TX_DESC_COUNT;
1169 adapter->rx_ring.page_size = RX_MEM_SIZE;
1174 err = atl1e_sw_init(adapter);
1181 atl1e_phy_init(&adapter->hw);
1185 err = atl1e_reset_hw(&adapter->hw);
1193 atl1e_restart_autoneg(&adapter->hw);
1195 if (atl1e_read_mac_addr(&adapter->hw) != 0) {
1201 memcpy(netdev->hw_addr, adapter->hw.perm_mac_addr, ETH_ALEN);
1202 memcpy(netdev->ll_addr, adapter->hw.mac_addr, ETH_ALEN);
1204 "%02x:%02x:%02x:%02x:%02x:%02x\n", adapter->netdev->name,
1205 adapter->hw.mac_addr[0], adapter->hw.mac_addr[1],
1206 adapter->hw.mac_addr[2], adapter->hw.mac_addr[3],
1207 adapter->hw.mac_addr[4], adapter->hw.mac_addr[5]);
1239 struct atl1e_adapter *adapter = netdev_priv(netdev);
1242 atl1e_free_ring_resources(adapter);
1243 atl1e_force_ps(&adapter->hw);
1340 * Reads the adapter's MAC address from the EEPROM
1625 struct atl1e_adapter *adapter = hw->adapter;
1626 struct pci_device *pdev = adapter->pdev;
1671 * Performs basic configuration of the adapter.