Home
last modified time | relevance | path

Searched refs:ionic (Results 1 – 25 of 33) sorted by relevance

12

/linux/drivers/net/ethernet/pensando/ionic/
H A Dionic_bus_pci.c23 int ionic_bus_get_irq(struct ionic *ionic, unsigned int num) in ionic_bus_get_irq() argument
25 return pci_irq_vector(ionic->pdev, num); in ionic_bus_get_irq()
28 const char *ionic_bus_info(struct ionic *ionic) in ionic_bus_info() argument
30 return pci_name(ionic->pdev); in ionic_bus_info()
33 int ionic_bus_alloc_irq_vectors(struct ionic *ionic, unsigned int nintrs) in ionic_bus_alloc_irq_vectors() argument
35 return pci_alloc_irq_vectors(ionic->pdev, nintrs, nintrs, in ionic_bus_alloc_irq_vectors()
39 void ionic_bus_free_irq_vectors(struct ionic *ionic) in ionic_bus_free_irq_vectors() argument
41 if (!ionic->nintrs) in ionic_bus_free_irq_vectors()
44 pci_free_irq_vectors(ionic->pdev); in ionic_bus_free_irq_vectors()
47 static int ionic_map_bars(struct ionic *ionic) in ionic_map_bars() argument
[all …]
H A Dionic_main.c274 dev_dbg(lif->ionic->dev, "notifyq event:\n"); in ionic_notifyq_service()
283 if (lif->ionic->idev.fw_status_ready && in ionic_notifyq_service()
391 err = ionic_heartbeat_check(lif->ionic); in ionic_adminq_post()
444 ionic_heartbeat_check(lif->ionic); in ionic_adminq_wait()
446 !lif->ionic->idev.fw_status_ready) || in ionic_adminq_wait()
458 dev_dbg(lif->ionic->dev, "%s: elapsed %d msecs\n", in ionic_adminq_wait()
472 if (!ionic_is_fw_running(&lif->ionic->idev)) in __ionic_adminq_post_wait()
491 static void ionic_dev_cmd_clean(struct ionic *ionic) in ionic_dev_cmd_clean() argument
493 struct ionic_dev *idev = &ionic->idev; in ionic_dev_cmd_clean()
502 void ionic_dev_cmd_dev_err_print(struct ionic *ionic, u8 opcode, u8 status, in ionic_dev_cmd_dev_err_print() argument
[all …]
H A Dionic.h40 struct ionic { struct
77 int ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_wait); argument
78 int ionic_dev_cmd_wait_nomsg(struct ionic *ionic, unsigned long max_wait);
79 void ionic_dev_cmd_dev_err_print(struct ionic *ionic, u8 opcode, u8 status,
81 int ionic_setup(struct ionic *ionic);
83 int ionic_identify(struct ionic *ionic);
84 int ionic_init(struct ionic *ionic);
85 int ionic_reset(struct ionic *ionic);
87 int ionic_port_identify(struct ionic *ionic);
88 int ionic_port_init(struct ionic *ionic);
[all …]
H A Dionic_dev.c16 struct ionic *ionic = timer_container_of(ionic, t, watchdog_timer); in ionic_watchdog_cb() local
17 struct ionic_lif *lif = ionic->lif; in ionic_watchdog_cb()
21 mod_timer(&ionic->watchdog_timer, in ionic_watchdog_cb()
22 round_jiffies(jiffies + ionic->watchdog_period)); in ionic_watchdog_cb()
27 hb = ionic_heartbeat_check(ionic); in ionic_watchdog_cb()
28 dev_dbg(ionic->dev, "%s: hb %d running %d UP %d\n", in ionic_watchdog_cb()
71 static int ionic_get_preferred_cpu(struct ionic *ionic, in ionic_get_preferred_cpu() argument
78 cpu = cpumask_local_spread(0, dev_to_node(ionic->dev)); in ionic_get_preferred_cpu()
83 static void ionic_queue_dbell_napi_work(struct ionic *ionic, in ionic_queue_dbell_napi_work() argument
91 cpu = ionic_get_preferred_cpu(ionic, &qcq->intr); in ionic_queue_dbell_napi_work()
[all …]
H A Dionic_devlink.c16 struct ionic *ionic = devlink_priv(dl); in ionic_dl_flash_update() local
18 return ionic_firmware_update(ionic->lif, params->fw, extack); in ionic_dl_flash_update()
24 struct ionic *ionic = devlink_priv(dl); in ionic_dl_info_get() local
25 struct ionic_dev *idev = &ionic->idev; in ionic_dl_info_get()
59 struct ionic *ionic_devlink_alloc(struct device *dev) in ionic_devlink_alloc()
63 dl = devlink_alloc(&ionic_dl_ops, sizeof(struct ionic), dev); in ionic_devlink_alloc()
70 void ionic_devlink_free(struct ionic *ionic) in ionic_devlink_free() argument
72 struct devlink *dl = priv_to_devlink(ionic); in ionic_devlink_free()
77 int ionic_devlink_register(struct ionic *ionic) in ionic_devlink_register() argument
79 struct devlink *dl = priv_to_devlink(ionic); in ionic_devlink_register()
[all …]
H A Dionic_debugfs.h13 void ionic_debugfs_add_dev(struct ionic *ionic);
14 void ionic_debugfs_del_dev(struct ionic *ionic);
15 void ionic_debugfs_add_ident(struct ionic *ionic);
16 void ionic_debugfs_add_sizes(struct ionic *ionic);
24 static inline void ionic_debugfs_add_dev(struct ionic *ionic) { } in ionic_debugfs_add_dev() argument
25 static inline void ionic_debugfs_del_dev(struct ionic *ionic) { } in ionic_debugfs_del_dev() argument
26 static inline void ionic_debugfs_add_ident(struct ionic *ionic) { } in ionic_debugfs_add_ident() argument
27 static inline void ionic_debugfs_add_sizes(struct ionic *ionic) { } in ionic_debugfs_add_sizes() argument
H A Dionic_fw.c59 static int ionic_fw_status_long_wait(struct ionic *ionic, in ionic_fw_status_long_wait() argument
76 mutex_lock(&ionic->dev_cmd_lock); in ionic_fw_status_long_wait()
77 ionic_dev_cmd_go(&ionic->idev, &cmd); in ionic_fw_status_long_wait()
78 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_fw_status_long_wait()
79 mutex_unlock(&ionic->dev_cmd_lock); in ionic_fw_status_long_wait()
86 dev_err(ionic->dev, "DEV_CMD firmware wait %s timed out\n", label); in ionic_fw_status_long_wait()
97 struct ionic_dev *idev = &lif->ionic->idev; in ionic_firmware_update()
99 struct ionic *ionic = lif->ionic; in ionic_firmware_update() local
109 dl = priv_to_devlink(ionic); in ionic_firmware_update()
133 mutex_lock(&ionic->dev_cmd_lock); in ionic_firmware_update()
[all …]
H A Dionic_bus.h7 int ionic_bus_get_irq(struct ionic *ionic, unsigned int num);
8 const char *ionic_bus_info(struct ionic *ionic);
9 int ionic_bus_alloc_irq_vectors(struct ionic *ionic, unsigned int nintrs);
10 void ionic_bus_free_irq_vectors(struct ionic *ionic);
13 void __iomem *ionic_bus_map_dbpage(struct ionic *ionic, int page_num);
14 void ionic_bus_unmap_dbpage(struct ionic *ionic, void __iomem *page);
H A Dionic_lif.c72 new_coal = ionic_coal_usec_to_hw(lif->ionic, cur_moder.usec); in ionic_dim_work()
79 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_dim_work()
121 mod_timer(&lif->ionic->watchdog_timer, jiffies + 1); in ionic_lif_deferred_work()
138 queue_work(lif->ionic->wq, &lif->deferred.work); in ionic_lif_deferred_enqueue()
175 ionic_port_identify(lif->ionic); in ionic_link_status_check()
231 struct device *dev = lif->ionic->dev; in ionic_request_irq()
249 struct ionic *ionic = lif->ionic; in ionic_intr_alloc() local
252 index = find_first_zero_bit(ionic->intrs, ionic->nintrs); in ionic_intr_alloc()
253 if (index == ionic->nintrs) in ionic_intr_alloc()
256 set_bit(index, ionic->intrs); in ionic_intr_alloc()
[all …]
H A Dionic_ethtool.c77 struct ionic *ionic = lif->ionic; in ionic_get_drvinfo() local
80 strscpy(drvinfo->fw_version, ionic->idev.dev_info.fw_version, in ionic_get_drvinfo()
82 strscpy(drvinfo->bus_info, ionic_bus_info(ionic), in ionic_get_drvinfo()
101 idev = &lif->ionic->idev; in ionic_get_regs()
107 memcpy_fromio(p + offset, lif->ionic->idev.dev_info_regs->words, size); in ionic_get_regs()
119 if (lif->ionic->pdev->is_physfn) in ionic_get_link_ext_stats()
127 struct ionic_dev *idev = &lif->ionic->idev; in ionic_get_link_ksettings()
266 dev_dbg_ratelimited(lif->ionic->dev, in ionic_get_link_ksettings()
317 struct ionic_dev *idev = &lif->ionic->idev; in ionic_set_link_ksettings()
318 struct ionic *ionic = lif->ionic; in ionic_set_link_ksettings() local
[all …]
H A Dionic_debugfs.c26 void ionic_debugfs_add_dev(struct ionic *ionic) in ionic_debugfs_add_dev() argument
28 ionic->dentry = debugfs_create_dir(ionic_bus_info(ionic), ionic_dir); in ionic_debugfs_add_dev()
31 void ionic_debugfs_del_dev(struct ionic *ionic) in ionic_debugfs_del_dev() argument
33 debugfs_remove_recursive(ionic->dentry); in ionic_debugfs_del_dev()
34 ionic->dentry = NULL; in ionic_debugfs_del_dev()
39 struct ionic *ionic = seq->private; in identity_show() local
42 ident = &ionic->ident; in identity_show()
57 void ionic_debugfs_add_ident(struct ionic *ionic) in ionic_debugfs_add_ident() argument
59 debugfs_create_file("identity", 0400, ionic->dentry, in ionic_debugfs_add_ident()
60 ionic, &identity_fops); in ionic_debugfs_add_ident()
[all …]
H A Dionic_phc.c73 struct ionic *ionic = lif->ionic; in ionic_lif_hwstamp_set_ts_config() local
110 if ((ionic->ident.lif.eth.hwstamp_tx_modes & mask) != mask) { in ionic_lif_hwstamp_set_ts_config()
121 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) != mask) { in ionic_lif_hwstamp_set_ts_config()
127 dev_dbg(ionic->dev, "%s: config_rx_filter %d rx_filt %#llx rx_all %d\n", in ionic_lif_hwstamp_set_ts_config()
188 dev_err(ionic->dev, in ionic_lif_hwstamp_set_ts_config()
196 dev_err(ionic->dev, in ionic_lif_hwstamp_set_ts_config()
280 static u64 ionic_hwstamp_read(struct ionic *ionic, in ionic_hwstamp_read() argument
286 ioread32(&ionic->idev.hwstamp_regs->tick_low); in ionic_hwstamp_read()
288 tick_high_before = ioread32(&ionic->idev.hwstamp_regs->tick_high); in ionic_hwstamp_read()
291 tick_low = ioread32(&ionic->idev.hwstamp_regs->tick_low); in ionic_hwstamp_read()
[all …]
H A Dionic_aux.c26 if (!(le64_to_cpu(lif->ionic->ident.lif.capabilities) & IONIC_LIF_CAP_RDMA)) in ionic_auxbus_register()
37 dev_err(lif->ionic->dev, "Failed to allocate aux id: %d\n", id); in ionic_auxbus_register()
44 aux_dev->dev.parent = &lif->ionic->pdev->dev; in ionic_auxbus_register()
49 dev_err(lif->ionic->dev, "Failed to initialize %s aux device: %d\n", in ionic_auxbus_register()
58 dev_err(lif->ionic->dev, "Failed to add %s aux device: %d\n", in ionic_auxbus_register()
84 struct ionic *ionic = lif->ionic; in ionic_request_rdma_reset() local
92 mutex_lock(&ionic->dev_cmd_lock); in ionic_request_rdma_reset()
94 ionic_dev_cmd_go(&ionic->idev, &cmd); in ionic_request_rdma_reset()
95 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_request_rdma_reset()
97 mutex_unlock(&ionic->dev_cmd_lock); in ionic_request_rdma_reset()
H A Dionic_devlink.h12 struct ionic *ionic_devlink_alloc(struct device *dev);
13 void ionic_devlink_free(struct ionic *ionic);
14 int ionic_devlink_register(struct ionic *ionic);
15 void ionic_devlink_unregister(struct ionic *ionic);
H A Dionic_dev.h300 struct ionic;
327 void ionic_init_devinfo(struct ionic *ionic);
328 int ionic_dev_setup(struct ionic *ionic);
329 void ionic_dev_teardown(struct ionic *ionic);
349 int ionic_set_vf_config(struct ionic *ionic, int vf,
354 void ionic_vf_start(struct ionic *ionic);
365 void ionic_map_cmb(struct ionic *ionic);
388 int ionic_heartbeat_check(struct ionic *ionic);
391 void ionic_queue_doorbell_check(struct ionic *ionic, int delay);
H A Dionic_lif.h187 struct ionic *ionic; member
317 static inline u32 ionic_coal_usec_to_hw(struct ionic *ionic, u32 usecs) in ionic_coal_usec_to_hw() argument
319 u32 mult = le32_to_cpu(ionic->ident.dev.intr_coal_mult); in ionic_coal_usec_to_hw()
320 u32 div = le32_to_cpu(ionic->ident.dev.intr_coal_div); in ionic_coal_usec_to_hw()
343 int ionic_lif_alloc(struct ionic *ionic);
358 int ionic_lif_identify(struct ionic *ionic, u8 lif_type,
360 int ionic_lif_size(struct ionic *ionic);
H A DMakefile4 obj-$(CONFIG_IONIC) := ionic.o
6 ionic-y := ionic_main.o ionic_bus_pci.o ionic_devlink.o ionic_dev.o \
9 ionic-$(CONFIG_PTP_1588_CLOCK) += ionic_phc.o
/linux/drivers/infiniband/hw/ionic/
H A Dionic_lif_cfg.c18 if (lif->ionic->idev.phy_cmb_expdb64_pages) in ionic_get_expdb()
20 if (lif->ionic->idev.phy_cmb_expdb128_pages) in ionic_get_expdb()
22 if (lif->ionic->idev.phy_cmb_expdb256_pages) in ionic_get_expdb()
24 if (lif->ionic->idev.phy_cmb_expdb512_pages) in ionic_get_expdb()
32 union ionic_lif_identity *ident = &lif->ionic->ident.lif; in ionic_fill_lif_cfg()
35 cfg->hwdev = &lif->ionic->pdev->dev; in ionic_fill_lif_cfg()
40 cfg->dbid_count = le32_to_cpu(lif->ionic->ident.dev.ndbpgs_per_lif); in ionic_fill_lif_cfg()
42 cfg->intr_ctrl = lif->ionic->idev.intr_ctrl; in ionic_fill_lif_cfg()
44 cfg->db_phys = lif->ionic->bars[IONIC_PCI_BAR_DBELL].bus_addr; in ionic_fill_lif_cfg()
76 cfg->dbid_count = le32_to_cpu(lif->ionic->ident.dev.ndbpgs_per_lif); in ionic_fill_lif_cfg()
[all …]
H A DMakefile3 ccflags-y := -I $(srctree)/drivers/net/ethernet/pensando/ionic
/linux/Documentation/networking/device_drivers/ethernet/pensando/
H A Dionic_rdma.rst16 conjunction with the ionic ethernet driver.
18 The ionic ethernet driver detects RDMA capability during device
25 See Documentation/networking/device_drivers/ethernet/pensando/ionic.rst
31 The ionic_rdma driver depends on the ionic ethernet driver.
32 See Documentation/networking/device_drivers/ethernet/pensando/ionic.rst
33 for detailed information on enabling and configuring the ionic driver.
H A Dionic.rst30 If such devices are listed as above, then the ionic.ko driver should find
34 $ dmesg | grep ionic
35 ionic 0000:b5:00.0: 126.016 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x16 link)
36 ionic 0000:b5:00.0 enp181s0: renamed from eth0
37 ionic 0000:b5:00.0 enp181s0: Link up - 100 Gbps
38 ionic 0000:b6:00.0: 126.016 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x16 link)
39 ionic 0000:b6:00.0 enp182s0: renamed from eth0
40 ionic 0000:b6:00.0 enp182s0: Link up - 100 Gbps
46 driver: ionic
53 driver ionic
[all …]
/linux/Documentation/networking/devlink/
H A Dionic.rst4 ionic devlink support
7 This document describes the devlink features implemented by the ``ionic``
13 The ``ionic`` driver reports the following versions
/linux/drivers/net/ethernet/pensando/
H A DKconfig32 <file:Documentation/networking/device_drivers/ethernet/pensando/ionic.rst>.
35 will be called ionic.
H A DMakefile6 obj-$(CONFIG_IONIC) += ionic/
/linux/drivers/infiniband/hw/
H A DMakefile18 obj-$(CONFIG_INFINIBAND_IONIC) += ionic/

12