Lines Matching refs:adapter

60 static inline void schedule_mac_stats_update(struct adapter *ap, int secs)  in schedule_mac_stats_update()
65 static inline void cancel_mac_stats_update(struct adapter *ap) in cancel_mac_stats_update()
102 static int t1_clock(struct adapter *adapter, int mode);
121 struct adapter *adapter = dev->ml_priv; in t1_set_rxmode() local
122 struct cmac *mac = adapter->port[dev->if_port].mac; in t1_set_rxmode()
148 void t1_link_negotiated(struct adapter *adapter, int port_id, int link_stat, in t1_link_negotiated() argument
151 struct port_info *p = &adapter->port[port_id]; in t1_link_negotiated()
161 if ((speed > 0) && (adapter->params.nports > 1)) { in t1_link_negotiated()
174 t1_sched_update_parms(adapter->sge, port_id, 0, sched_speed); in t1_link_negotiated()
191 static void enable_hw_csum(struct adapter *adapter) in enable_hw_csum() argument
193 if (adapter->port[0].dev->hw_features & NETIF_F_TSO) in enable_hw_csum()
194 t1_tp_set_ip_checksum_offload(adapter->tp, 1); /* for TSO only */ in enable_hw_csum()
195 t1_tp_set_tcp_checksum_offload(adapter->tp, 1); in enable_hw_csum()
202 static int cxgb_up(struct adapter *adapter) in cxgb_up() argument
206 if (!(adapter->flags & FULL_INIT_DONE)) { in cxgb_up()
207 err = t1_init_hw_modules(adapter); in cxgb_up()
211 enable_hw_csum(adapter); in cxgb_up()
212 adapter->flags |= FULL_INIT_DONE; in cxgb_up()
215 t1_interrupts_clear(adapter); in cxgb_up()
217 adapter->params.has_msi = !disable_msi && !pci_enable_msi(adapter->pdev); in cxgb_up()
218 err = request_irq(adapter->pdev->irq, t1_interrupt, in cxgb_up()
219 adapter->params.has_msi ? 0 : IRQF_SHARED, in cxgb_up()
220 adapter->name, adapter); in cxgb_up()
222 if (adapter->params.has_msi) in cxgb_up()
223 pci_disable_msi(adapter->pdev); in cxgb_up()
228 t1_sge_start(adapter->sge); in cxgb_up()
229 t1_interrupts_enable(adapter); in cxgb_up()
237 static void cxgb_down(struct adapter *adapter) in cxgb_down() argument
239 t1_sge_stop(adapter->sge); in cxgb_down()
240 t1_interrupts_disable(adapter); in cxgb_down()
241 free_irq(adapter->pdev->irq, adapter); in cxgb_down()
242 if (adapter->params.has_msi) in cxgb_down()
243 pci_disable_msi(adapter->pdev); in cxgb_down()
249 struct adapter *adapter = dev->ml_priv; in cxgb_open() local
250 int other_ports = adapter->open_device_map & PORT_MASK; in cxgb_open()
252 napi_enable(&adapter->napi); in cxgb_open()
253 if (!adapter->open_device_map && (err = cxgb_up(adapter)) < 0) { in cxgb_open()
254 napi_disable(&adapter->napi); in cxgb_open()
258 __set_bit(dev->if_port, &adapter->open_device_map); in cxgb_open()
259 link_start(&adapter->port[dev->if_port]); in cxgb_open()
261 if (!other_ports && adapter->params.stats_update_period) in cxgb_open()
262 schedule_mac_stats_update(adapter, in cxgb_open()
263 adapter->params.stats_update_period); in cxgb_open()
265 t1_vlan_mode(adapter, dev->features); in cxgb_open()
271 struct adapter *adapter = dev->ml_priv; in cxgb_close() local
272 struct port_info *p = &adapter->port[dev->if_port]; in cxgb_close()
276 napi_disable(&adapter->napi); in cxgb_close()
280 clear_bit(dev->if_port, &adapter->open_device_map); in cxgb_close()
281 if (adapter->params.stats_update_period && in cxgb_close()
282 !(adapter->open_device_map & PORT_MASK)) { in cxgb_close()
285 spin_lock(&adapter->work_lock); /* sync with update task */ in cxgb_close()
286 spin_unlock(&adapter->work_lock); in cxgb_close()
287 cancel_mac_stats_update(adapter); in cxgb_close()
290 if (!adapter->open_device_map) in cxgb_close()
291 cxgb_down(adapter); in cxgb_close()
297 struct adapter *adapter = dev->ml_priv; in t1_get_stats() local
298 struct port_info *p = &adapter->port[dev->if_port]; in t1_get_stats()
345 struct adapter *adapter = dev->ml_priv; in get_msglevel() local
347 return adapter->msg_enable; in get_msglevel()
352 struct adapter *adapter = dev->ml_priv; in set_msglevel() local
354 adapter->msg_enable = val; in set_msglevel()
433 struct adapter *adapter = dev->ml_priv; in get_drvinfo() local
437 strlcpy(info->bus_info, pci_name(adapter->pdev), in get_drvinfo()
460 struct adapter *adapter = dev->ml_priv; in get_stats() local
461 struct cmac *mac = adapter->port[dev->if_port].mac; in get_stats()
467 t = t1_sge_get_intr_counts(adapter->sge); in get_stats()
468 t1_sge_get_port_stats(adapter->sge, dev->if_port, &ss); in get_stats()
526 if (adapter->espi) { in get_stats()
529 e = t1_espi_get_intr_counts(adapter->espi); in get_stats()
539 static inline void reg_block_dump(struct adapter *ap, void *buf, in reg_block_dump()
551 struct adapter *ap = dev->ml_priv; in get_regs()
573 struct adapter *adapter = dev->ml_priv; in get_settings() local
574 struct port_info *p = &adapter->port[dev->if_port]; in get_settings()
633 struct adapter *adapter = dev->ml_priv; in set_settings() local
634 struct port_info *p = &adapter->port[dev->if_port]; in set_settings()
669 struct adapter *adapter = dev->ml_priv; in get_pauseparam() local
670 struct port_info *p = &adapter->port[dev->if_port]; in get_pauseparam()
680 struct adapter *adapter = dev->ml_priv; in set_pauseparam() local
681 struct port_info *p = &adapter->port[dev->if_port]; in set_pauseparam()
709 struct adapter *adapter = dev->ml_priv; in get_sge_param() local
710 int jumbo_fl = t1_is_T1B(adapter) ? 1 : 0; in get_sge_param()
716 e->rx_pending = adapter->params.sge.freelQ_size[!jumbo_fl]; in get_sge_param()
717 e->rx_jumbo_pending = adapter->params.sge.freelQ_size[jumbo_fl]; in get_sge_param()
718 e->tx_pending = adapter->params.sge.cmdQ_size[0]; in get_sge_param()
723 struct adapter *adapter = dev->ml_priv; in set_sge_param() local
724 int jumbo_fl = t1_is_T1B(adapter) ? 1 : 0; in set_sge_param()
731 e->tx_pending < (adapter->params.nports + 1) * (MAX_SKB_FRAGS + 1)) in set_sge_param()
734 if (adapter->flags & FULL_INIT_DONE) in set_sge_param()
737 adapter->params.sge.freelQ_size[!jumbo_fl] = e->rx_pending; in set_sge_param()
738 adapter->params.sge.freelQ_size[jumbo_fl] = e->rx_jumbo_pending; in set_sge_param()
739 adapter->params.sge.cmdQ_size[0] = e->tx_pending; in set_sge_param()
740 adapter->params.sge.cmdQ_size[1] = e->tx_pending > MAX_CMDQ1_ENTRIES ? in set_sge_param()
747 struct adapter *adapter = dev->ml_priv; in set_coalesce() local
749 adapter->params.sge.rx_coalesce_usecs = c->rx_coalesce_usecs; in set_coalesce()
750 adapter->params.sge.coalesce_enable = c->use_adaptive_rx_coalesce; in set_coalesce()
751 adapter->params.sge.sample_interval_usecs = c->rate_sample_interval; in set_coalesce()
752 t1_sge_set_coalesce_params(adapter->sge, &adapter->params.sge); in set_coalesce()
758 struct adapter *adapter = dev->ml_priv; in get_coalesce() local
760 c->rx_coalesce_usecs = adapter->params.sge.rx_coalesce_usecs; in get_coalesce()
761 c->rate_sample_interval = adapter->params.sge.sample_interval_usecs; in get_coalesce()
762 c->use_adaptive_rx_coalesce = adapter->params.sge.coalesce_enable; in get_coalesce()
768 struct adapter *adapter = dev->ml_priv; in get_eeprom_len() local
770 return t1_is_asic(adapter) ? EEPROM_SIZE : 0; in get_eeprom_len()
781 struct adapter *adapter = dev->ml_priv; in get_eeprom() local
783 e->magic = EEPROM_MAGIC(adapter); in get_eeprom()
785 t1_seeprom_read(adapter, i, (__le32 *)&buf[i]); in get_eeprom()
814 struct adapter *adapter = dev->ml_priv; in t1_ioctl() local
815 struct mdio_if_info *mdio = &adapter->port[dev->if_port].phy->mdio; in t1_ioctl()
823 struct adapter *adapter = dev->ml_priv; in t1_change_mtu() local
824 struct cmac *mac = adapter->port[dev->if_port].mac; in t1_change_mtu()
838 struct adapter *adapter = dev->ml_priv; in t1_set_mac_addr() local
839 struct cmac *mac = adapter->port[dev->if_port].mac; in t1_set_mac_addr()
868 struct adapter *adapter = dev->ml_priv; in t1_set_features() local
871 t1_vlan_mode(adapter, features); in t1_set_features()
879 struct adapter *adapter = dev->ml_priv; in t1_netpoll() local
882 t1_interrupt(adapter->pdev->irq, adapter); in t1_netpoll()
894 struct adapter *adapter = in mac_stats_task() local
895 container_of(work, struct adapter, stats_update_task.work); in mac_stats_task()
897 for_each_port(adapter, i) { in mac_stats_task()
898 struct port_info *p = &adapter->port[i]; in mac_stats_task()
906 spin_lock(&adapter->work_lock); in mac_stats_task()
907 if (adapter->open_device_map & PORT_MASK) in mac_stats_task()
908 schedule_mac_stats_update(adapter, in mac_stats_task()
909 adapter->params.stats_update_period); in mac_stats_task()
910 spin_unlock(&adapter->work_lock); in mac_stats_task()
918 struct adapter *adapter = in ext_intr_task() local
919 container_of(work, struct adapter, ext_intr_handler_task); in ext_intr_task()
921 t1_elmer0_ext_intr_handler(adapter); in ext_intr_task()
924 spin_lock_irq(&adapter->async_lock); in ext_intr_task()
925 adapter->slow_intr_mask |= F_PL_INTR_EXT; in ext_intr_task()
926 writel(F_PL_INTR_EXT, adapter->regs + A_PL_CAUSE); in ext_intr_task()
927 writel(adapter->slow_intr_mask | F_PL_INTR_SGE_DATA, in ext_intr_task()
928 adapter->regs + A_PL_ENABLE); in ext_intr_task()
929 spin_unlock_irq(&adapter->async_lock); in ext_intr_task()
935 void t1_elmer0_ext_intr(struct adapter *adapter) in t1_elmer0_ext_intr() argument
942 adapter->slow_intr_mask &= ~F_PL_INTR_EXT; in t1_elmer0_ext_intr()
943 writel(adapter->slow_intr_mask | F_PL_INTR_SGE_DATA, in t1_elmer0_ext_intr()
944 adapter->regs + A_PL_ENABLE); in t1_elmer0_ext_intr()
945 schedule_work(&adapter->ext_intr_handler_task); in t1_elmer0_ext_intr()
948 void t1_fatal_err(struct adapter *adapter) in t1_fatal_err() argument
950 if (adapter->flags & FULL_INIT_DONE) { in t1_fatal_err()
951 t1_sge_stop(adapter->sge); in t1_fatal_err()
952 t1_interrupts_disable(adapter); in t1_fatal_err()
955 adapter->name); in t1_fatal_err()
980 struct adapter *adapter = NULL; in init_one() local
1026 netdev = alloc_etherdev(adapter ? 0 : sizeof(*adapter)); in init_one()
1034 if (!adapter) { in init_one()
1035 adapter = netdev_priv(netdev); in init_one()
1036 adapter->pdev = pdev; in init_one()
1037 adapter->port[0].dev = netdev; /* so we don't leak it */ in init_one()
1039 adapter->regs = ioremap(mmio_start, mmio_len); in init_one()
1040 if (!adapter->regs) { in init_one()
1047 if (t1_get_board_rev(adapter, bi, &adapter->params)) { in init_one()
1052 adapter->name = pci_name(pdev); in init_one()
1053 adapter->msg_enable = dflt_msg_enable; in init_one()
1054 adapter->mmio_len = mmio_len; in init_one()
1056 spin_lock_init(&adapter->tpi_lock); in init_one()
1057 spin_lock_init(&adapter->work_lock); in init_one()
1058 spin_lock_init(&adapter->async_lock); in init_one()
1059 spin_lock_init(&adapter->mac_lock); in init_one()
1061 INIT_WORK(&adapter->ext_intr_handler_task, in init_one()
1063 INIT_DELAYED_WORK(&adapter->stats_update_task, in init_one()
1069 pi = &adapter->port[i]; in init_one()
1076 netdev->ml_priv = adapter; in init_one()
1084 if (vlan_tso_capable(adapter)) { in init_one()
1091 if (!(is_T2(adapter)) || bi->port_number != 4) { in init_one()
1101 netif_napi_add(netdev, &adapter->napi, t1_poll, 64); in init_one()
1106 if (t1_init_sw_modules(adapter, bi) < 0) { in init_one()
1118 err = register_netdev(adapter->port[i].dev); in init_one()
1121 pci_name(pdev), adapter->port[i].dev->name); in init_one()
1127 if (!adapter->registered_device_map) in init_one()
1128 adapter->name = adapter->port[i].dev->name; in init_one()
1130 __set_bit(i, &adapter->registered_device_map); in init_one()
1133 if (!adapter->registered_device_map) { in init_one()
1140 adapter->name, bi->desc, adapter->params.chip_revision, in init_one()
1141 adapter->params.pci.is_pcix ? "PCIX" : "PCI", in init_one()
1142 adapter->params.pci.speed, adapter->params.pci.width); in init_one()
1148 adapter->t1powersave = LCLOCK; /* HW default is powersave mode. */ in init_one()
1150 adapter->t1powersave = HCLOCK; in init_one()
1151 if (t1_is_T1B(adapter)) in init_one()
1152 t1_clock(adapter, t1powersave); in init_one()
1157 t1_free_sw_modules(adapter); in init_one()
1159 if (adapter) { in init_one()
1160 if (adapter->regs) in init_one()
1161 iounmap(adapter->regs); in init_one()
1163 if (adapter->port[i].dev) in init_one()
1164 free_netdev(adapter->port[i].dev); in init_one()
1172 static void bit_bang(struct adapter *adapter, int bitdata, int nbits) in bit_bang() argument
1188 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in bit_bang()
1199 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in bit_bang()
1205 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in bit_bang()
1210 static int t1_clock(struct adapter *adapter, int mode) in t1_clock() argument
1233 if (!t1_is_T1B(adapter)) in t1_clock()
1239 if ((adapter->t1powersave & 1) == (mode & 1)) in t1_clock()
1245 adapter->t1powersave = HCLOCK; /* overclock */ in t1_clock()
1249 adapter->t1powersave = LCLOCK; /* underclock */ in t1_clock()
1253 spin_lock(&adapter->tpi_lock); in t1_clock()
1256 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1259 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1261 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1264 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1268 bit_bang(adapter, T_CORE_VAL, T_CORE_BITS); in t1_clock()
1269 bit_bang(adapter, N_CORE_VAL, N_CORE_BITS); in t1_clock()
1270 bit_bang(adapter, M_CORE_VAL, M_CORE_BITS); in t1_clock()
1274 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1277 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1279 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1282 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1286 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1289 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1291 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1295 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1299 bit_bang(adapter, T_MEM_VAL, T_MEM_BITS); in t1_clock()
1300 bit_bang(adapter, N_MEM_VAL, N_MEM_BITS); in t1_clock()
1301 bit_bang(adapter, M_MEM_VAL, M_MEM_BITS); in t1_clock()
1305 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1308 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1310 __t1_tpi_read(adapter, A_ELMER0_GPO, &val); in t1_clock()
1313 __t1_tpi_write(adapter, A_ELMER0_GPO, val); in t1_clock()
1315 spin_unlock(&adapter->tpi_lock); in t1_clock()
1329 struct adapter *adapter = dev->ml_priv; in remove_one() local
1332 for_each_port(adapter, i) { in remove_one()
1333 if (test_bit(i, &adapter->registered_device_map)) in remove_one()
1334 unregister_netdev(adapter->port[i].dev); in remove_one()
1337 t1_free_sw_modules(adapter); in remove_one()
1338 iounmap(adapter->regs); in remove_one()
1341 if (adapter->port[i].dev) in remove_one()
1342 free_netdev(adapter->port[i].dev); in remove_one()