Lines Matching full:adapter
62 static inline void schedule_mac_stats_update(struct adapter *ap, int secs) in schedule_mac_stats_update()
67 static inline void cancel_mac_stats_update(struct adapter *ap) in cancel_mac_stats_update()
104 static int t1_clock(struct adapter *adapter, int mode);
123 struct adapter *adapter = dev->ml_priv; in t1_set_rxmode() local
124 struct cmac *mac = adapter->port[dev->if_port].mac; in t1_set_rxmode()
150 void t1_link_negotiated(struct adapter *adapter, int port_id, int link_stat, in t1_link_negotiated() argument
153 struct port_info *p = &adapter->port[port_id]; in t1_link_negotiated()
163 if ((speed > 0) && (adapter->params.nports > 1)) { in t1_link_negotiated()
176 t1_sched_update_parms(adapter->sge, port_id, 0, sched_speed); in t1_link_negotiated()
193 static void enable_hw_csum(struct adapter *adapter) in enable_hw_csum() argument
195 if (adapter->port[0].dev->hw_features & NETIF_F_TSO) in enable_hw_csum()
196 t1_tp_set_ip_checksum_offload(adapter->tp, 1); /* for TSO only */ in enable_hw_csum()
197 t1_tp_set_tcp_checksum_offload(adapter->tp, 1); in enable_hw_csum()
204 static int cxgb_up(struct adapter *adapter) in cxgb_up() argument
208 if (!(adapter->flags & FULL_INIT_DONE)) { in cxgb_up()
209 err = t1_init_hw_modules(adapter); in cxgb_up()
213 enable_hw_csum(adapter); in cxgb_up()
214 adapter->flags |= FULL_INIT_DONE; in cxgb_up()
217 t1_interrupts_clear(adapter); in cxgb_up()
219 adapter->params.has_msi = !disable_msi && !pci_enable_msi(adapter->pdev); in cxgb_up()
220 err = request_irq(adapter->pdev->irq, t1_interrupt, in cxgb_up()
221 adapter->params.has_msi ? 0 : IRQF_SHARED, in cxgb_up()
222 adapter->name, adapter); in cxgb_up()
224 if (adapter->params.has_msi) in cxgb_up()
225 pci_disable_msi(adapter->pdev); in cxgb_up()
230 t1_sge_start(adapter->sge); in cxgb_up()
231 t1_interrupts_enable(adapter); in cxgb_up()
239 static void cxgb_down(struct adapter *adapter) in cxgb_down() argument
241 t1_sge_stop(adapter->sge); in cxgb_down()
242 t1_interrupts_disable(adapter); in cxgb_down()
243 free_irq(adapter->pdev->irq, adapter); in cxgb_down()
244 if (adapter->params.has_msi) in cxgb_down()
245 pci_disable_msi(adapter->pdev); in cxgb_down()
251 struct adapter *adapter = dev->ml_priv; in cxgb_open() local
252 int other_ports = adapter->open_device_map & PORT_MASK; in cxgb_open()
254 napi_enable(&adapter->napi); in cxgb_open()
255 if (!adapter->open_device_map && (err = cxgb_up(adapter)) < 0) { in cxgb_open()
256 napi_disable(&adapter->napi); in cxgb_open()
260 __set_bit(dev->if_port, &adapter->open_device_map); in cxgb_open()
261 link_start(&adapter->port[dev->if_port]); in cxgb_open()
263 if (!other_ports && adapter->params.stats_update_period) in cxgb_open()
264 schedule_mac_stats_update(adapter, in cxgb_open()
265 adapter->params.stats_update_period); in cxgb_open()
267 t1_vlan_mode(adapter, dev->features); in cxgb_open()
273 struct adapter *adapter = dev->ml_priv; in cxgb_close() local
274 struct port_info *p = &adapter->port[dev->if_port]; in cxgb_close()
278 napi_disable(&adapter->napi); in cxgb_close()
282 clear_bit(dev->if_port, &adapter->open_device_map); in cxgb_close()
283 if (adapter->params.stats_update_period && in cxgb_close()
284 !(adapter->open_device_map & PORT_MASK)) { in cxgb_close()
287 spin_lock(&adapter->work_lock); /* sync with update task */ in cxgb_close()
288 spin_unlock(&adapter->work_lock); in cxgb_close()
289 cancel_mac_stats_update(adapter); in cxgb_close()
292 if (!adapter->open_device_map) in cxgb_close()
293 cxgb_down(adapter); in cxgb_close()
299 struct adapter *adapter = dev->ml_priv; in t1_get_stats() local
300 struct port_info *p = &adapter->port[dev->if_port]; in t1_get_stats()
347 struct adapter *adapter = dev->ml_priv; in get_msglevel() local
349 return adapter->msg_enable; in get_msglevel()
354 struct adapter *adapter = dev->ml_priv; in set_msglevel() local
356 adapter->msg_enable = val; in set_msglevel()
435 struct adapter *adapter = dev->ml_priv; in get_drvinfo() local
439 strlcpy(info->bus_info, pci_name(adapter->pdev), in get_drvinfo()
462 struct adapter *adapter = dev->ml_priv; in get_stats() local
463 struct cmac *mac = adapter->port[dev->if_port].mac; in get_stats()
469 t = t1_sge_get_intr_counts(adapter->sge); in get_stats()
470 t1_sge_get_port_stats(adapter->sge, dev->if_port, &ss); in get_stats()
528 if (adapter->espi) { in get_stats()
531 e = t1_espi_get_intr_counts(adapter->espi); in get_stats()
541 static inline void reg_block_dump(struct adapter *ap, void *buf, in reg_block_dump()
553 struct adapter *ap = dev->ml_priv; in get_regs()
575 struct adapter *adapter = dev->ml_priv; in get_settings() local
576 struct port_info *p = &adapter->port[dev->if_port]; in get_settings()
635 struct adapter *adapter = dev->ml_priv; in set_settings() local
636 struct port_info *p = &adapter->port[dev->if_port]; in set_settings()
671 struct adapter *adapter = dev->ml_priv; in get_pauseparam() local
672 struct port_info *p = &adapter->port[dev->if_port]; in get_pauseparam()
682 struct adapter *adapter = dev->ml_priv; in set_pauseparam() local
683 struct port_info *p = &adapter->port[dev->if_port]; in set_pauseparam()
711 struct adapter *adapter = dev->ml_priv; in get_sge_param() local
712 int jumbo_fl = t1_is_T1B(adapter) ? 1 : 0; in get_sge_param()
718 e->rx_pending = adapter->params.sge.freelQ_size[!jumbo_fl]; in get_sge_param()
719 e->rx_jumbo_pending = adapter->params.sge.freelQ_size[jumbo_fl]; in get_sge_param()
720 e->tx_pending = adapter->params.sge.cmdQ_size[0]; in get_sge_param()
725 struct adapter *adapter = dev->ml_priv; in set_sge_param() local
726 int jumbo_fl = t1_is_T1B(adapter) ? 1 : 0; in set_sge_param()
733 e->tx_pending < (adapter->params.nports + 1) * (MAX_SKB_FRAGS + 1)) in set_sge_param()
736 if (adapter->flags & FULL_INIT_DONE) in set_sge_param()
739 adapter->params.sge.freelQ_size[!jumbo_fl] = e->rx_pending; in set_sge_param()
740 adapter->params.sge.freelQ_size[jumbo_fl] = e->rx_jumbo_pending; in set_sge_param()
741 adapter->params.sge.cmdQ_size[0] = e->tx_pending; in set_sge_param()
742 adapter->params.sge.cmdQ_size[1] = e->tx_pending > MAX_CMDQ1_ENTRIES ? in set_sge_param()
749 struct adapter *adapter = dev->ml_priv; in set_coalesce() local
751 adapter->params.sge.rx_coalesce_usecs = c->rx_coalesce_usecs; in set_coalesce()
752 adapter->params.sge.coalesce_enable = c->use_adaptive_rx_coalesce; in set_coalesce()
753 adapter->params.sge.sample_interval_usecs = c->rate_sample_interval; in set_coalesce()
754 t1_sge_set_coalesce_params(adapter->sge, &adapter->params.sge); in set_coalesce()
760 struct adapter *adapter = dev->ml_priv; in get_coalesce() local
762 c->rx_coalesce_usecs = adapter->params.sge.rx_coalesce_usecs; in get_coalesce()
763 c->rate_sample_interval = adapter->params.sge.sample_interval_usecs; in get_coalesce()
764 c->use_adaptive_rx_coalesce = adapter->params.sge.coalesce_enable; in get_coalesce()
770 struct adapter *adapter = dev->ml_priv; in get_eeprom_len() local
772 return t1_is_asic(adapter) ? EEPROM_SIZE : 0; in get_eeprom_len()
783 struct adapter *adapter = dev->ml_priv; in get_eeprom() local
785 e->magic = EEPROM_MAGIC(adapter); in get_eeprom()
787 t1_seeprom_read(adapter, i, (__le32 *)&buf[i]); in get_eeprom()
816 struct adapter *adapter = dev->ml_priv; in t1_ioctl() local
817 struct mdio_if_info *mdio = &adapter->port[dev->if_port].phy->mdio; in t1_ioctl()
825 struct adapter *adapter = dev->ml_priv; in t1_change_mtu() local
826 struct cmac *mac = adapter->port[dev->if_port].mac; in t1_change_mtu()
840 struct adapter *adapter = dev->ml_priv; in t1_set_mac_addr() local
841 struct cmac *mac = adapter->port[dev->if_port].mac; in t1_set_mac_addr()
870 struct adapter *adapter = dev->ml_priv; in t1_set_features() local
873 t1_vlan_mode(adapter, features); in t1_set_features()
881 struct adapter *adapter = dev->ml_priv; in t1_netpoll() local
884 t1_interrupt(adapter->pdev->irq, adapter); in t1_netpoll()
896 struct adapter *adapter = in mac_stats_task() local
897 container_of(work, struct adapter, stats_update_task.work); in mac_stats_task()
899 for_each_port(adapter, i) { in mac_stats_task()
900 struct port_info *p = &adapter->port[i]; in mac_stats_task()
908 spin_lock(&adapter->work_lock); in mac_stats_task()
909 if (adapter->open_device_map & PORT_MASK) in mac_stats_task()
910 schedule_mac_stats_update(adapter, in mac_stats_task()
911 adapter->params.stats_update_period); in mac_stats_task()
912 spin_unlock(&adapter->work_lock); in mac_stats_task()
920 struct adapter *adapter = in ext_intr_task() local
921 container_of(work, struct adapter, ext_intr_handler_task); in ext_intr_task()
923 t1_elmer0_ext_intr_handler(adapter); in ext_intr_task()
926 spin_lock_irq(&adapter->async_lock); in ext_intr_task()
927 adapter->slow_intr_mask |= F_PL_INTR_EXT; in ext_intr_task()
928 writel(F_PL_INTR_EXT, adapter->regs + A_PL_CAUSE); in ext_intr_task()
929 writel(adapter->slow_intr_mask | F_PL_INTR_SGE_DATA, in ext_intr_task()
930 adapter->regs + A_PL_ENABLE); in ext_intr_task()
931 spin_unlock_irq(&adapter->async_lock); in ext_intr_task()
937 void t1_elmer0_ext_intr(struct adapter *adapter) in t1_elmer0_ext_intr() argument
944 adapter->slow_intr_mask &= ~F_PL_INTR_EXT; in t1_elmer0_ext_intr()
945 writel(adapter->slow_intr_mask | F_PL_INTR_SGE_DATA, in t1_elmer0_ext_intr()
946 adapter->regs + A_PL_ENABLE); in t1_elmer0_ext_intr()
947 schedule_work(&adapter->ext_intr_handler_task); in t1_elmer0_ext_intr()
950 void t1_fatal_err(struct adapter *adapter) in t1_fatal_err() argument
952 if (adapter->flags & FULL_INIT_DONE) { in t1_fatal_err()
953 t1_sge_stop(adapter->sge); in t1_fatal_err()
954 t1_interrupts_disable(adapter); in t1_fatal_err()
957 adapter->name); in t1_fatal_err()
985 struct adapter *adapter = NULL; in init_one() local
1035 netdev = alloc_etherdev(adapter ? 0 : sizeof(*adapter)); in init_one()
1043 if (!adapter) { in init_one()
1044 adapter = netdev_priv(netdev); in init_one()
1045 adapter->pdev = pdev; in init_one()
1046 adapter->port[0].dev = netdev; /* so we don't leak it */ in init_one()
1048 adapter->regs = ioremap(mmio_start, mmio_len); in init_one()
1049 if (!adapter->regs) { in init_one()
1056 if (t1_get_board_rev(adapter, bi, &adapter->params)) { in init_one()
1061 adapter->name = pci_name(pdev); in init_one()
1062 adapter->msg_enable = dflt_msg_enable; in init_one()
1063 adapter->mmio_len = mmio_len; in init_one()
1065 spin_lock_init(&adapter->tpi_lock); in init_one()
1066 spin_lock_init(&adapter->work_lock); in init_one()
1067 spin_lock_init(&adapter->async_lock); in init_one()
1068 spin_lock_init(&adapter->mac_lock); in init_one()
1070 INIT_WORK(&adapter->ext_intr_handler_task, in init_one()
1072 INIT_DELAYED_WORK(&adapter->stats_update_task, in init_one()
1078 pi = &adapter->port[i]; in init_one()
1085 netdev->ml_priv = adapter; in init_one()
1093 if (vlan_tso_capable(adapter)) { in init_one()
1099 if (!(is_T2(adapter)) || bi->port_number != 4) { in init_one()
1109 netif_napi_add(netdev, &adapter->napi, t1_poll, 64); in init_one()
1114 if (t1_init_sw_modules(adapter, bi) < 0) { in init_one()
1126 err = register_netdev(adapter->port[i].dev); in init_one()
1129 pci_name(pdev), adapter->port[i].dev->name); in init_one()
1135 if (!adapter->registered_device_map) in init_one()
1136 adapter->name = adapter->port[i].dev->name; in init_one()
1138 __set_bit(i, &adapter->registered_device_map); in init_one()
1141 if (!adapter->registered_device_map) { in init_one()
1147 printk(KERN_INFO "%s: %s (rev %d), %s %dMHz/%d-bit\n", adapter->name, in init_one()
1148 bi->desc, adapter->params.chip_revision, in init_one()
1149 adapter->params.pci.is_pcix ? "PCIX" : "PCI", in init_one()
1150 adapter->params.pci.speed, adapter->params.pci.width); in init_one()
1156 adapter->t1powersave = LCLOCK; /* HW default is powersave mode. */ in init_one()
1158 adapter->t1powersave = HCLOCK; in init_one()
1159 if (t1_is_T1B(adapter)) in init_one()
1160 t1_clock(adapter, t1powersave); in init_one()
1165 t1_free_sw_modules(adapter); in init_one()
1167 if (adapter) { in init_one()
1168 if (adapter->regs) in init_one()
1169 iounmap(adapter->regs); in init_one()
1171 if (adapter->port[i].dev) in init_one()
1172 free_netdev(adapter->port[i].dev); in init_one()
1181 static void bit_bang(struct adapter *adapter, int bitdata, int nbits) in bit_bang() argument
1197 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in bit_bang()
1208 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in bit_bang()
1214 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in bit_bang()
1219 static int t1_clock(struct adapter *adapter, int mode) in t1_clock() argument
1242 if (!t1_is_T1B(adapter)) in t1_clock()
1248 if ((adapter->t1powersave & 1) == (mode & 1)) in t1_clock()
1254 adapter->t1powersave = HCLOCK; /* overclock */ in t1_clock()
1258 adapter->t1powersave = LCLOCK; /* underclock */ in t1_clock()
1262 spin_lock(&adapter->tpi_lock); in t1_clock()
1265 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1268 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1270 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1273 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1277 bit_bang(adapter, T_CORE_VAL, T_CORE_BITS); in t1_clock()
1278 bit_bang(adapter, N_CORE_VAL, N_CORE_BITS); in t1_clock()
1279 bit_bang(adapter, M_CORE_VAL, M_CORE_BITS); in t1_clock()
1283 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1286 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1288 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1291 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1295 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1298 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1300 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1304 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1308 bit_bang(adapter, T_MEM_VAL, T_MEM_BITS); in t1_clock()
1309 bit_bang(adapter, N_MEM_VAL, N_MEM_BITS); in t1_clock()
1310 bit_bang(adapter, M_MEM_VAL, M_MEM_BITS); in t1_clock()
1314 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1317 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1319 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1322 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1324 spin_unlock(&adapter->tpi_lock); in t1_clock()
1338 struct adapter *adapter = dev->ml_priv; in remove_one() local
1341 for_each_port(adapter, i) { in remove_one()
1342 if (test_bit(i, &adapter->registered_device_map)) in remove_one()
1343 unregister_netdev(adapter->port[i].dev); in remove_one()
1346 t1_free_sw_modules(adapter); in remove_one()
1347 iounmap(adapter->regs); in remove_one()
1350 if (adapter->port[i].dev) in remove_one()
1351 free_netdev(adapter->port[i].dev); in remove_one()