Lines Matching refs:adapter

187 static int cfg_queues(struct adapter *adap);
237 struct adapter *adap = pi->adapter; in dcb_tx_queue_prio_enable()
283 void t4_os_link_changed(struct adapter *adapter, int port_id, int link_stat) in t4_os_link_changed() argument
285 struct net_device *dev = adapter->port[port_id]; in t4_os_link_changed()
305 void t4_os_portmod_changed(struct adapter *adap, int port_id) in t4_os_portmod_changed()
350 struct adapter *adap = pi->adapter; in cxgb4_set_addr_hash()
367 struct adapter *adap = pi->adapter; in cxgb4_mac_sync()
405 struct adapter *adap = pi->adapter; in cxgb4_mac_unsync()
432 struct adapter *adapter = pi->adapter; in set_rxmode() local
437 return t4_set_rxmode(adapter, adapter->mbox, pi->viid, pi->viid_mirror, in set_rxmode()
464 struct adapter *adapter = pi->adapter; in cxgb4_change_mac() local
468 ret = t4_change_mac(adapter, adapter->mbox, viid, in cxgb4_change_mac()
475 list_for_each_entry(entry, &adapter->mac_hlist, list) { in cxgb4_change_mac()
486 list_add_tail(&new_entry->list, &adapter->mac_hlist); in cxgb4_change_mac()
506 unsigned int mb = pi->adapter->mbox; in link_start()
513 ret = t4_set_rxmode(pi->adapter, mb, pi->viid, pi->viid_mirror, in link_start()
520 ret = t4_link_l1cfg(pi->adapter, mb, pi->tx_chan, in link_start()
524 ret = t4_enable_pi_params(pi->adapter, mb, pi, true, in link_start()
534 static void dcb_rpl(struct adapter *adap, const struct fw_port_cmd *pcmd) in dcb_rpl()
661 static void disable_msi(struct adapter *adapter) in disable_msi() argument
663 if (adapter->flags & CXGB4_USING_MSIX) { in disable_msi()
664 pci_disable_msix(adapter->pdev); in disable_msi()
665 adapter->flags &= ~CXGB4_USING_MSIX; in disable_msi()
666 } else if (adapter->flags & CXGB4_USING_MSI) { in disable_msi()
667 pci_disable_msi(adapter->pdev); in disable_msi()
668 adapter->flags &= ~CXGB4_USING_MSI; in disable_msi()
677 struct adapter *adap = cookie; in t4_nondata_intr()
689 int cxgb4_set_msix_aff(struct adapter *adap, unsigned short vec, in cxgb4_set_msix_aff()
717 static int request_msix_queue_irqs(struct adapter *adap) in request_msix_queue_irqs()
757 static void free_msix_queue_irqs(struct adapter *adap) in free_msix_queue_irqs()
771 static int setup_ppod_edram(struct adapter *adap) in setup_ppod_edram()
805 static void adap_config_hpfilter(struct adapter *adapter) in adap_config_hpfilter() argument
814 ret = t4_set_params(adapter, adapter->mbox, adapter->pf, 0, in adap_config_hpfilter()
821 dev_err(adapter->pdev_dev, in adap_config_hpfilter()
828 struct adapter *adap = pi->adapter; in cxgb4_config_rss()
861 struct adapter *adapter = pi->adapter; in cxgb4_write_rss() local
866 rxq = &adapter->sge.ethrxq[pi->first_qset]; in cxgb4_write_rss()
886 static int setup_rss(struct adapter *adap) in setup_rss()
922 static void quiesce_rx(struct adapter *adap) in quiesce_rx()
937 static void disable_interrupts(struct adapter *adap) in disable_interrupts()
954 void cxgb4_enable_rx(struct adapter *adap, struct sge_rspq *q) in cxgb4_enable_rx()
968 static void enable_rx(struct adapter *adap) in enable_rx()
982 static int setup_non_data_intr(struct adapter *adap) in setup_non_data_intr()
1003 static int setup_fw_sge_queues(struct adapter *adap) in setup_fw_sge_queues()
1045 static int setup_sge_queues(struct adapter *adap) in setup_sge_queues()
1243 struct adapter *adap = q->adap; in cxgb4_set_rspq_intr_params()
1281 err = t4_set_rxmode(pi->adapter, pi->adapter->mbox, pi->viid, in cxgb_set_features()
1289 static int setup_debugfs(struct adapter *adap) in setup_debugfs()
1300 static void cxgb4_port_mirror_free_rxq(struct adapter *adap, in cxgb4_port_mirror_free_rxq()
1320 struct adapter *adap = netdev2adap(dev); in cxgb4_port_mirror_alloc_queues()
1427 struct adapter *adap = netdev2adap(dev); in cxgb4_port_mirror_free_queues()
1448 struct adapter *adap = netdev2adap(dev); in cxgb4_port_mirror_start()
1504 struct adapter *adap = netdev2adap(dev); in cxgb4_port_mirror_stop()
1516 struct adapter *adap = netdev2adap(dev); in cxgb4_port_mirror_alloc()
1564 struct adapter *adap = netdev2adap(dev); in cxgb4_port_mirror_free()
1746 struct adapter *adap = container_of(t, struct adapter, tids); in cxgb4_queue_tid_release()
1766 struct adapter *adap; in process_tid_release_list()
1768 adap = container_of(work, struct adapter, tid_release_task); in process_tid_release_list()
1799 struct adapter *adap = container_of(t, struct adapter, tids); in cxgb4_remove_tid()
1834 struct adapter *adap = container_of(t, struct adapter, tids); in tid_init()
1928 struct adapter *adap; in cxgb4_create_server()
1969 struct adapter *adap; in cxgb4_create_server6()
2000 struct adapter *adap; in cxgb4_remove_server()
2140 struct adapter *adap = netdev2adap(dev); in cxgb4_dbfifo_count()
2183 struct adapter *adap = pci_get_drvdata(pdev); in cxgb4_get_tcp_stats()
2194 struct adapter *adap = netdev2adap(dev); in cxgb4_iscsi_init()
2205 struct adapter *adap = netdev2adap(dev); in cxgb4_flush_eq_cache()
2211 static int read_eq_indices(struct adapter *adap, u16 qid, u16 *pidx, u16 *cidx) in read_eq_indices()
2232 struct adapter *adap = netdev2adap(dev); in cxgb4_sync_txq_pidx()
2267 struct adapter *adap; in cxgb4_read_tpte()
2341 struct adapter *adap; in cxgb4_read_sge_timestamp()
2402 static void drain_db_fifo(struct adapter *adap, int usecs) in drain_db_fifo()
2433 static void enable_txq_db(struct adapter *adap, struct sge_txq *q) in enable_txq_db()
2449 static void disable_dbs(struct adapter *adap) in disable_dbs()
2471 static void enable_dbs(struct adapter *adap) in enable_dbs()
2493 static void notify_rdma_uld(struct adapter *adap, enum cxgb4_control cmd) in notify_rdma_uld()
2503 struct adapter *adap; in process_db_full()
2505 adap = container_of(work, struct adapter, db_full_task); in process_db_full()
2519 static void sync_txq_pidx(struct adapter *adap, struct sge_txq *q) in sync_txq_pidx()
2553 static void recover_all_queues(struct adapter *adap) in recover_all_queues()
2576 struct adapter *adap; in process_db_drop()
2578 adap = container_of(work, struct adapter, db_drop_task); in process_db_drop()
2613 void t4_db_full(struct adapter *adap) in t4_db_full()
2624 void t4_db_dropped(struct adapter *adap) in t4_db_dropped()
2641 static void detach_ulds(struct adapter *adap) in detach_ulds()
2663 static void notify_ulds(struct adapter *adap, enum cxgb4_state new_state) in notify_ulds()
2683 struct adapter *adap; in cxgb4_inet6addr_handler()
2730 static void update_clip(const struct adapter *adap) in update_clip()
2762 static int cxgb_up(struct adapter *adap) in cxgb_up()
2822 static void cxgb_down(struct adapter *adapter) in cxgb_down() argument
2824 cancel_work_sync(&adapter->tid_release_task); in cxgb_down()
2825 cancel_work_sync(&adapter->db_full_task); in cxgb_down()
2826 cancel_work_sync(&adapter->db_drop_task); in cxgb_down()
2827 adapter->tid_release_task_busy = false; in cxgb_down()
2828 adapter->tid_release_head = NULL; in cxgb_down()
2830 t4_sge_stop(adapter); in cxgb_down()
2831 t4_free_sge_resources(adapter); in cxgb_down()
2833 adapter->flags &= ~CXGB4_FULL_INIT_DONE; in cxgb_down()
2842 struct adapter *adapter = pi->adapter; in cxgb_open() local
2847 if (!(adapter->flags & CXGB4_FULL_INIT_DONE)) { in cxgb_open()
2848 err = cxgb_up(adapter); in cxgb_open()
2890 struct adapter *adapter = pi->adapter; in cxgb_close() local
2895 ret = t4_enable_pi_params(adapter, adapter->pf, pi, in cxgb_close()
2920 struct adapter *adap; in cxgb4_create_server_filter()
2988 struct adapter *adap; in cxgb4_remove_server_filter()
3009 struct adapter *adapter = p->adapter; in cxgb_get_stats() local
3015 spin_lock(&adapter->stats_lock); in cxgb_get_stats()
3017 spin_unlock(&adapter->stats_lock); in cxgb_get_stats()
3020 t4_get_port_stats_offset(adapter, p->tx_chan, &stats, in cxgb_get_stats()
3022 spin_unlock(&adapter->stats_lock); in cxgb_get_stats()
3059 struct adapter *adapter = pi->adapter; in cxgb_ioctl() local
3080 mbox = pi->adapter->pf; in cxgb_ioctl()
3082 ret = t4_mdio_rd(pi->adapter, mbox, prtad, devad, in cxgb_ioctl()
3085 ret = t4_mdio_wr(pi->adapter, mbox, prtad, devad, in cxgb_ioctl()
3097 if (!is_t4(adapter->params.chip)) { in cxgb_ioctl()
3135 if (cxgb4_ptp_txtype(adapter, pi->port_id) >= 0) in cxgb_ioctl()
3141 if (cxgb4_ptp_redirect_rx_packet(adapter, in cxgb_ioctl()
3180 ret = t4_set_rxmode(pi->adapter, pi->adapter->mbox, pi->viid, in cxgb_change_mtu()
3198 static void cxgb4_mgmt_fill_vf_station_mac_addr(struct adapter *adap) in cxgb4_mgmt_fill_vf_station_mac_addr()
3236 struct adapter *adap = pi->adapter; in cxgb4_mgmt_set_vf_mac()
3241 dev_err(pi->adapter->pdev_dev, in cxgb4_mgmt_set_vf_mac()
3247 dev_info(pi->adapter->pdev_dev, in cxgb4_mgmt_set_vf_mac()
3259 struct adapter *adap = pi->adapter; in cxgb4_mgmt_get_vf_config()
3281 phy_port_id = pi->adapter->adap_idx * 10 + pi->port_id; in cxgb4_mgmt_get_phys_port_id()
3291 struct adapter *adap = pi->adapter; in cxgb4_mgmt_set_vf_rate()
3392 struct adapter *adap = pi->adapter; in cxgb4_mgmt_set_vf_vlan()
3416 struct adapter *adap = pi->adapter; in cxgb4_mgmt_set_vf_link_state()
3478 struct adapter *adap = pi->adapter; in cxgb_netpoll()
3494 struct adapter *adap = pi->adapter; in cxgb_set_tx_maxrate()
3613 struct adapter *adap = netdev2adap(dev); in cxgb_setup_tc_matchall()
3639 struct adapter *adap = netdev2adap(dev); in cxgb_setup_tc_block_ingress_cb()
3668 struct adapter *adap = netdev2adap(dev); in cxgb_setup_tc_block_egress_cb()
3693 struct adapter *adap = netdev2adap(dev); in cxgb_setup_tc_mqprio()
3741 struct adapter *adapter = pi->adapter; in cxgb_udp_tunnel_unset_port() local
3747 adapter->vxlan_port = 0; in cxgb_udp_tunnel_unset_port()
3748 t4_write_reg(adapter, MPS_RX_VXLAN_TYPE_A, 0); in cxgb_udp_tunnel_unset_port()
3751 adapter->geneve_port = 0; in cxgb_udp_tunnel_unset_port()
3752 t4_write_reg(adapter, MPS_RX_GENEVE_TYPE_A, 0); in cxgb_udp_tunnel_unset_port()
3761 if (!adapter->rawf_cnt) in cxgb_udp_tunnel_unset_port()
3763 for_each_port(adapter, i) { in cxgb_udp_tunnel_unset_port()
3764 pi = adap2pinfo(adapter, i); in cxgb_udp_tunnel_unset_port()
3765 ret = t4_free_raw_mac_filt(adapter, pi->viid, in cxgb_udp_tunnel_unset_port()
3767 adapter->rawf_start + pi->port_id, in cxgb_udp_tunnel_unset_port()
3784 struct adapter *adapter = pi->adapter; in cxgb_udp_tunnel_set_port() local
3790 adapter->vxlan_port = ti->port; in cxgb_udp_tunnel_set_port()
3791 t4_write_reg(adapter, MPS_RX_VXLAN_TYPE_A, in cxgb_udp_tunnel_set_port()
3795 adapter->geneve_port = ti->port; in cxgb_udp_tunnel_set_port()
3796 t4_write_reg(adapter, MPS_RX_GENEVE_TYPE_A, in cxgb_udp_tunnel_set_port()
3809 for_each_port(adapter, i) { in cxgb_udp_tunnel_set_port()
3810 pi = adap2pinfo(adapter, i); in cxgb_udp_tunnel_set_port()
3812 ret = t4_alloc_raw_mac_filt(adapter, pi->viid, in cxgb_udp_tunnel_set_port()
3815 adapter->rawf_start + pi->port_id, in cxgb_udp_tunnel_set_port()
3841 struct adapter *adapter = pi->adapter; in cxgb_features_check() local
3843 if (CHELSIO_CHIP_VERSION(adapter->params.chip) < CHELSIO_T6) in cxgb_features_check()
3903 struct adapter *adapter = netdev2adap(dev); in cxgb4_mgmt_get_drvinfo() local
3906 strscpy(info->bus_info, pci_name(adapter->pdev), in cxgb4_mgmt_get_drvinfo()
3917 struct adapter *adap; in notify_fatal_err()
3919 adap = container_of(work, struct adapter, fatal_err_notify_task); in notify_fatal_err()
3923 void t4_fatal_err(struct adapter *adap) in t4_fatal_err()
3950 static void setup_memwin(struct adapter *adap) in setup_memwin()
3957 static void setup_memwin_rdma(struct adapter *adap) in setup_memwin_rdma()
3999 static void adap_free_hma_mem(struct adapter *adapter) in adap_free_hma_mem() argument
4005 if (!adapter->hma.sgt) in adap_free_hma_mem()
4008 if (adapter->hma.flags & HMA_DMA_MAPPED_FLAG) { in adap_free_hma_mem()
4009 dma_unmap_sg(adapter->pdev_dev, adapter->hma.sgt->sgl, in adap_free_hma_mem()
4010 adapter->hma.sgt->nents, DMA_BIDIRECTIONAL); in adap_free_hma_mem()
4011 adapter->hma.flags &= ~HMA_DMA_MAPPED_FLAG; in adap_free_hma_mem()
4014 for_each_sg(adapter->hma.sgt->sgl, iter, in adap_free_hma_mem()
4015 adapter->hma.sgt->orig_nents, i) { in adap_free_hma_mem()
4021 kfree(adapter->hma.phy_addr); in adap_free_hma_mem()
4022 sg_free_table(adapter->hma.sgt); in adap_free_hma_mem()
4023 kfree(adapter->hma.sgt); in adap_free_hma_mem()
4024 adapter->hma.sgt = NULL; in adap_free_hma_mem()
4027 static int adap_config_hma(struct adapter *adapter) in adap_config_hma() argument
4043 CHELSIO_CHIP_VERSION(adapter->params.chip) < CHELSIO_T6) in adap_config_hma()
4049 ret = t4_query_params(adapter, adapter->mbox, adapter->pf, 0, in adap_config_hma()
4059 dev_err(adapter->pdev_dev, in adap_config_hma()
4067 adapter->hma.sgt = kzalloc(sizeof(*adapter->hma.sgt), GFP_KERNEL); in adap_config_hma()
4068 if (unlikely(!adapter->hma.sgt)) { in adap_config_hma()
4069 dev_err(adapter->pdev_dev, "HMA SG table allocation failed\n"); in adap_config_hma()
4072 sgt = adapter->hma.sgt; in adap_config_hma()
4077 dev_err(adapter->pdev_dev, "HMA SGL allocation failed\n"); in adap_config_hma()
4078 kfree(adapter->hma.sgt); in adap_config_hma()
4079 adapter->hma.sgt = NULL; in adap_config_hma()
4083 sgl = adapter->hma.sgt->sgl; in adap_config_hma()
4084 node = dev_to_node(adapter->pdev_dev); in adap_config_hma()
4089 dev_err(adapter->pdev_dev, in adap_config_hma()
4097 sgt->nents = dma_map_sg(adapter->pdev_dev, sgl, sgt->orig_nents, in adap_config_hma()
4100 dev_err(adapter->pdev_dev, in adap_config_hma()
4105 adapter->hma.flags |= HMA_DMA_MAPPED_FLAG; in adap_config_hma()
4107 adapter->hma.phy_addr = kcalloc(sgt->nents, sizeof(dma_addr_t), in adap_config_hma()
4109 if (unlikely(!adapter->hma.phy_addr)) in adap_config_hma()
4114 adapter->hma.phy_addr[i] = sg_dma_address(iter); in adap_config_hma()
4157 cpu_to_be64(adapter->hma.phy_addr[j + k]); in adap_config_hma()
4159 ret = t4_wr_mbox(adapter, adapter->mbox, &hma_cmd, in adap_config_hma()
4162 dev_err(adapter->pdev_dev, in adap_config_hma()
4169 dev_info(adapter->pdev_dev, in adap_config_hma()
4174 adap_free_hma_mem(adapter); in adap_config_hma()
4178 static int adap_init1(struct adapter *adap, struct fw_caps_config_cmd *c) in adap_init1()
4283 static int adap_init0_tweaks(struct adapter *adapter) in adap_init0_tweaks() argument
4290 t4_fixup_host_params(adapter, PAGE_SIZE, L1_CACHE_BYTES); in adap_init0_tweaks()
4296 dev_err(&adapter->pdev->dev, in adap_init0_tweaks()
4301 t4_set_reg_field(adapter, SGE_CONTROL_A, in adap_init0_tweaks()
4309 t4_tp_wr_bits_indirect(adapter, TP_INGRESS_CONFIG_A, in adap_init0_tweaks()
4383 static int adap_init0_phy(struct adapter *adap) in adap_init0_phy()
4453 static int adap_init0_config(struct adapter *adapter, int reset) in adap_init0_config() argument
4468 ret = t4_fw_reset(adapter, adapter->mbox, in adap_init0_config()
4479 if (is_10gbt_device(adapter->pdev->device)) { in adap_init0_config()
4480 ret = adap_init0_phy(adapter); in adap_init0_config()
4489 switch (CHELSIO_CHIP_VERSION(adapter->params.chip)) { in adap_init0_config()
4500 dev_err(adapter->pdev_dev, "Device %d is not supported\n", in adap_init0_config()
4501 adapter->pdev->device); in adap_init0_config()
4506 ret = request_firmware(&cf, fw_config_file, adapter->pdev_dev); in adap_init0_config()
4510 maddr = t4_flash_cfg_addr(adapter); in adap_init0_config()
4523 ret = t4_query_params(adapter, adapter->mbox, in adap_init0_config()
4524 adapter->pf, 0, 1, params, val); in adap_init0_config()
4543 spin_lock(&adapter->win0_lock); in adap_init0_config()
4544 ret = t4_memory_rw(adapter, 0, mtype, maddr, in adap_init0_config()
4556 ret = t4_memory_rw(adapter, 0, mtype, in adap_init0_config()
4561 spin_unlock(&adapter->win0_lock); in adap_init0_config()
4577 ret = t4_set_params(adapter, adapter->mbox, adapter->pf, 0, in adap_init0_config()
4584 dev_warn(adapter->pdev_dev, in adap_init0_config()
4604 ret = t4_wr_mbox(adapter, adapter->mbox, &caps_cmd, sizeof(caps_cmd), in adap_init0_config()
4620 ret = t4_wr_mbox(adapter, adapter->mbox, &caps_cmd, in adap_init0_config()
4633 dev_warn(adapter->pdev_dev, "Configuration File checksum "\ in adap_init0_config()
4645 ret = t4_wr_mbox(adapter, adapter->mbox, &caps_cmd, sizeof(caps_cmd), in adap_init0_config()
4654 ret = adap_init0_tweaks(adapter); in adap_init0_config()
4659 ret = adap_config_hma(adapter); in adap_init0_config()
4661 dev_err(adapter->pdev_dev, in adap_init0_config()
4664 if (is_t6(adapter->params.chip)) { in adap_init0_config()
4665 adap_config_hpfilter(adapter); in adap_init0_config()
4666 ret = setup_ppod_edram(adapter); in adap_init0_config()
4668 dev_info(adapter->pdev_dev, "Successfully enabled " in adap_init0_config()
4676 ret = t4_fw_initialize(adapter, adapter->mbox); in adap_init0_config()
4683 dev_info(adapter->pdev_dev, "Successfully configured using Firmware "\ in adap_init0_config()
4695 dev_warn(adapter->pdev_dev, "\"%s\" configuration file error %d\n", in adap_init0_config()
4761 static int adap_init0(struct adapter *adap, int vpd_skip) in adap_init0()
5431 struct adapter *adap = pci_get_drvdata(pdev); in eeh_err_detected()
5464 struct adapter *adap = pci_get_drvdata(pdev); in eeh_slot_reset()
5527 struct adapter *adap = pci_get_drvdata(pdev); in eeh_resume()
5548 struct adapter *adapter = pci_get_drvdata(pdev); in eeh_reset_prepare() local
5551 if (adapter->pf != 4) in eeh_reset_prepare()
5554 adapter->flags &= ~CXGB4_FW_OK; in eeh_reset_prepare()
5556 notify_ulds(adapter, CXGB4_STATE_DOWN); in eeh_reset_prepare()
5558 for_each_port(adapter, i) in eeh_reset_prepare()
5559 if (adapter->port[i]->reg_state == NETREG_REGISTERED) in eeh_reset_prepare()
5560 cxgb_close(adapter->port[i]); in eeh_reset_prepare()
5562 disable_interrupts(adapter); in eeh_reset_prepare()
5563 cxgb4_free_mps_ref_entries(adapter); in eeh_reset_prepare()
5565 adap_free_hma_mem(adapter); in eeh_reset_prepare()
5567 if (adapter->flags & CXGB4_FULL_INIT_DONE) in eeh_reset_prepare()
5568 cxgb_down(adapter); in eeh_reset_prepare()
5573 struct adapter *adapter = pci_get_drvdata(pdev); in eeh_reset_done() local
5576 if (adapter->pf != 4) in eeh_reset_done()
5579 err = t4_wait_dev_ready(adapter->regs); in eeh_reset_done()
5581 dev_err(adapter->pdev_dev, in eeh_reset_done()
5586 setup_memwin(adapter); in eeh_reset_done()
5588 err = adap_init0(adapter, 1); in eeh_reset_done()
5590 dev_err(adapter->pdev_dev, in eeh_reset_done()
5595 setup_memwin_rdma(adapter); in eeh_reset_done()
5597 if (adapter->flags & CXGB4_FW_OK) { in eeh_reset_done()
5598 err = t4_port_init(adapter, adapter->pf, adapter->pf, 0); in eeh_reset_done()
5600 dev_err(adapter->pdev_dev, in eeh_reset_done()
5606 err = cfg_queues(adapter); in eeh_reset_done()
5608 dev_err(adapter->pdev_dev, in eeh_reset_done()
5613 cxgb4_init_mps_ref_entries(adapter); in eeh_reset_done()
5615 err = setup_fw_sge_queues(adapter); in eeh_reset_done()
5617 dev_err(adapter->pdev_dev, in eeh_reset_done()
5622 for_each_port(adapter, i) in eeh_reset_done()
5623 if (adapter->port[i]->reg_state == NETREG_REGISTERED) in eeh_reset_done()
5624 cxgb_open(adapter->port[i]); in eeh_reset_done()
5653 static int cfg_queues(struct adapter *adap) in cfg_queues()
5820 static void reduce_ethqs(struct adapter *adap, int n) in reduce_ethqs()
5844 static int alloc_msix_info(struct adapter *adap, u32 num_vec) in alloc_msix_info()
5865 static void free_msix_info(struct adapter *adap) in free_msix_info()
5871 int cxgb4_get_msix_idx_from_bmap(struct adapter *adap) in cxgb4_get_msix_idx_from_bmap()
5890 void cxgb4_free_msix_idx_in_bmap(struct adapter *adap, in cxgb4_free_msix_idx_in_bmap()
5904 static int enable_msix(struct adapter *adap) in enable_msix()
6098 static int init_rss(struct adapter *adap) in init_rss()
6118 static void print_adapter_info(struct adapter *adapter) in print_adapter_info() argument
6121 t4_dump_version_info(adapter); in print_adapter_info()
6124 dev_info(adapter->pdev_dev, "Configuration: %sNIC %s, %s capable\n", in print_adapter_info()
6125 is_offload(adapter) ? "R" : "", in print_adapter_info()
6126 ((adapter->flags & CXGB4_USING_MSIX) ? "MSI-X" : in print_adapter_info()
6127 (adapter->flags & CXGB4_USING_MSI) ? "MSI" : ""), in print_adapter_info()
6128 is_offload(adapter) ? "Offload" : "non-Offload"); in print_adapter_info()
6136 const struct adapter *adap = pi->adapter; in print_port_info()
6170 static void free_some_resources(struct adapter *adapter) in free_some_resources() argument
6174 kvfree(adapter->smt); in free_some_resources()
6175 kvfree(adapter->l2t); in free_some_resources()
6176 kvfree(adapter->srq); in free_some_resources()
6177 t4_cleanup_sched(adapter); in free_some_resources()
6178 kvfree(adapter->tids.tid_tab); in free_some_resources()
6179 cxgb4_cleanup_tc_matchall(adapter); in free_some_resources()
6180 cxgb4_cleanup_tc_mqprio(adapter); in free_some_resources()
6181 cxgb4_cleanup_tc_flower(adapter); in free_some_resources()
6182 cxgb4_cleanup_tc_u32(adapter); in free_some_resources()
6183 cxgb4_cleanup_ethtool_filters(adapter); in free_some_resources()
6184 kfree(adapter->sge.egr_map); in free_some_resources()
6185 kfree(adapter->sge.ingr_map); in free_some_resources()
6186 bitmap_free(adapter->sge.starving_fl); in free_some_resources()
6187 bitmap_free(adapter->sge.txq_maperr); in free_some_resources()
6189 bitmap_free(adapter->sge.blocked_fl); in free_some_resources()
6191 disable_msi(adapter); in free_some_resources()
6193 for_each_port(adapter, i) in free_some_resources()
6194 if (adapter->port[i]) { in free_some_resources()
6195 struct port_info *pi = adap2pinfo(adapter, i); in free_some_resources()
6198 t4_free_vi(adapter, adapter->mbox, adapter->pf, in free_some_resources()
6200 kfree(adap2pinfo(adapter, i)->rss); in free_some_resources()
6201 free_netdev(adapter->port[i]); in free_some_resources()
6203 if (adapter->flags & CXGB4_FW_OK) in free_some_resources()
6204 t4_fw_bye(adapter, adapter->pf); in free_some_resources()
6213 static int t4_get_chip_type(struct adapter *adap, int ver) in t4_get_chip_type()
6248 struct adapter *adap = pci_get_drvdata(pdev); in cxgb4_iov_configure()
6346 pi->adapter = adap; in cxgb4_iov_configure()
6393 static int chcr_offload_state(struct adapter *adap, in chcr_offload_state()
6441 struct adapter *adap = netdev2adap(netdev); in cxgb4_ktls_dev_add()
6470 struct adapter *adap = netdev2adap(netdev); in cxgb4_ktls_dev_del()
6495 struct adapter *adap = netdev2adap(x->xso.dev); in cxgb4_xfrm_add_state()
6516 struct adapter *adap = netdev2adap(x->xso.dev); in cxgb4_xfrm_del_state()
6534 struct adapter *adap = netdev2adap(x->xso.dev); in cxgb4_xfrm_free_state()
6552 struct adapter *adap = netdev2adap(x->xso.dev); in cxgb4_ipsec_offload_ok()
6572 struct adapter *adap = netdev2adap(x->xso.dev); in cxgb4_advance_esn_state()
6601 struct adapter *adapter; in init_one() local
6632 adapter = kzalloc(sizeof(*adapter), GFP_KERNEL); in init_one()
6633 if (!adapter) { in init_one()
6638 adapter->regs = regs; in init_one()
6644 whoami = t4_read_reg(adapter, PL_WHOAMI_A); in init_one()
6646 chip = t4_get_chip_type(adapter, CHELSIO_PCI_ID_VER(device_id)); in init_one()
6656 adapter->pdev = pdev; in init_one()
6657 adapter->pdev_dev = &pdev->dev; in init_one()
6658 adapter->name = pci_name(pdev); in init_one()
6659 adapter->mbox = func; in init_one()
6660 adapter->pf = func; in init_one()
6661 adapter->params.chip = chip; in init_one()
6662 adapter->adap_idx = adap_idx; in init_one()
6663 adapter->msg_enable = DFLT_MSG_ENABLE; in init_one()
6664 adapter->mbox_log = kzalloc(sizeof(*adapter->mbox_log) + in init_one()
6668 if (!adapter->mbox_log) { in init_one()
6672 spin_lock_init(&adapter->mbox_lock); in init_one()
6673 INIT_LIST_HEAD(&adapter->mlist.list); in init_one()
6674 adapter->mbox_log->size = T4_OS_LOG_MBOX_CMDS; in init_one()
6675 pci_set_drvdata(pdev, adapter); in init_one()
6692 adapter->workq = create_singlethread_workqueue("cxgb4"); in init_one()
6693 if (!adapter->workq) { in init_one()
6699 adapter->flags |= CXGB4_DEV_ENABLED; in init_one()
6700 memset(adapter->chan_map, 0xff, sizeof(adapter->chan_map)); in init_one()
6717 adapter->flags |= CXGB4_ROOT_NO_RELAXED_ORDERING; in init_one()
6719 spin_lock_init(&adapter->stats_lock); in init_one()
6720 spin_lock_init(&adapter->tid_release_lock); in init_one()
6721 spin_lock_init(&adapter->win0_lock); in init_one()
6723 INIT_WORK(&adapter->tid_release_task, process_tid_release_list); in init_one()
6724 INIT_WORK(&adapter->db_full_task, process_db_full); in init_one()
6725 INIT_WORK(&adapter->db_drop_task, process_db_drop); in init_one()
6726 INIT_WORK(&adapter->fatal_err_notify_task, notify_fatal_err); in init_one()
6728 err = t4_prep_adapter(adapter); in init_one()
6734 err = cxgb4_cudbg_vmcore_add_dump(adapter); in init_one()
6736 dev_warn(adapter->pdev_dev, in init_one()
6743 if (!is_t4(adapter->params.chip)) { in init_one()
6746 adapter->pf); in init_one()
6747 qpp = 1 << QUEUESPERPAGEPF0_G(t4_read_reg(adapter, in init_one()
6762 adapter->bar2 = ioremap_wc(pci_resource_start(pdev, 2), in init_one()
6764 if (!adapter->bar2) { in init_one()
6771 setup_memwin(adapter); in init_one()
6772 err = adap_init0(adapter, 0); in init_one()
6776 setup_memwin_rdma(adapter); in init_one()
6779 if (!is_t4(adapter->params.chip)) in init_one()
6780 t4_write_reg(adapter, SGE_STAT_CFG_A, STATSOURCE_T5_V(7) | in init_one()
6781 (is_t5(adapter->params.chip) ? STATMODE_V(0) : in init_one()
6785 INIT_LIST_HEAD(&adapter->mac_hlist); in init_one()
6787 for_each_port(adapter, i) { in init_one()
6803 adapter->port[i] = netdev; in init_one()
6805 pi->adapter = adapter; in init_one()
6828 if (adapter->rawf_cnt) in init_one()
6835 if (pi->adapter->params.crypto & FW_CAPS_CONFIG_TLS_HW) { in init_one()
6839 refcount_set(&pi->adapter->chcr_ktls.ktls_refcount, 0); in init_one()
6843 if (pi->adapter->params.crypto & FW_CAPS_CONFIG_IPSEC_INLINE) { in init_one()
6865 cxgb4_init_ethtool_dump(adapter); in init_one()
6867 pci_set_drvdata(pdev, adapter); in init_one()
6869 if (adapter->flags & CXGB4_FW_OK) { in init_one()
6870 err = t4_port_init(adapter, func, func, 0); in init_one()
6873 } else if (adapter->params.nports == 1) { in init_one()
6880 u8 *na = adapter->params.vpd.na; in init_one()
6882 err = t4_get_raw_vpd_params(adapter, &adapter->params.vpd); in init_one()
6887 t4_set_hw_addr(adapter, 0, hw_addr); in init_one()
6891 if (!(adapter->flags & CXGB4_FW_OK)) in init_one()
6897 err = cfg_queues(adapter); in init_one()
6901 adapter->smt = t4_init_smt(); in init_one()
6902 if (!adapter->smt) { in init_one()
6907 adapter->l2t = t4_init_l2t(adapter->l2t_start, adapter->l2t_end); in init_one()
6908 if (!adapter->l2t) { in init_one()
6911 adapter->params.offload = 0; in init_one()
6916 (!(t4_read_reg(adapter, LE_DB_CONFIG_A) & ASLIPCOMPEN_F))) { in init_one()
6922 adapter->params.offload = 0; in init_one()
6924 adapter->clipt = t4_init_clip_tbl(adapter->clipt_start, in init_one()
6925 adapter->clipt_end); in init_one()
6926 if (!adapter->clipt) { in init_one()
6932 adapter->params.offload = 0; in init_one()
6937 for_each_port(adapter, i) { in init_one()
6938 pi = adap2pinfo(adapter, i); in init_one()
6939 pi->sched_tbl = t4_init_sched(adapter->params.nsched_cls); in init_one()
6946 if (is_offload(adapter) || is_hashfilter(adapter)) { in init_one()
6947 if (t4_read_reg(adapter, LE_DB_CONFIG_A) & HASHEN_F) { in init_one()
6950 v = t4_read_reg(adapter, LE_DB_HASH_CONFIG_A); in init_one()
6952 adapter->tids.nhash = 1 << HASHTIDSIZE_G(v); in init_one()
6953 v = t4_read_reg(adapter, LE_DB_TID_HASHBASE_A); in init_one()
6954 adapter->tids.hash_base = v / 4; in init_one()
6956 adapter->tids.nhash = HASHTBLSIZE_G(v) << 3; in init_one()
6957 v = t4_read_reg(adapter, in init_one()
6959 adapter->tids.hash_base = v; in init_one()
6964 if (tid_init(&adapter->tids) < 0) { in init_one()
6967 adapter->params.offload = 0; in init_one()
6969 adapter->tc_u32 = cxgb4_init_tc_u32(adapter); in init_one()
6970 if (!adapter->tc_u32) in init_one()
6974 if (cxgb4_init_tc_flower(adapter)) in init_one()
6978 if (cxgb4_init_tc_mqprio(adapter)) in init_one()
6982 if (cxgb4_init_tc_matchall(adapter)) in init_one()
6985 if (cxgb4_init_ethtool_filters(adapter)) in init_one()
6991 if (msi > 1 && enable_msix(adapter) == 0) in init_one()
6992 adapter->flags |= CXGB4_USING_MSIX; in init_one()
6994 adapter->flags |= CXGB4_USING_MSI; in init_one()
6996 free_msix_info(adapter); in init_one()
7002 cxgb4_init_mps_ref_entries(adapter); in init_one()
7004 err = init_rss(adapter); in init_one()
7008 err = setup_non_data_intr(adapter); in init_one()
7010 dev_err(adapter->pdev_dev, in init_one()
7015 err = setup_fw_sge_queues(adapter); in init_one()
7017 dev_err(adapter->pdev_dev, in init_one()
7029 for_each_port(adapter, i) { in init_one()
7030 pi = adap2pinfo(adapter, i); in init_one()
7031 adapter->port[i]->dev_port = pi->lport; in init_one()
7032 netif_set_real_num_tx_queues(adapter->port[i], pi->nqsets); in init_one()
7033 netif_set_real_num_rx_queues(adapter->port[i], pi->nqsets); in init_one()
7035 netif_carrier_off(adapter->port[i]); in init_one()
7037 err = register_netdev(adapter->port[i]); in init_one()
7040 adapter->chan_map[pi->tx_chan] = i; in init_one()
7041 print_port_info(adapter->port[i]); in init_one()
7053 adapter->debugfs_root = debugfs_create_dir(pci_name(pdev), in init_one()
7055 setup_debugfs(adapter); in init_one()
7061 if (is_uld(adapter)) in init_one()
7062 cxgb4_uld_enable(adapter); in init_one()
7064 if (!is_t4(adapter->params.chip)) in init_one()
7065 cxgb4_ptp_init(adapter); in init_one()
7068 !is_t4(adapter->params.chip) && (adapter->flags & CXGB4_FW_OK)) in init_one()
7069 cxgb4_thermal_init(adapter); in init_one()
7071 print_adapter_info(adapter); in init_one()
7075 t4_free_sge_resources(adapter); in init_one()
7076 free_some_resources(adapter); in init_one()
7077 if (adapter->flags & CXGB4_USING_MSIX) in init_one()
7078 free_msix_info(adapter); in init_one()
7079 if (adapter->num_uld || adapter->num_ofld_uld) in init_one()
7080 t4_uld_mem_free(adapter); in init_one()
7082 if (!is_t4(adapter->params.chip)) in init_one()
7083 iounmap(adapter->bar2); in init_one()
7085 if (adapter->workq) in init_one()
7086 destroy_workqueue(adapter->workq); in init_one()
7088 kfree(adapter->mbox_log); in init_one()
7089 kfree(adapter); in init_one()
7101 struct adapter *adapter = pci_get_drvdata(pdev); in remove_one() local
7104 if (!adapter) { in remove_one()
7112 clear_all_filters(adapter); in remove_one()
7114 adapter->flags |= CXGB4_SHUTTING_DOWN; in remove_one()
7116 if (adapter->pf == 4) { in remove_one()
7122 destroy_workqueue(adapter->workq); in remove_one()
7124 detach_ulds(adapter); in remove_one()
7126 for_each_port(adapter, i) in remove_one()
7127 if (adapter->port[i]->reg_state == NETREG_REGISTERED) in remove_one()
7128 unregister_netdev(adapter->port[i]); in remove_one()
7130 t4_uld_clean_up(adapter); in remove_one()
7132 adap_free_hma_mem(adapter); in remove_one()
7134 disable_interrupts(adapter); in remove_one()
7136 cxgb4_free_mps_ref_entries(adapter); in remove_one()
7138 debugfs_remove_recursive(adapter->debugfs_root); in remove_one()
7140 if (!is_t4(adapter->params.chip)) in remove_one()
7141 cxgb4_ptp_stop(adapter); in remove_one()
7143 cxgb4_thermal_remove(adapter); in remove_one()
7145 if (adapter->flags & CXGB4_FULL_INIT_DONE) in remove_one()
7146 cxgb_down(adapter); in remove_one()
7148 if (adapter->flags & CXGB4_USING_MSIX) in remove_one()
7149 free_msix_info(adapter); in remove_one()
7150 if (adapter->num_uld || adapter->num_ofld_uld) in remove_one()
7151 t4_uld_mem_free(adapter); in remove_one()
7152 free_some_resources(adapter); in remove_one()
7153 list_for_each_entry_safe(entry, tmp, &adapter->mac_hlist, in remove_one()
7160 t4_cleanup_clip_tbl(adapter); in remove_one()
7162 if (!is_t4(adapter->params.chip)) in remove_one()
7163 iounmap(adapter->bar2); in remove_one()
7167 cxgb4_iov_configure(adapter->pdev, 0); in remove_one()
7170 iounmap(adapter->regs); in remove_one()
7171 if ((adapter->flags & CXGB4_DEV_ENABLED)) { in remove_one()
7173 adapter->flags &= ~CXGB4_DEV_ENABLED; in remove_one()
7176 kfree(adapter->mbox_log); in remove_one()
7178 kfree(adapter); in remove_one()
7188 struct adapter *adapter = pci_get_drvdata(pdev); in shutdown_one() local
7194 if (!adapter) { in shutdown_one()
7199 adapter->flags |= CXGB4_SHUTTING_DOWN; in shutdown_one()
7201 if (adapter->pf == 4) { in shutdown_one()
7204 for_each_port(adapter, i) in shutdown_one()
7205 if (adapter->port[i]->reg_state == NETREG_REGISTERED) in shutdown_one()
7206 cxgb_close(adapter->port[i]); in shutdown_one()
7209 cxgb4_mqprio_stop_offload(adapter); in shutdown_one()
7212 if (is_uld(adapter)) { in shutdown_one()
7213 detach_ulds(adapter); in shutdown_one()
7214 t4_uld_clean_up(adapter); in shutdown_one()
7217 disable_interrupts(adapter); in shutdown_one()
7218 disable_msi(adapter); in shutdown_one()
7220 t4_sge_stop(adapter); in shutdown_one()
7221 if (adapter->flags & CXGB4_FW_OK) in shutdown_one()
7222 t4_fw_bye(adapter, adapter->mbox); in shutdown_one()