Lines Matching defs:efx

19 #include "efx.h"
31 static void siena_init_wol(struct efx_nic *efx);
49 efx_writed_page_locked(channel->efx, &timer_cmd, FR_BZ_TIMER_COMMAND_P0,
56 struct efx_nic *efx = netdev_priv(net_dev);
60 rc = efx_mcdi_mdio_write(efx, efx->mdio_bus, prtad, devad,
73 struct efx_nic *efx = netdev_priv(net_dev);
78 rc = efx_mcdi_mdio_read(efx, efx->mdio_bus, prtad, devad,
89 static int siena_probe_port(struct efx_nic *efx)
94 efx->phy_op = &efx_mcdi_phy_ops;
97 efx->mdio.mode_support = MDIO_SUPPORTS_C45 | MDIO_EMULATE_C22;
98 efx->mdio.mdio_read = siena_mdio_read;
99 efx->mdio.mdio_write = siena_mdio_write;
102 rc = efx->phy_op->probe(efx);
107 rc = efx_nic_alloc_buffer(efx, &efx->stats_buffer,
111 netif_dbg(efx, probe, efx->net_dev,
113 (u64)efx->stats_buffer.dma_addr,
114 efx->stats_buffer.addr,
115 (u64)virt_to_phys(efx->stats_buffer.addr));
117 efx_mcdi_mac_stats(efx, efx->stats_buffer.dma_addr, 0, 0, 1);
122 static void siena_remove_port(struct efx_nic *efx)
124 efx->phy_op->remove(efx);
125 efx_nic_free_buffer(efx, &efx->stats_buffer);
157 static int siena_test_registers(struct efx_nic *efx)
159 return efx_nic_test_registers(efx, siena_register_tests,
200 static int siena_reset_hw(struct efx_nic *efx, enum reset_type method)
205 rc = efx_mcdi_handle_assertion(efx);
210 return efx_mcdi_reset_mc(efx);
212 return efx_mcdi_reset_port(efx);
215 static int siena_probe_nvconfig(struct efx_nic *efx)
220 rc = efx_mcdi_get_board_cfg(efx, efx->net_dev->perm_addr, NULL, &caps);
222 efx->timer_quantum_ns =
228 static void siena_dimension_resources(struct efx_nic *efx)
234 efx_nic_dimension_resources(efx, FR_CZ_BUF_FULL_TBL_ROWS / 2);
237 static int siena_probe_nic(struct efx_nic *efx)
248 efx->nic_data = nic_data;
250 if (efx_nic_fpga_ver(efx) != 0) {
251 netif_err(efx, probe, efx->net_dev,
257 efx_reado(efx, &reg, FR_AZ_CS_DEBUG);
258 efx->net_dev->dev_id = EFX_OWORD_FIELD(reg, FRF_CZ_CS_PORT_NUM) - 1;
260 efx_mcdi_init(efx);
263 rc = efx_mcdi_handle_assertion(efx);
269 rc = efx_mcdi_drv_attach(efx, true, &already_attached);
271 netif_err(efx, probe, efx->net_dev,
277 netif_err(efx, probe, efx->net_dev,
281 rc = siena_reset_hw(efx, RESET_TYPE_ALL);
283 netif_err(efx, probe, efx->net_dev, "failed to reset NIC\n");
287 siena_init_wol(efx);
290 rc = efx_nic_alloc_buffer(efx, &efx->irq_status, sizeof(efx_oword_t));
293 BUG_ON(efx->irq_status.dma_addr & 0x0f);
295 netif_dbg(efx, probe, efx->net_dev,
297 (unsigned long long)efx->irq_status.dma_addr,
298 efx->irq_status.addr,
299 (unsigned long long)virt_to_phys(efx->irq_status.addr));
302 rc = siena_probe_nvconfig(efx);
304 netif_err(efx, probe, efx->net_dev,
306 efx->phy_type = PHY_TYPE_NONE;
307 efx->mdio.prtad = MDIO_PRTAD_NONE;
312 rc = efx_mcdi_mon_probe(efx);
316 efx_sriov_probe(efx);
321 efx_nic_free_buffer(efx, &efx->irq_status);
324 efx_mcdi_drv_attach(efx, false, NULL);
327 kfree(efx->nic_data);
335 static int siena_init_nic(struct efx_nic *efx)
341 rc = efx_mcdi_handle_assertion(efx);
346 efx_reado(efx, &temp, FR_AZ_TX_RESERVED);
348 efx_writeo(efx, &temp, FR_AZ_TX_RESERVED);
353 efx_reado(efx, &temp, FR_AZ_TX_CFG);
356 efx_writeo(efx, &temp, FR_AZ_TX_CFG);
358 efx_reado(efx, &temp, FR_AZ_RX_CFG);
367 efx_writeo(efx, &temp, FR_AZ_RX_CFG);
370 memcpy(&temp, efx->rx_hash_key, sizeof(temp));
371 efx_writeo(efx, &temp, FR_BZ_RX_RSS_TKEY);
374 BUILD_BUG_ON(sizeof(efx->rx_hash_key) <
377 memcpy(&temp, efx->rx_hash_key, sizeof(temp));
378 efx_writeo(efx, &temp, FR_CZ_RX_RSS_IPV6_REG1);
379 memcpy(&temp, efx->rx_hash_key + sizeof(temp), sizeof(temp));
380 efx_writeo(efx, &temp, FR_CZ_RX_RSS_IPV6_REG2);
383 memcpy(&temp, efx->rx_hash_key + 2 * sizeof(temp),
385 efx_writeo(efx, &temp, FR_CZ_RX_RSS_IPV6_REG3);
388 rc = efx_mcdi_log_ctrl(efx, true, false, 0);
394 efx_writeo(efx, &temp, FR_BZ_DP_CTRL);
397 efx_writeo(efx, &temp, FR_CZ_USR_EV_CFG);
399 efx_nic_init_common(efx);
403 static void siena_remove_nic(struct efx_nic *efx)
405 efx_mcdi_mon_remove(efx);
407 efx_nic_free_buffer(efx, &efx->irq_status);
409 siena_reset_hw(efx, RESET_TYPE_ALL);
412 efx_mcdi_drv_attach(efx, false, NULL);
415 kfree(efx->nic_data);
416 efx->nic_data = NULL;
421 static int siena_try_update_nic_stats(struct efx_nic *efx)
427 mac_stats = &efx->mac_stats;
428 dma_stats = efx->stats_buffer.addr;
506 efx->n_rx_nodesc_drop_cnt =
519 static void siena_update_nic_stats(struct efx_nic *efx)
526 if (siena_try_update_nic_stats(efx) == 0)
534 static void siena_start_nic_stats(struct efx_nic *efx)
536 __le64 *dma_stats = efx->stats_buffer.addr;
540 efx_mcdi_mac_stats(efx, efx->stats_buffer.dma_addr,
544 static void siena_stop_nic_stats(struct efx_nic *efx)
546 efx_mcdi_mac_stats(efx, efx->stats_buffer.dma_addr, 0, 0, 0);
556 static void siena_get_wol(struct efx_nic *efx, struct ethtool_wolinfo *wol)
558 struct siena_nic_data *nic_data = efx->nic_data;
569 static int siena_set_wol(struct efx_nic *efx, u32 type)
571 struct siena_nic_data *nic_data = efx->nic_data;
579 efx_mcdi_wol_filter_remove(efx,
581 rc = efx_mcdi_wol_filter_set_magic(efx, efx->net_dev->dev_addr,
586 pci_wake_from_d3(efx->pci_dev, true);
588 rc = efx_mcdi_wol_filter_reset(efx);
590 pci_wake_from_d3(efx->pci_dev, false);
597 netif_err(efx, hw, efx->net_dev, "%s failed: type=%d rc=%d\n",
603 static void siena_init_wol(struct efx_nic *efx)
605 struct siena_nic_data *nic_data = efx->nic_data;
608 rc = efx_mcdi_wol_filter_get_magic(efx, &nic_data->wol_filter_id);
613 efx_mcdi_wol_filter_reset(efx);
616 pci_wake_from_d3(efx->pci_dev, true);
623 * Revision-dependent attributes used by efx.c and nic.c