Lines Matching +full:asym +full:- +full:pause
1 /* Copyright 2008-2016 Freescale Semiconductor, Inc.
81 if (!net_dev->phydev) { in dpaa_get_link_ksettings()
86 phy_ethtool_ksettings_get(net_dev->phydev, cmd); in dpaa_get_link_ksettings()
96 if (!net_dev->phydev) { in dpaa_set_link_ksettings()
98 return -ENODEV; in dpaa_set_link_ksettings()
101 err = phy_ethtool_ksettings_set(net_dev->phydev, cmd); in dpaa_set_link_ksettings()
113 strlcpy(drvinfo->driver, KBUILD_MODNAME, in dpaa_get_drvinfo()
114 sizeof(drvinfo->driver)); in dpaa_get_drvinfo()
115 len = snprintf(drvinfo->version, sizeof(drvinfo->version), in dpaa_get_drvinfo()
117 len = snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version), in dpaa_get_drvinfo()
120 if (len >= sizeof(drvinfo->fw_version)) { in dpaa_get_drvinfo()
124 strlcpy(drvinfo->bus_info, dev_name(net_dev->dev.parent->parent), in dpaa_get_drvinfo()
125 sizeof(drvinfo->bus_info)); in dpaa_get_drvinfo()
130 return ((struct dpaa_priv *)netdev_priv(net_dev))->msg_enable; in dpaa_get_msglevel()
136 ((struct dpaa_priv *)netdev_priv(net_dev))->msg_enable = msg_enable; in dpaa_set_msglevel()
143 if (!net_dev->phydev) { in dpaa_nway_reset()
145 return -ENODEV; in dpaa_nway_reset()
149 if (net_dev->phydev->autoneg) { in dpaa_nway_reset()
150 err = phy_start_aneg(net_dev->phydev); in dpaa_nway_reset()
166 mac_dev = priv->mac_dev; in dpaa_get_pauseparam()
168 if (!net_dev->phydev) { in dpaa_get_pauseparam()
173 epause->autoneg = mac_dev->autoneg_pause; in dpaa_get_pauseparam()
174 epause->rx_pause = mac_dev->rx_pause_active; in dpaa_get_pauseparam()
175 epause->tx_pause = mac_dev->tx_pause_active; in dpaa_get_pauseparam()
188 mac_dev = priv->mac_dev; in dpaa_set_pauseparam()
190 phydev = net_dev->phydev; in dpaa_set_pauseparam()
193 return -ENODEV; in dpaa_set_pauseparam()
197 return -EINVAL; in dpaa_set_pauseparam()
199 /* The MAC should know how to handle PAUSE frame autonegotiation before in dpaa_set_pauseparam()
200 * adjust_link is triggered by a forced renegotiation of sym/asym PAUSE in dpaa_set_pauseparam()
203 mac_dev->autoneg_pause = !!epause->autoneg; in dpaa_set_pauseparam()
204 mac_dev->rx_pause_req = !!epause->rx_pause; in dpaa_set_pauseparam()
205 mac_dev->tx_pause_req = !!epause->tx_pause; in dpaa_set_pauseparam()
207 /* Determine the sym/asym advertised PAUSE capabilities from the desired in dpaa_set_pauseparam()
208 * rx/tx pause settings. in dpaa_set_pauseparam()
211 phy_set_asym_pause(phydev, epause->rx_pause, epause->tx_pause); in dpaa_set_pauseparam()
233 return -EOPNOTSUPP; in dpaa_get_sset_count()
244 data[crr * num_values + crr_cpu] = percpu_priv->in_interrupt; in copy_stats()
245 data[crr++ * num_values + num_cpus] += percpu_priv->in_interrupt; in copy_stats()
247 data[crr * num_values + crr_cpu] = percpu_priv->stats.rx_packets; in copy_stats()
248 data[crr++ * num_values + num_cpus] += percpu_priv->stats.rx_packets; in copy_stats()
250 data[crr * num_values + crr_cpu] = percpu_priv->stats.tx_packets; in copy_stats()
251 data[crr++ * num_values + num_cpus] += percpu_priv->stats.tx_packets; in copy_stats()
253 data[crr * num_values + crr_cpu] = percpu_priv->tx_confirm; in copy_stats()
254 data[crr++ * num_values + num_cpus] += percpu_priv->tx_confirm; in copy_stats()
256 data[crr * num_values + crr_cpu] = percpu_priv->tx_frag_skbuffs; in copy_stats()
257 data[crr++ * num_values + num_cpus] += percpu_priv->tx_frag_skbuffs; in copy_stats()
259 data[crr * num_values + crr_cpu] = percpu_priv->stats.tx_errors; in copy_stats()
260 data[crr++ * num_values + num_cpus] += percpu_priv->stats.tx_errors; in copy_stats()
262 data[crr * num_values + crr_cpu] = percpu_priv->stats.rx_errors; in copy_stats()
263 data[crr++ * num_values + num_cpus] += percpu_priv->stats.rx_errors; in copy_stats()
294 percpu_priv = per_cpu_ptr(priv->percpu_priv, i); in dpaa_get_ethtool_stats()
296 dpaa_bp = priv->dpaa_bps[j]; in dpaa_get_ethtool_stats()
297 if (!dpaa_bp->percpu_count) in dpaa_get_ethtool_stats()
299 bp_count[j] = *(per_cpu_ptr(dpaa_bp->percpu_count, i)); in dpaa_get_ethtool_stats()
301 rx_errors.dme += percpu_priv->rx_errors.dme; in dpaa_get_ethtool_stats()
302 rx_errors.fpe += percpu_priv->rx_errors.fpe; in dpaa_get_ethtool_stats()
303 rx_errors.fse += percpu_priv->rx_errors.fse; in dpaa_get_ethtool_stats()
304 rx_errors.phe += percpu_priv->rx_errors.phe; in dpaa_get_ethtool_stats()
306 ern_cnt.cg_tdrop += percpu_priv->ern_cnt.cg_tdrop; in dpaa_get_ethtool_stats()
307 ern_cnt.wred += percpu_priv->ern_cnt.wred; in dpaa_get_ethtool_stats()
308 ern_cnt.err_cond += percpu_priv->ern_cnt.err_cond; in dpaa_get_ethtool_stats()
309 ern_cnt.early_window += percpu_priv->ern_cnt.early_window; in dpaa_get_ethtool_stats()
310 ern_cnt.late_window += percpu_priv->ern_cnt.late_window; in dpaa_get_ethtool_stats()
311 ern_cnt.fq_tdrop += percpu_priv->ern_cnt.fq_tdrop; in dpaa_get_ethtool_stats()
312 ern_cnt.fq_retired += percpu_priv->ern_cnt.fq_retired; in dpaa_get_ethtool_stats()
313 ern_cnt.orp_zero += percpu_priv->ern_cnt.orp_zero; in dpaa_get_ethtool_stats()
327 cg_time = jiffies_to_msecs(priv->cgr_data.congested_jiffies); in dpaa_get_ethtool_stats()
328 if (qman_query_cgr_congested(&priv->cgr_data.cgr, &cg_status) == 0) { in dpaa_get_ethtool_stats()
329 cg_num = priv->cgr_data.cgr_congested_count; in dpaa_get_ethtool_stats()
332 priv->cgr_data.congested_jiffies = 0; in dpaa_get_ethtool_stats()
333 priv->cgr_data.cgr_congested_count = 0; in dpaa_get_ethtool_stats()
386 cmd->data = 0; in dpaa_get_hash_opts()
388 switch (cmd->flow_type) { in dpaa_get_hash_opts()
393 if (priv->keygen_in_use) in dpaa_get_hash_opts()
394 cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3; in dpaa_get_hash_opts()
406 if (priv->keygen_in_use) in dpaa_get_hash_opts()
407 cmd->data |= RXH_IP_SRC | RXH_IP_DST; in dpaa_get_hash_opts()
410 cmd->data = 0; in dpaa_get_hash_opts()
420 int ret = -EOPNOTSUPP; in dpaa_get_rxnfc()
422 switch (cmd->cmd) { in dpaa_get_rxnfc()
440 mac_dev = priv->mac_dev; in dpaa_set_hash()
441 rxport = mac_dev->port[0]; in dpaa_set_hash()
444 priv->keygen_in_use = enable; in dpaa_set_hash()
450 int ret = -EINVAL; in dpaa_set_hash_opts()
453 if (nfc->data & in dpaa_set_hash_opts()
455 return -EINVAL; in dpaa_set_hash_opts()
457 switch (nfc->flow_type) { in dpaa_set_hash_opts()
472 dpaa_set_hash(dev, !!nfc->data); in dpaa_set_hash_opts()
484 int ret = -EOPNOTSUPP; in dpaa_set_rxnfc()
486 switch (cmd->cmd) { in dpaa_set_rxnfc()
500 struct device *dev = net_dev->dev.parent; in dpaa_get_ts_info()
501 struct device_node *mac_node = dev->of_node; in dpaa_get_ts_info()
506 info->phc_index = -1; in dpaa_get_ts_info()
510 ptp_node = of_parse_phandle(fman_node, "ptimer-handle", 0); in dpaa_get_ts_info()
519 info->phc_index = ptp->phc_index; in dpaa_get_ts_info()
521 info->so_timestamping = SOF_TIMESTAMPING_TX_HARDWARE | in dpaa_get_ts_info()
524 info->tx_types = (1 << HWTSTAMP_TX_OFF) | in dpaa_get_ts_info()
526 info->rx_filters = (1 << HWTSTAMP_FILTER_NONE) | in dpaa_get_ts_info()
543 c->rx_coalesce_usecs = period; in dpaa_get_coalesce()
544 c->rx_max_coalesced_frames = thresh; in dpaa_get_coalesce()
545 c->use_adaptive_rx_coalesce = false; in dpaa_get_coalesce()
560 if (c->use_adaptive_rx_coalesce) in dpaa_set_coalesce()
561 return -EINVAL; in dpaa_set_coalesce()
563 period = c->rx_coalesce_usecs; in dpaa_set_coalesce()
564 thresh = c->rx_max_coalesced_frames; in dpaa_set_coalesce()