Symbol: ionic
drivers/infiniband/hw/ionic/ionic_lif_cfg.c
105
strscpy(str, lif->ionic->idev.dev_info.fw_version, len);
drivers/infiniband/hw/ionic/ionic_lif_cfg.c
110
return lif->ionic->idev.dev_info.asic_rev;
drivers/infiniband/hw/ionic/ionic_lif_cfg.c
18
if (lif->ionic->idev.phy_cmb_expdb64_pages)
drivers/infiniband/hw/ionic/ionic_lif_cfg.c
20
if (lif->ionic->idev.phy_cmb_expdb128_pages)
drivers/infiniband/hw/ionic/ionic_lif_cfg.c
22
if (lif->ionic->idev.phy_cmb_expdb256_pages)
drivers/infiniband/hw/ionic/ionic_lif_cfg.c
24
if (lif->ionic->idev.phy_cmb_expdb512_pages)
drivers/infiniband/hw/ionic/ionic_lif_cfg.c
32
union ionic_lif_identity *ident = &lif->ionic->ident.lif;
drivers/infiniband/hw/ionic/ionic_lif_cfg.c
35
cfg->hwdev = &lif->ionic->pdev->dev;
drivers/infiniband/hw/ionic/ionic_lif_cfg.c
40
cfg->dbid_count = le32_to_cpu(lif->ionic->ident.dev.ndbpgs_per_lif);
drivers/infiniband/hw/ionic/ionic_lif_cfg.c
42
cfg->intr_ctrl = lif->ionic->idev.intr_ctrl;
drivers/infiniband/hw/ionic/ionic_lif_cfg.c
44
cfg->db_phys = lif->ionic->bars[IONIC_PCI_BAR_DBELL].bus_addr;
drivers/infiniband/hw/ionic/ionic_lif_cfg.c
76
cfg->dbid_count = le32_to_cpu(lif->ionic->ident.dev.ndbpgs_per_lif);
drivers/net/ethernet/pensando/ionic/ionic.h
77
int ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_wait);
drivers/net/ethernet/pensando/ionic/ionic.h
78
int ionic_dev_cmd_wait_nomsg(struct ionic *ionic, unsigned long max_wait);
drivers/net/ethernet/pensando/ionic/ionic.h
79
void ionic_dev_cmd_dev_err_print(struct ionic *ionic, u8 opcode, u8 status,
drivers/net/ethernet/pensando/ionic/ionic.h
81
int ionic_setup(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic.h
83
int ionic_identify(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic.h
84
int ionic_init(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic.h
85
int ionic_reset(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic.h
87
int ionic_port_identify(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic.h
88
int ionic_port_init(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic.h
89
int ionic_port_reset(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic.h
91
bool ionic_doorbell_wa(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_aux.c
26
if (!(le64_to_cpu(lif->ionic->ident.lif.capabilities) & IONIC_LIF_CAP_RDMA))
drivers/net/ethernet/pensando/ionic/ionic_aux.c
37
dev_err(lif->ionic->dev, "Failed to allocate aux id: %d\n", id);
drivers/net/ethernet/pensando/ionic/ionic_aux.c
44
aux_dev->dev.parent = &lif->ionic->pdev->dev;
drivers/net/ethernet/pensando/ionic/ionic_aux.c
49
dev_err(lif->ionic->dev, "Failed to initialize %s aux device: %d\n",
drivers/net/ethernet/pensando/ionic/ionic_aux.c
58
dev_err(lif->ionic->dev, "Failed to add %s aux device: %d\n",
drivers/net/ethernet/pensando/ionic/ionic_aux.c
84
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_aux.c
92
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_aux.c
94
ionic_dev_cmd_go(&ionic->idev, &cmd);
drivers/net/ethernet/pensando/ionic/ionic_aux.c
95
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_aux.c
97
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_bus.h
10
void ionic_bus_free_irq_vectors(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus.h
13
void __iomem *ionic_bus_map_dbpage(struct ionic *ionic, int page_num);
drivers/net/ethernet/pensando/ionic/ionic_bus.h
14
void ionic_bus_unmap_dbpage(struct ionic *ionic, void __iomem *page);
drivers/net/ethernet/pensando/ionic/ionic_bus.h
7
int ionic_bus_get_irq(struct ionic *ionic, unsigned int num);
drivers/net/ethernet/pensando/ionic/ionic_bus.h
8
const char *ionic_bus_info(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus.h
9
int ionic_bus_alloc_irq_vectors(struct ionic *ionic, unsigned int nintrs);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
100
void __iomem *ionic_bus_map_dbpage(struct ionic *ionic, int page_num)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
102
return pci_iomap_range(ionic->pdev,
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
103
ionic->bars[IONIC_PCI_BAR_DBELL].res_index,
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
107
void ionic_bus_unmap_dbpage(struct ionic *ionic, void __iomem *page)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
112
static void ionic_vf_dealloc_locked(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
118
if (!ionic->vfs)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
121
for (i = ionic->num_vfs - 1; i >= 0; i--) {
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
122
v = &ionic->vfs[i];
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
126
ionic_set_vf_config(ionic, i, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
127
dma_unmap_single(ionic->dev, v->stats_pa,
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
133
kfree(ionic->vfs);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
134
ionic->vfs = NULL;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
135
ionic->num_vfs = 0;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
138
static void ionic_vf_dealloc(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
140
down_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
141
ionic_vf_dealloc_locked(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
142
up_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
145
static int ionic_vf_alloc(struct ionic *ionic, int num_vfs)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
152
down_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
154
ionic->vfs = kzalloc_objs(struct ionic_vf, num_vfs);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
155
if (!ionic->vfs) {
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
161
v = &ionic->vfs[i];
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
162
v->stats_pa = dma_map_single(ionic->dev, &v->stats,
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
164
if (dma_mapping_error(ionic->dev, v->stats_pa)) {
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
170
ionic->num_vfs++;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
174
ionic_set_vf_config(ionic, i, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
179
ionic_vf_dealloc_locked(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
180
up_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
186
struct ionic *ionic = pci_get_drvdata(pdev);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
187
struct device *dev = ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
190
if (ionic->lif &&
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
191
test_bit(IONIC_LIF_F_FW_RESET, ionic->lif->state))
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
201
ret = ionic_vf_alloc(ionic, num_vfs);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
211
ionic_vf_dealloc(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
218
static void ionic_clear_pci(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
220
if (ionic->num_bars) {
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
221
ionic->idev.dev_info_regs = NULL;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
222
ionic->idev.dev_cmd_regs = NULL;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
223
ionic->idev.intr_status = NULL;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
224
ionic->idev.intr_ctrl = NULL;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
226
ionic_unmap_bars(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
227
pci_release_regions(ionic->pdev);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
23
int ionic_bus_get_irq(struct ionic *ionic, unsigned int num)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
230
if (pci_is_enabled(ionic->pdev))
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
231
pci_disable_device(ionic->pdev);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
234
static int ionic_setup_one(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
236
struct pci_dev *pdev = ionic->pdev;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
237
struct device *dev = ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
240
ionic_debugfs_add_dev(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
25
return pci_irq_vector(ionic->pdev, num);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
256
err = ionic_map_bars(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
261
err = ionic_setup(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
268
err = ionic_identify(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
273
ionic_debugfs_add_ident(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
275
ionic_map_cmb(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
277
err = ionic_init(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
28
const char *ionic_bus_info(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
284
err = ionic_port_identify(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
290
err = ionic_port_init(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
299
ionic_dev_teardown(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
30
return pci_name(ionic->pdev);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
301
ionic_clear_pci(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
303
ionic_debugfs_del_dev(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
311
struct ionic *ionic;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
315
ionic = ionic_devlink_alloc(dev);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
316
if (!ionic)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
319
ionic->pdev = pdev;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
320
ionic->dev = dev;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
321
pci_set_drvdata(pdev, ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
322
mutex_init(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
33
int ionic_bus_alloc_irq_vectors(struct ionic *ionic, unsigned int nintrs)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
337
err = ionic_setup_one(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
342
err = ionic_lif_size(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
348
err = ionic_lif_alloc(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
35
return pci_alloc_irq_vectors(ionic->pdev, nintrs, nintrs,
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
354
err = ionic_lif_init(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
360
init_rwsem(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
364
err = ionic_vf_alloc(ionic, num_vfs);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
369
err = ionic_devlink_register(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
375
err = ionic_lif_register(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
381
ionic_auxbus_register(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
383
mod_timer(&ionic->watchdog_timer,
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
384
round_jiffies(jiffies + ionic->watchdog_period));
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
385
ionic_queue_doorbell_check(ionic, IONIC_NAPI_DEADLINE);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
39
void ionic_bus_free_irq_vectors(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
390
ionic_devlink_unregister(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
392
ionic_vf_dealloc(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
393
ionic_lif_deinit(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
395
ionic_lif_free(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
396
ionic->lif = NULL;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
398
ionic_bus_free_irq_vectors(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
400
ionic_dev_teardown(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
401
ionic_clear_pci(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
402
ionic_debugfs_del_dev(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
404
mutex_destroy(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
405
ionic_devlink_free(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
41
if (!ionic->nintrs)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
412
struct ionic *ionic = pci_get_drvdata(pdev);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
414
timer_shutdown_sync(&ionic->watchdog_timer);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
416
if (ionic->lif) {
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
417
cancel_work_sync(&ionic->lif->deferred.work);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
419
if (test_and_clear_bit(IONIC_LIF_F_FW_RESET, ionic->lif->state))
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
420
set_bit(IONIC_LIF_F_FW_STOPPING, ionic->lif->state);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
422
if (ionic->lif->doorbell_wa)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
423
cancel_delayed_work_sync(&ionic->doorbell_check_dwork);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
424
ionic_auxbus_unregister(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
425
ionic_lif_unregister(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
426
ionic_devlink_unregister(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
427
ionic_lif_deinit(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
428
ionic_lif_free(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
429
ionic->lif = NULL;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
430
ionic_bus_free_irq_vectors(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
433
ionic_port_reset(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
434
ionic_reset(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
435
ionic_dev_teardown(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
436
ionic_clear_pci(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
437
ionic_debugfs_del_dev(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
438
mutex_destroy(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
439
ionic_devlink_free(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
44
pci_free_irq_vectors(ionic->pdev);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
444
struct ionic *ionic = pci_get_drvdata(pdev);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
445
struct ionic_lif *lif = ionic->lif;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
447
dev_dbg(ionic->dev, "%s: device stopping\n", __func__);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
451
timer_delete_sync(&ionic->watchdog_timer);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
454
ionic_auxbus_unregister(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
463
ionic_dev_teardown(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
464
ionic_clear_pci(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
465
ionic_debugfs_del_dev(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
47
static int ionic_map_bars(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
470
struct ionic *ionic = pci_get_drvdata(pdev);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
471
struct ionic_lif *lif = ionic->lif;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
474
err = ionic_setup_one(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
478
ionic_debugfs_add_sizes(ionic);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
479
ionic_debugfs_add_lif(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
485
mod_timer(&ionic->watchdog_timer, jiffies + 1);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
488
dev_dbg(ionic->dev, "%s: device recovery %s\n",
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
49
struct pci_dev *pdev = ionic->pdev;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
50
struct device *dev = ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
505
struct ionic *ionic = pci_get_drvdata(pdev);
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
506
struct ionic_lif *lif = ionic->lif;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
54
bars = ionic->bars;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
55
ionic->num_bars = 0;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
77
ionic->num_bars++;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
84
static void ionic_unmap_bars(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
86
struct ionic_dev_bar *bars = ionic->bars;
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
97
ionic->num_bars = 0;
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
116
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
121
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
26
void ionic_debugfs_add_dev(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
277
lif_dentry = debugfs_create_dir(lif->name, lif->ionic->dentry);
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
28
ionic->dentry = debugfs_create_dir(ionic_bus_info(ionic), ionic_dir);
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
31
void ionic_debugfs_del_dev(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
33
debugfs_remove_recursive(ionic->dentry);
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
34
ionic->dentry = NULL;
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
39
struct ionic *ionic = seq->private;
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
42
ident = &ionic->ident;
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
57
void ionic_debugfs_add_ident(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
59
debugfs_create_file("identity", 0400, ionic->dentry,
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
60
ionic, &identity_fops);
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
63
void ionic_debugfs_add_sizes(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
65
debugfs_create_u32("nlifs", 0400, ionic->dentry,
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
66
(u32 *)&ionic->ident.dev.nlifs);
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
67
debugfs_create_u32("nintrs", 0400, ionic->dentry, &ionic->nintrs);
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
69
debugfs_create_u32("ntxqs_per_lif", 0400, ionic->dentry,
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
70
(u32 *)&ionic->ident.lif.eth.config.queue_count[IONIC_QTYPE_TXQ]);
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
71
debugfs_create_u32("nrxqs_per_lif", 0400, ionic->dentry,
drivers/net/ethernet/pensando/ionic/ionic_debugfs.c
72
(u32 *)&ionic->ident.lif.eth.config.queue_count[IONIC_QTYPE_RXQ]);
drivers/net/ethernet/pensando/ionic/ionic_debugfs.h
13
void ionic_debugfs_add_dev(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_debugfs.h
14
void ionic_debugfs_del_dev(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_debugfs.h
15
void ionic_debugfs_add_ident(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_debugfs.h
16
void ionic_debugfs_add_sizes(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_debugfs.h
24
static inline void ionic_debugfs_add_dev(struct ionic *ionic) { }
drivers/net/ethernet/pensando/ionic/ionic_debugfs.h
25
static inline void ionic_debugfs_del_dev(struct ionic *ionic) { }
drivers/net/ethernet/pensando/ionic/ionic_debugfs.h
26
static inline void ionic_debugfs_add_ident(struct ionic *ionic) { }
drivers/net/ethernet/pensando/ionic/ionic_debugfs.h
27
static inline void ionic_debugfs_add_sizes(struct ionic *ionic) { }
drivers/net/ethernet/pensando/ionic/ionic_dev.c
115
ionic_queue_dbell_napi_work(ionic, lif->txqcqs[i]);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
116
ionic_queue_dbell_napi_work(ionic, lif->rxqcqs[i]);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
128
ionic_queue_doorbell_check(ionic, IONIC_NAPI_DEADLINE);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
131
bool ionic_doorbell_wa(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_dev.c
133
u8 asic_type = ionic->idev.dev_info.asic_type;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
138
static int ionic_watchdog_init(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_dev.c
140
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
142
timer_setup(&ionic->watchdog_timer, ionic_watchdog_cb, 0);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
143
ionic->watchdog_period = IONIC_WATCHDOG_SECS * HZ;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
147
idev->last_hb_time = jiffies - 2 * ionic->watchdog_period;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
155
ionic->wq = alloc_workqueue("%s-wq", WQ_UNBOUND, 0,
drivers/net/ethernet/pensando/ionic/ionic_dev.c
156
dev_name(ionic->dev));
drivers/net/ethernet/pensando/ionic/ionic_dev.c
157
if (!ionic->wq) {
drivers/net/ethernet/pensando/ionic/ionic_dev.c
158
dev_err(ionic->dev, "alloc_workqueue failed");
drivers/net/ethernet/pensando/ionic/ionic_dev.c
16
struct ionic *ionic = timer_container_of(ionic, t, watchdog_timer);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
162
if (ionic_doorbell_wa(ionic))
drivers/net/ethernet/pensando/ionic/ionic_dev.c
163
INIT_DELAYED_WORK(&ionic->doorbell_check_dwork,
drivers/net/ethernet/pensando/ionic/ionic_dev.c
169
void ionic_queue_doorbell_check(struct ionic *ionic, int delay)
drivers/net/ethernet/pensando/ionic/ionic_dev.c
17
struct ionic_lif *lif = ionic->lif;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
173
if (!ionic->lif->doorbell_wa)
drivers/net/ethernet/pensando/ionic/ionic_dev.c
176
cpu = ionic_get_preferred_cpu(ionic, &ionic->lif->adminqcq->intr);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
177
queue_delayed_work_on(cpu, ionic->wq, &ionic->doorbell_check_dwork,
drivers/net/ethernet/pensando/ionic/ionic_dev.c
181
void ionic_init_devinfo(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_dev.c
183
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
199
dev_dbg(ionic->dev, "fw_version %s\n", idev->dev_info.fw_version);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
202
static void ionic_map_disc_cmb(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_dev.c
204
struct ionic_identity *ident = &ionic->ident;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
206
struct ionic_dev_bar *bar = ionic->bars;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
207
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
208
struct device *dev = ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
21
mod_timer(&ionic->watchdog_timer,
drivers/net/ethernet/pensando/ionic/ionic_dev.c
212
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
215
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
22
round_jiffies(jiffies + ionic->watchdog_period));
drivers/net/ethernet/pensando/ionic/ionic_dev.c
222
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
27
hb = ionic_heartbeat_check(ionic);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
28
dev_dbg(ionic->dev, "%s: hb %d running %d UP %d\n",
drivers/net/ethernet/pensando/ionic/ionic_dev.c
351
static void ionic_map_classic_cmb(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_dev.c
353
struct ionic_dev_bar *bar = ionic->bars;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
354
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
355
struct device *dev = ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
375
void ionic_map_cmb(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_dev.c
377
struct pci_dev *pdev = ionic->pdev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
378
struct device *dev = ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
385
if (ionic->ident.dev.capabilities & cpu_to_le64(IONIC_DEV_CAP_DISC_CMB))
drivers/net/ethernet/pensando/ionic/ionic_dev.c
386
ionic_map_disc_cmb(ionic);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
388
ionic_map_classic_cmb(ionic);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
391
int ionic_dev_setup(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_dev.c
393
struct ionic_dev_bar *bar = ionic->bars;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
394
unsigned int num_bars = ionic->num_bars;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
395
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
396
struct device *dev = ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
425
ionic_init_devinfo(ionic);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
434
err = ionic_watchdog_init(ionic);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
444
if (num_bars < 3 || !ionic->bars[IONIC_PCI_BAR_CMB].len) {
drivers/net/ethernet/pensando/ionic/ionic_dev.c
454
void ionic_dev_teardown(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_dev.c
456
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
468
if (ionic->wq) {
drivers/net/ethernet/pensando/ionic/ionic_dev.c
469
destroy_workqueue(ionic->wq);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
470
ionic->wq = NULL;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
501
int ionic_heartbeat_check(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_dev.c
504
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
505
struct ionic_lif *lif = ionic->lif;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
521
dev_dbg(ionic->dev, "%s: do_check_time again\n", __func__);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
531
dev_info(ionic->dev, "FW generation 0x%02x -> 0x%02x\n",
drivers/net/ethernet/pensando/ionic/ionic_dev.c
554
dev_dbg(ionic->dev, "fw_status 0x%02x ready %d idev->ready %d last_hb 0x%x state 0x%02lx\n",
drivers/net/ethernet/pensando/ionic/ionic_dev.c
568
dev_info(ionic->dev, "FW stopped 0x%02x\n", fw_status);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
573
dev_info(ionic->dev, "FW running 0x%02x\n", fw_status);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
606
dev_dbg(ionic->dev, "%s: fw_hb %u last_fw_hb %u ready %u\n",
drivers/net/ethernet/pensando/ionic/ionic_dev.c
615
dev_info(ionic->dev, "FW heartbeat stalled at %u\n", fw_hb);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
617
dev_info(ionic->dev, "FW heartbeat restored at %u\n", fw_hb);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
71
static int ionic_get_preferred_cpu(struct ionic *ionic,
drivers/net/ethernet/pensando/ionic/ionic_dev.c
78
cpu = cpumask_local_spread(0, dev_to_node(ionic->dev));
drivers/net/ethernet/pensando/ionic/ionic_dev.c
784
int ionic_set_vf_config(struct ionic *ionic, int vf,
drivers/net/ethernet/pensando/ionic/ionic_dev.c
796
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
797
ionic_dev_cmd_go(&ionic->idev, &cmd);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
798
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
799
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
804
void ionic_vf_start(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_dev.c
811
if (!(ionic->ident.dev.capabilities & cpu_to_le64(IONIC_DEV_CAP_VF_CTRL)))
drivers/net/ethernet/pensando/ionic/ionic_dev.c
814
ionic_dev_cmd_go(&ionic->idev, &cmd);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
815
ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
83
static void ionic_queue_dbell_napi_work(struct ionic *ionic,
drivers/net/ethernet/pensando/ionic/ionic_dev.c
906
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
91
cpu = ionic_get_preferred_cpu(ionic, &qcq->intr);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
92
queue_work_on(cpu, ionic->wq, &qcq->doorbell_napi_work);
drivers/net/ethernet/pensando/ionic/ionic_dev.c
965
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
97
struct ionic *ionic = container_of(work, struct ionic,
drivers/net/ethernet/pensando/ionic/ionic_dev.c
99
struct ionic_lif *lif = ionic->lif;
drivers/net/ethernet/pensando/ionic/ionic_dev.c
992
cq->idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_dev.h
304
struct ionic;
drivers/net/ethernet/pensando/ionic/ionic_dev.h
331
void ionic_init_devinfo(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_dev.h
332
int ionic_dev_setup(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_dev.h
333
void ionic_dev_teardown(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_dev.h
353
int ionic_set_vf_config(struct ionic *ionic, int vf,
drivers/net/ethernet/pensando/ionic/ionic_dev.h
358
void ionic_vf_start(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_dev.h
369
void ionic_map_cmb(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_dev.h
392
int ionic_heartbeat_check(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_dev.h
395
void ionic_queue_doorbell_check(struct ionic *ionic, int delay);
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
101
devlink_port_unregister(&ionic->dl_port);
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
16
struct ionic *ionic = devlink_priv(dl);
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
18
return ionic_firmware_update(ionic->lif, params->fw, extack);
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
24
struct ionic *ionic = devlink_priv(dl);
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
25
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
59
struct ionic *ionic_devlink_alloc(struct device *dev)
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
63
dl = devlink_alloc(&ionic_dl_ops, sizeof(struct ionic), dev);
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
70
void ionic_devlink_free(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
72
struct devlink *dl = priv_to_devlink(ionic);
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
77
int ionic_devlink_register(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
79
struct devlink *dl = priv_to_devlink(ionic);
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
84
devlink_port_attrs_set(&ionic->dl_port, &attrs);
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
85
err = devlink_port_register(dl, &ionic->dl_port, 0);
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
87
dev_err(ionic->dev, "devlink_port_register failed: %d\n", err);
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
91
SET_NETDEV_DEVLINK_PORT(ionic->lif->netdev, &ionic->dl_port);
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
96
void ionic_devlink_unregister(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_devlink.c
98
struct devlink *dl = priv_to_devlink(ionic);
drivers/net/ethernet/pensando/ionic/ionic_devlink.h
12
struct ionic *ionic_devlink_alloc(struct device *dev);
drivers/net/ethernet/pensando/ionic/ionic_devlink.h
13
void ionic_devlink_free(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_devlink.h
14
int ionic_devlink_register(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_devlink.h
15
void ionic_devlink_unregister(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
101
idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1036
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1055
if (ionic->ident.lif.eth.hwstamp_tx_modes & mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1059
if (ionic->ident.lif.eth.hwstamp_tx_modes & mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1068
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
107
memcpy_fromio(p + offset, lif->ionic->idev.dev_info_regs->words, size);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1072
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1076
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1080
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1084
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1088
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1092
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1096
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1100
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1104
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1108
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1112
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1116
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1125
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1133
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1135
ionic_dev_cmd_port_state(&ionic->idev, IONIC_PORT_ADMIN_STATE_DOWN);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1136
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1139
ionic_dev_cmd_port_state(&ionic->idev, IONIC_PORT_ADMIN_STATE_UP);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1140
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
1143
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
118
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
122
if (ionic->pdev->is_virtfn)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
125
if (!ionic->idev.port_info) {
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
131
le16_to_cpu(ionic->idev.port_info->status.link_down_count);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
132
link_down_count_total = ionic->idev.link_down_count_total +
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
134
ionic->idev.link_down_count_last;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
137
if (link_down_count_fw < ionic->idev.link_down_count_last)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
140
ionic->idev.link_down_count_last = link_down_count_fw;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
141
ionic->idev.link_down_count_total = link_down_count_total;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
150
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
292
dev_dbg_ratelimited(lif->ionic->dev,
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
343
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
344
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
352
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
354
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
355
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
362
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
364
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
365
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
381
pause_type = lif->ionic->idev.port_info->config.pause_type;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
392
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
409
if (requested_pause == lif->ionic->idev.port_info->config.pause_type)
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
412
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
413
ionic_dev_cmd_port_pause(&lif->ionic->idev, requested_pause);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
414
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
415
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
427
switch (lif->ionic->idev.port_info->config.fec_type) {
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
454
if (lif->ionic->idev.port_info->config.an_enable) {
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
479
if (fec_type != lif->ionic->idev.port_info->config.fec_type) {
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
480
mutex_lock(&lif->ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
481
ionic_dev_cmd_port_fec(&lif->ionic->idev, fec_type);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
482
ret = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
483
mutex_unlock(&lif->ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
520
ident = &lif->ionic->ident;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
538
rx_coal = ionic_coal_usec_to_hw(lif->ionic, coalesce->rx_coalesce_usecs);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
541
tx_coal = ionic_coal_usec_to_hw(lif->ionic, coalesce->tx_coalesce_usecs);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
578
ionic_intr_coal_init(lif->ionic->idev.intr_ctrl,
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
585
ionic_intr_coal_init(lif->ionic->idev.intr_ctrl,
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
602
if (!lif->ionic->idev.cmb_inuse &&
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
630
pages_have = lif->ionic->bars[IONIC_PCI_BAR_CMB].len / PAGE_SIZE;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
77
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
771
ch->max_combined = lif->ionic->ntxqs_per_lif;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
772
ch->max_rx = lif->ionic->ntxqs_per_lif / 2;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
773
ch->max_tx = lif->ionic->ntxqs_per_lif / 2;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
80
strscpy(drvinfo->fw_version, ionic->idev.dev_info.fw_version,
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
812
max_cnt = lif->ionic->ntxqs_per_lif;
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
82
strscpy(drvinfo->bus_info, ionic_bus_info(ionic),
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
884
return le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
899
tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz);
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
995
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_fw.c
109
dl = priv_to_devlink(ionic);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
133
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
138
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
139
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
156
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
158
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
161
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
167
err = ionic_fw_status_long_wait(ionic, "Installing",
drivers/net/ethernet/pensando/ionic/ionic_fw.c
177
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
179
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
180
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
186
err = ionic_fw_status_long_wait(ionic, "Selecting",
drivers/net/ethernet/pensando/ionic/ionic_fw.c
59
static int ionic_fw_status_long_wait(struct ionic *ionic,
drivers/net/ethernet/pensando/ionic/ionic_fw.c
76
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
77
ionic_dev_cmd_go(&ionic->idev, &cmd);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
78
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
79
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
86
dev_err(ionic->dev, "DEV_CMD firmware wait %s timed out\n", label);
drivers/net/ethernet/pensando/ionic/ionic_fw.c
97
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_fw.c
99
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
1034
devm_kfree(lif->ionic->dev, txq);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
1057
rxq_i = lif->ionic->nrxqs_per_lif;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
1095
devm_kfree(lif->ionic->dev, rxq);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
121
mod_timer(&lif->ionic->watchdog_timer, jiffies + 1);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
1220
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
138
queue_work(lif->ionic->wq, &lif->deferred.work);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
143
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
1485
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
1518
dev_info_once(lif->ionic->dev, "NIC is not supporting vlan offload, likely in SmartNIC mode\n");
drivers/net/ethernet/pensando/ionic/ionic_lif.c
1727
if (lif->ionic->pdev->is_virtfn) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
178
ionic_port_identify(lif->ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
1853
dev_err(lif->ionic->dev, "%s: Restarting queues failed\n", __func__);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
1916
tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
1940
tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
1951
tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2037
for (i = 0; i < lif->ionic->ntxqs_per_lif && lif->txqcqs[i]; i++) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2039
devm_kfree(lif->ionic->dev, lif->txqcqs[i]);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2045
for (i = 0; i < lif->ionic->nrxqs_per_lif && lif->rxqcqs[i]; i++) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2047
devm_kfree(lif->ionic->dev, lif->rxqcqs[i]);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2054
devm_kfree(lif->ionic->dev, lif->hwstamp_txq);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2060
devm_kfree(lif->ionic->dev, lif->hwstamp_rxq);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2099
ionic_intr_coal_init(lif->ionic->idev.intr_ctrl,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2133
ionic_intr_coal_init(lif->ionic->idev.intr_ctrl,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2196
dev_err(lif->ionic->dev, "%s: bad qcq %d\n", __func__, i);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
233
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2349
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2355
down_read(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2357
if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2360
struct ionic_vf *vfdata = &ionic->vfs[vf];
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2372
up_read(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2380
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2387
down_read(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2389
if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2393
vs = &ionic->vfs[vf].stats;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2409
up_read(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2417
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2426
down_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2428
if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2432
dev_dbg(ionic->dev, "%s: vf %d macaddr %pM\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2435
ret = ionic_set_vf_config(ionic, vf, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2437
ether_addr_copy(ionic->vfs[vf].macaddr, mac);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2440
up_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2449
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2465
down_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2467
if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2471
dev_dbg(ionic->dev, "%s: vf %d vlan %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2474
ret = ionic_set_vf_config(ionic, vf, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2476
ionic->vfs[vf].vlanid = cpu_to_le16(vlan);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2479
up_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2488
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2498
down_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2500
if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2504
dev_dbg(ionic->dev, "%s: vf %d maxrate %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2507
ret = ionic_set_vf_config(ionic, vf, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2509
ionic->vfs[vf].maxrate = cpu_to_le32(tx_max);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
251
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2512
up_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2520
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2526
down_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2528
if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2532
dev_dbg(ionic->dev, "%s: vf %d spoof %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2535
ret = ionic_set_vf_config(ionic, vf, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2537
ionic->vfs[vf].spoofchk = set;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
254
index = find_first_zero_bit(ionic->intrs, ionic->nintrs);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2540
up_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2548
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
255
if (index == ionic->nintrs)
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2554
down_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2556
if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2560
dev_dbg(ionic->dev, "%s: vf %d trust %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2563
ret = ionic_set_vf_config(ionic, vf, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2565
ionic->vfs[vf].trusted = set;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2568
up_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2576
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
258
set_bit(index, ionic->intrs);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
259
ionic_intr_init(&ionic->idev, intr, index);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2597
down_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2599
if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2603
dev_dbg(ionic->dev, "%s: vf %d linkstate %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2606
ret = ionic_set_vf_config(ionic, vf, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2608
ionic->vfs[vf].linkstate = set;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
261
err = ionic_bus_get_irq(ionic, intr->index);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2611
up_write(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2618
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2622
if (!ionic->vfs)
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2625
down_read(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2627
for (i = 0; i < ionic->num_vfs; i++) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2628
v = &ionic->vfs[i];
drivers/net/ethernet/pensando/ionic/ionic_lif.c
263
clear_bit(index, ionic->intrs);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2633
ionic_set_vf_config(ionic, i, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2640
ionic_set_vf_config(ionic, i, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2647
ionic_set_vf_config(ionic, i, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2654
ionic_set_vf_config(ionic, i, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2661
ionic_set_vf_config(ionic, i, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2668
ionic_set_vf_config(ionic, i, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2675
ionic_set_vf_config(ionic, i, &vfc);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2680
up_read(&ionic->vf_op_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2682
ionic_vf_start(ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2741
for (i = 0; i < lif->ionic->nrxqs_per_lif && lif->rxqcqs[i]; i++) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
275
if (index != IONIC_INTR_INDEX_NOT_ASSIGNED && index < lif->ionic->nintrs)
drivers/net/ethernet/pensando/ionic/ionic_lif.c
276
clear_bit(index, lif->ionic->intrs);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2858
dev_warn(lif->ionic->dev,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2865
dev_err(lif->ionic->dev,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2873
dev_err(lif->ionic->dev,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2946
tx_qcqs = devm_kcalloc(lif->ionic->dev, lif->ionic->ntxqs_per_lif,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
2957
rx_qcqs = devm_kcalloc(lif->ionic->dev, lif->ionic->nrxqs_per_lif,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3078
for (i = 0; i < lif->ionic->ntxqs_per_lif; i++) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3089
ionic_intr_coal_init(lif->ionic->idev.intr_ctrl,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3096
ionic_intr_coal_init(lif->ionic->idev.intr_ctrl,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
311
idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
312
dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3139
devm_kfree(lif->ionic->dev, tx_qcqs[i]);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3145
devm_kfree(lif->ionic->dev, rx_qcqs[i]);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3152
devm_kfree(lif->ionic->dev, rx_qcqs);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3156
devm_kfree(lif->ionic->dev, tx_qcqs);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3163
for (i = lif->nxqs; i < lif->ionic->ntxqs_per_lif; i++) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3181
static int ionic_affinity_masks_alloc(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3184
int nintrs = ionic->nintrs;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3193
dev_to_node(ionic->dev)))
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3197
ionic->affinity_masks = affinity_masks;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3209
static void ionic_affinity_masks_free(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3213
for (i = 0; i < ionic->nintrs; i++)
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3214
free_cpumask_var(ionic->affinity_masks[i]);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3215
kfree(ionic->affinity_masks);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3216
ionic->affinity_masks = NULL;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3219
int ionic_lif_alloc(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3221
struct device *dev = ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3233
ionic->ntxqs_per_lif, ionic->ntxqs_per_lif);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3244
ionic->lif = lif;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3245
lif->ionic = ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3254
err = ionic_lif_identify(ionic, lif->lif_type, lif->identity);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3256
dev_err(ionic->dev, "Cannot identify type %d: %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3265
lif->neqs = ionic->neqs_per_lif;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3266
lif->nxqs = ionic->ntxqs_per_lif;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3280
lif->rx_coalesce_hw = ionic_coal_usec_to_hw(lif->ionic,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3311
err = ionic_affinity_masks_alloc(ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3322
tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3342
ionic_affinity_masks_free(lif->ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3362
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3367
mutex_lock(&lif->ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3369
ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3370
mutex_unlock(&lif->ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3375
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3380
dev_info(ionic->dev, "FW Down: Stopping LIFs\n");
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3384
ionic_auxbus_unregister(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3387
dev_info(ionic->dev, "Surprise FW stop, stopping queues\n");
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3396
ionic_reset(ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3402
dev_info(ionic->dev, "FW Down: LIFs stopped\n");
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3407
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3413
dev_info(ionic->dev, "FW Up: clearing broken state\n");
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3445
ionic_queue_doorbell_check(ionic, IONIC_NAPI_DEADLINE);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3447
ionic_auxbus_register(ionic->lif);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3465
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3471
dev_info(ionic->dev, "FW Up: restarting LIFs\n");
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3477
ionic_init_devinfo(ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3478
ionic_reset(ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3479
err = ionic_identify(ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3482
err = ionic_port_identify(ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3485
err = ionic_port_init(ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3493
dev_info(ionic->dev, "FW Up: LIFs restarted\n");
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3501
dev_err(ionic->dev, "FW Up: LIFs restart failed - err %d\n", err);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3506
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3521
ionic_affinity_masks_free(lif->ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3555
ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3563
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
357
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3570
idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3574
mutex_lock(&lif->ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3576
err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3578
mutex_unlock(&lif->ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3613
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3728
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3729
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3734
mutex_lock(&lif->ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3736
err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3738
mutex_unlock(&lif->ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3745
lif->dbid_count = le32_to_cpu(lif->ionic->ident.dev.ndbpgs_per_lif);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3753
lif->kern_dbpage = ionic_bus_map_dbpage(lif->ionic, dbpage_num);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3763
if (lif->ionic->nnqs_per_lif) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3787
lif->doorbell_wa = ionic_doorbell_wa(lif->ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
379
dev_dbg(lif->ionic->dev, "q_disable.index %d q_disable.qtype %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3801
ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3836
struct ionic *ionic = container_of(nb, struct ionic, nb);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3839
if (!lif || lif->ionic != ionic)
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3857
lif->ionic->nb.notifier_call = ionic_lif_notify;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3859
err = register_netdevice_notifier(&lif->ionic->nb);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3861
lif->ionic->nb.notifier_call = NULL;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3866
dev_err(lif->ionic->dev, "Cannot register net device: %d, aborting\n", err);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
387
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3880
if (lif->ionic->nb.notifier_call) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3881
unregister_netdevice_notifier(&lif->ionic->nb);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3882
lif->ionic->nb.notifier_call = NULL;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3896
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3902
idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3921
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3924
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3935
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3938
dev_err(ionic->dev, "qtype %d not supported\n", qtype);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3941
dev_err(ionic->dev, "q_ident failed, not supported on older FW\n");
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3944
dev_err(ionic->dev, "q_ident failed, qtype %d: %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3949
dev_dbg(ionic->dev, " qtype[%d].version = %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3951
dev_dbg(ionic->dev, " qtype[%d].supported = 0x%02x\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3953
dev_dbg(ionic->dev, " qtype[%d].features = 0x%04llx\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3955
dev_dbg(ionic->dev, " qtype[%d].desc_sz = %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3957
dev_dbg(ionic->dev, " qtype[%d].comp_sz = %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3959
dev_dbg(ionic->dev, " qtype[%d].sg_desc_sz = %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3961
dev_dbg(ionic->dev, " qtype[%d].max_sg_elems = %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3963
dev_dbg(ionic->dev, " qtype[%d].sg_desc_stride = %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3974
dev_dbg(ionic->dev, "qtype %d max_sg_elems %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3979
int ionic_lif_identify(struct ionic *ionic, u8 lif_type,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3982
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3988
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3990
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3992
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3996
dev_dbg(ionic->dev, "capabilities 0x%llx\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
3999
dev_dbg(ionic->dev, "eth.max_ucast_filters %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4001
dev_dbg(ionic->dev, "eth.max_mcast_filters %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4003
dev_dbg(ionic->dev, "eth.features 0x%llx\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4005
dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_ADMINQ] %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4007
dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_NOTIFYQ] %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4009
dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_RXQ] %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4011
dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_TXQ] %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4013
dev_dbg(ionic->dev, "eth.config.name %s\n", lid->eth.config.name);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4014
dev_dbg(ionic->dev, "eth.config.mac %pM\n", lid->eth.config.mac);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4015
dev_dbg(ionic->dev, "eth.config.mtu %d\n",
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4021
int ionic_lif_size(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4023
struct ionic_identity *ident = &ionic->ident;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4077
err = ionic_bus_alloc_irq_vectors(ionic, nintrs);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4079
dev_err(ionic->dev, "Can't get intrs from OS: %d\n", err);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4086
ionic_bus_free_irq_vectors(ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4090
ionic->nnqs_per_lif = nnqs_per_lif;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4091
ionic->neqs_per_lif = neqs;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4092
ionic->ntxqs_per_lif = nxqs;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4093
ionic->nrxqs_per_lif = nxqs;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4094
ionic->nintrs = nintrs;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4096
ionic_debugfs_add_sizes(ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
411
devm_free_irq(lif->ionic->dev, qcq->intr.vector, &qcq->napi);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
4113
dev_err(ionic->dev, "Can't get minimum %d intrs from OS\n", min_intrs);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
419
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
463
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
523
ionic_intr_mask_assert(lif->ionic->idev.intr_ctrl, qcq->intr.index,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
533
affinity_mask = &lif->ionic->affinity_masks[qcq->intr.index];
drivers/net/ethernet/pensando/ionic/ionic_lif.c
538
dev_to_node(lif->ionic->dev));
drivers/net/ethernet/pensando/ionic/ionic_lif.c
566
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
567
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
596
.dev = lif->ionic->dev,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
72
new_coal = ionic_coal_usec_to_hw(lif->ionic, cur_moder.usec);
drivers/net/ethernet/pensando/ionic/ionic_lif.c
761
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
777
if (lif->ionic->nnqs_per_lif) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c
79
ionic_intr_coal_init(lif->ionic->idev.intr_ctrl,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
795
lif->txqcqs = devm_kcalloc(dev, lif->ionic->ntxqs_per_lif,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
799
lif->rxqcqs = devm_kcalloc(dev, lif->ionic->nrxqs_per_lif,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
804
lif->txqstats = devm_kcalloc(dev, lif->ionic->ntxqs_per_lif + 1,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
808
lif->rxqstats = devm_kcalloc(dev, lif->ionic->nrxqs_per_lif + 1,
drivers/net/ethernet/pensando/ionic/ionic_lif.c
835
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
900
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_lif.c
997
txq_i = lif->ionic->ntxqs_per_lif;
drivers/net/ethernet/pensando/ionic/ionic_lif.h
187
struct ionic *ionic;
drivers/net/ethernet/pensando/ionic/ionic_lif.h
316
static inline u32 ionic_coal_usec_to_hw(struct ionic *ionic, u32 usecs)
drivers/net/ethernet/pensando/ionic/ionic_lif.h
318
u32 mult = le32_to_cpu(ionic->ident.dev.intr_coal_mult);
drivers/net/ethernet/pensando/ionic/ionic_lif.h
319
u32 div = le32_to_cpu(ionic->ident.dev.intr_coal_div);
drivers/net/ethernet/pensando/ionic/ionic_lif.h
342
int ionic_lif_alloc(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_lif.h
357
int ionic_lif_identify(struct ionic *ionic, u8 lif_type,
drivers/net/ethernet/pensando/ionic/ionic_lif.h
359
int ionic_lif_size(struct ionic *ionic);
drivers/net/ethernet/pensando/ionic/ionic_main.c
274
dev_dbg(lif->ionic->dev, "notifyq event:\n");
drivers/net/ethernet/pensando/ionic/ionic_main.c
283
if (lif->ionic->idev.fw_status_ready &&
drivers/net/ethernet/pensando/ionic/ionic_main.c
391
err = ionic_heartbeat_check(lif->ionic);
drivers/net/ethernet/pensando/ionic/ionic_main.c
444
ionic_heartbeat_check(lif->ionic);
drivers/net/ethernet/pensando/ionic/ionic_main.c
446
!lif->ionic->idev.fw_status_ready) ||
drivers/net/ethernet/pensando/ionic/ionic_main.c
458
dev_dbg(lif->ionic->dev, "%s: elapsed %d msecs\n",
drivers/net/ethernet/pensando/ionic/ionic_main.c
472
if (!ionic_is_fw_running(&lif->ionic->idev))
drivers/net/ethernet/pensando/ionic/ionic_main.c
491
static void ionic_dev_cmd_clean(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_main.c
493
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_main.c
502
void ionic_dev_cmd_dev_err_print(struct ionic *ionic, u8 opcode, u8 status,
drivers/net/ethernet/pensando/ionic/ionic_main.c
510
dev_err(ionic->dev, "DEV_CMD %s (%d) error, %s (%d) failed\n",
drivers/net/ethernet/pensando/ionic/ionic_main.c
514
static int __ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds,
drivers/net/ethernet/pensando/ionic/ionic_main.c
517
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_main.c
544
dev_dbg(ionic->dev, "DEVCMD %s (%d) done=%d took %ld secs (%ld jiffies)\n",
drivers/net/ethernet/pensando/ionic/ionic_main.c
549
ionic_dev_cmd_clean(ionic);
drivers/net/ethernet/pensando/ionic/ionic_main.c
550
dev_warn(ionic->dev, "DEVCMD %s (%d) interrupted - FW is down\n",
drivers/net/ethernet/pensando/ionic/ionic_main.c
556
ionic_dev_cmd_clean(ionic);
drivers/net/ethernet/pensando/ionic/ionic_main.c
557
dev_warn(ionic->dev, "DEVCMD %s (%d) timeout after %ld secs\n",
drivers/net/ethernet/pensando/ionic/ionic_main.c
562
err = ionic_dev_cmd_status(&ionic->idev);
drivers/net/ethernet/pensando/ionic/ionic_main.c
566
dev_dbg(ionic->dev, "DEV_CMD %s (%d), %s (%d) retrying...\n",
drivers/net/ethernet/pensando/ionic/ionic_main.c
578
ionic_dev_cmd_dev_err_print(ionic, opcode, err,
drivers/net/ethernet/pensando/ionic/ionic_main.c
584
ionic_dev_cmd_clean(ionic);
drivers/net/ethernet/pensando/ionic/ionic_main.c
589
int ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds)
drivers/net/ethernet/pensando/ionic/ionic_main.c
591
return __ionic_dev_cmd_wait(ionic, max_seconds, true);
drivers/net/ethernet/pensando/ionic/ionic_main.c
594
int ionic_dev_cmd_wait_nomsg(struct ionic *ionic, unsigned long max_seconds)
drivers/net/ethernet/pensando/ionic/ionic_main.c
596
return __ionic_dev_cmd_wait(ionic, max_seconds, false);
drivers/net/ethernet/pensando/ionic/ionic_main.c
599
int ionic_setup(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_main.c
603
err = ionic_dev_setup(ionic);
drivers/net/ethernet/pensando/ionic/ionic_main.c
606
ionic_reset(ionic);
drivers/net/ethernet/pensando/ionic/ionic_main.c
611
int ionic_identify(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_main.c
613
struct ionic_identity *ident = &ionic->ident;
drivers/net/ethernet/pensando/ionic/ionic_main.c
614
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_main.c
624
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_main.c
630
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_main.c
635
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_main.c
638
dev_err(ionic->dev, "Cannot identify ionic: %d\n", err);
drivers/net/ethernet/pensando/ionic/ionic_main.c
644
dev_info(ionic->dev, "FW: %.*s\n",
drivers/net/ethernet/pensando/ionic/ionic_main.c
648
dev_info(ionic->dev, "FW: (invalid string) 0x%02x 0x%02x 0x%02x 0x%02x ...\n",
drivers/net/ethernet/pensando/ionic/ionic_main.c
654
err = ionic_lif_identify(ionic, IONIC_LIF_TYPE_CLASSIC,
drivers/net/ethernet/pensando/ionic/ionic_main.c
655
&ionic->ident.lif);
drivers/net/ethernet/pensando/ionic/ionic_main.c
657
dev_err(ionic->dev, "Cannot identify LIFs: %d\n", err);
drivers/net/ethernet/pensando/ionic/ionic_main.c
667
int ionic_init(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_main.c
669
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_main.c
672
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_main.c
674
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_main.c
675
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_main.c
680
int ionic_reset(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_main.c
682
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_main.c
688
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_main.c
690
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_main.c
691
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_main.c
696
int ionic_port_identify(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_main.c
698
struct ionic_identity *ident = &ionic->ident;
drivers/net/ethernet/pensando/ionic/ionic_main.c
699
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_main.c
703
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_main.c
706
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_main.c
712
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_main.c
717
int ionic_port_init(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_main.c
719
struct ionic_identity *ident = &ionic->ident;
drivers/net/ethernet/pensando/ionic/ionic_main.c
720
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_main.c
726
idev->port_info = dma_alloc_coherent(ionic->dev,
drivers/net/ethernet/pensando/ionic/ionic_main.c
744
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_main.c
748
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_main.c
750
ionic_dev_cmd_port_state(&ionic->idev, IONIC_PORT_ADMIN_STATE_UP);
drivers/net/ethernet/pensando/ionic/ionic_main.c
751
ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_main.c
753
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_main.c
755
dev_err(ionic->dev, "Failed to init port\n");
drivers/net/ethernet/pensando/ionic/ionic_main.c
756
dma_free_coherent(ionic->dev, idev->port_info_sz,
drivers/net/ethernet/pensando/ionic/ionic_main.c
765
int ionic_port_reset(struct ionic *ionic)
drivers/net/ethernet/pensando/ionic/ionic_main.c
767
struct ionic_dev *idev = &ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_main.c
774
mutex_lock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_main.c
776
err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
drivers/net/ethernet/pensando/ionic/ionic_main.c
777
mutex_unlock(&ionic->dev_cmd_lock);
drivers/net/ethernet/pensando/ionic/ionic_main.c
780
dma_free_coherent(ionic->dev, idev->port_info_sz,
drivers/net/ethernet/pensando/ionic/ionic_phc.c
110
if ((ionic->ident.lif.eth.hwstamp_tx_modes & mask) != mask) {
drivers/net/ethernet/pensando/ionic/ionic_phc.c
121
if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) != mask) {
drivers/net/ethernet/pensando/ionic/ionic_phc.c
127
dev_dbg(ionic->dev, "%s: config_rx_filter %d rx_filt %#llx rx_all %d\n",
drivers/net/ethernet/pensando/ionic/ionic_phc.c
188
dev_err(ionic->dev,
drivers/net/ethernet/pensando/ionic/ionic_phc.c
196
dev_err(ionic->dev,
drivers/net/ethernet/pensando/ionic/ionic_phc.c
280
static u64 ionic_hwstamp_read(struct ionic *ionic,
drivers/net/ethernet/pensando/ionic/ionic_phc.c
286
ioread32(&ionic->idev.hwstamp_regs->tick_low);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
288
tick_high_before = ioread32(&ionic->idev.hwstamp_regs->tick_high);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
291
tick_low = ioread32(&ionic->idev.hwstamp_regs->tick_low);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
294
tick_high = ioread32(&ionic->idev.hwstamp_regs->tick_high);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
301
tick_low = ioread32(&ionic->idev.hwstamp_regs->tick_low);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
311
struct ionic *ionic = phc->lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_phc.c
313
return ionic_hwstamp_read(ionic, NULL);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
428
struct ionic *ionic = phc->lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_phc.c
438
tick = ionic_hwstamp_read(ionic, sts);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
512
lif->phc->ptp = ptp_clock_register(&lif->phc->ptp_info, lif->ionic->dev);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
515
dev_warn(lif->ionic->dev, "Cannot register phc device: %ld\n",
drivers/net/ethernet/pensando/ionic/ionic_phc.c
537
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_phc.c
544
if (!ionic->idev.hwstamp_regs)
drivers/net/ethernet/pensando/ionic/ionic_phc.c
547
features = le64_to_cpu(ionic->ident.lif.eth.config.features);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
551
phc = devm_kzalloc(ionic->dev, sizeof(*phc), GFP_KERNEL);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
558
phc->cc.mask = le64_to_cpu(ionic->ident.dev.hwstamp_mask);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
559
phc->cc.mult = le32_to_cpu(ionic->ident.dev.hwstamp_mult);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
560
phc->cc.shift = le32_to_cpu(ionic->ident.dev.hwstamp_shift);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
563
dev_err(lif->ionic->dev,
drivers/net/ethernet/pensando/ionic/ionic_phc.c
566
devm_kfree(lif->ionic->dev, phc);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
571
dev_dbg(lif->ionic->dev, "Device PHC mask %#llx mult %u shift %u\n",
drivers/net/ethernet/pensando/ionic/ionic_phc.c
627
dev_dbg(lif->ionic->dev, "Initial PHC mask %#llx mult %u shift %u\n",
drivers/net/ethernet/pensando/ionic/ionic_phc.c
638
dev_dbg(lif->ionic->dev, "Work delay %llu ms\n", delay / NSEC_PER_MSEC);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
659
devm_kfree(lif->ionic->dev, lif->phc);
drivers/net/ethernet/pensando/ionic/ionic_phc.c
73
struct ionic *ionic = lif->ionic;
drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c
127
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c
15
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c
560
struct device *dev = lif->ionic->dev;
drivers/net/ethernet/pensando/ionic/ionic_stats.c
238
struct ionic_dev *idev = &lif->ionic->idev;
drivers/net/ethernet/pensando/ionic/ionic_stats.c
242
if (!(lif->ionic->ident.dev.capabilities &
drivers/net/ethernet/pensando/ionic/ionic_stats.c
306
if (!(lif->ionic->ident.dev.capabilities &
drivers/net/ethernet/pensando/ionic/ionic_stats.c
310
pes_cache = &lif->ionic->idev.port_extra_stats_cache;
drivers/net/ethernet/pensando/ionic/ionic_stats.c
372
if (!(lif->ionic->ident.dev.capabilities &
drivers/net/ethernet/pensando/ionic/ionic_stats.c
379
pes_cache = &lif->ionic->idev.port_extra_stats_cache;
drivers/net/ethernet/pensando/ionic/ionic_stats.c
400
port_stats = &lif->ionic->idev.port_info->stats;