Lines Matching +full:queue +full:- +full:rx
1 // SPDX-License-Identifier: GPL-2.0-or-later
10 * Can only get/set settings of the first queue.
11 * Need to re-open the interface manually after changing some parameters.
24 #include <linux/dma-mapping.h>
37 "tx-64-frames",
38 "tx-65-127-frames",
39 "tx-128-255-frames",
40 "rx-64-frames",
41 "rx-65-127-frames",
42 "rx-128-255-frames",
43 "tx-bytes-ok",
44 "tx-pause-frames",
45 "tx-multicast-frames",
46 "tx-broadcast-frames",
47 "rx-frames",
48 "rx-bytes-ok",
49 "rx-bytes-all",
50 "rx-multicast-frames",
51 "rx-broadcast-frames",
52 "stats-counter-carry",
53 "stats-counter-mask",
54 "rx-dropped-frames",
58 "tx-single-collision",
59 "tx-multiple-collision",
60 "tx-late-collision",
61 "tx-aborted-frames",
62 "tx-lost-frames",
63 "tx-carrier-sense-errors",
64 "tx-frames-ok",
65 "tx-excessive-differ-frames",
66 "tx-256-511-frames",
67 "tx-512-1023-frames",
68 "tx-1024-1518-frames",
69 "tx-jumbo-frames",
73 "rx-crc-errors",
74 "rx-alignment-errors",
75 "rx-in-range-length-errors",
76 "rx-out-of-range-length-errors",
77 "rx-too-long-frames",
78 "rx-runt",
79 "rx-very-long-event",
80 "rx-symbol-errors",
81 "rx-busy-drop-frames",
84 "rx-mismatch-drop-frames",
85 "rx-small-than-64",
86 "rx-256-511-frames",
87 "rx-512-1023-frames",
88 "rx-1024-1518-frames",
89 "rx-jumbo-frames",
90 "rx-mac-error-loss",
91 "rx-pause-frames",
93 "rx-vlan-removed",
94 "rx-vlan-replaced",
95 "rx-vlan-inserted",
96 "rx-ip-checksum-errors",
108 return phylink_ethtool_ksettings_get(ugeth->phylink, cmd); in uec_get_ksettings()
117 return phylink_ethtool_ksettings_set(ugeth->phylink, cmd); in uec_set_ksettings()
126 return phylink_ethtool_get_pauseparam(ugeth->phylink, pause); in uec_get_pauseparam()
135 ugeth->ug_info->receiveFlowControl = pause->rx_pause; in uec_set_pauseparam()
136 ugeth->ug_info->transmitFlowControl = pause->tx_pause; in uec_set_pauseparam()
138 return phylink_ethtool_set_pauseparam(ugeth->phylink, pause); in uec_set_pauseparam()
145 return ugeth->msg_enable; in uec_get_msglevel()
152 ugeth->msg_enable = data; in uec_set_msglevel()
167 u32 __iomem *ug_regs = (u32 __iomem *)ugeth->ug_regs; in uec_get_regs()
181 struct ucc_geth_info *ug_info = ugeth->ug_info; in uec_get_ringparam()
182 int queue = 0; in uec_get_ringparam() local
184 ring->rx_max_pending = UCC_GETH_BD_RING_SIZE_MAX; in uec_get_ringparam()
185 ring->rx_mini_max_pending = UCC_GETH_BD_RING_SIZE_MAX; in uec_get_ringparam()
186 ring->rx_jumbo_max_pending = UCC_GETH_BD_RING_SIZE_MAX; in uec_get_ringparam()
187 ring->tx_max_pending = UCC_GETH_BD_RING_SIZE_MAX; in uec_get_ringparam()
189 ring->rx_pending = ug_info->bdRingLenRx[queue]; in uec_get_ringparam()
190 ring->rx_mini_pending = ug_info->bdRingLenRx[queue]; in uec_get_ringparam()
191 ring->rx_jumbo_pending = ug_info->bdRingLenRx[queue]; in uec_get_ringparam()
192 ring->tx_pending = ug_info->bdRingLenTx[queue]; in uec_get_ringparam()
202 struct ucc_geth_info *ug_info = ugeth->ug_info; in uec_set_ringparam()
203 int queue = 0, ret = 0; in uec_set_ringparam() local
205 if (ring->rx_pending < UCC_GETH_RX_BD_RING_SIZE_MIN) { in uec_set_ringparam()
208 return -EINVAL; in uec_set_ringparam()
210 if (ring->rx_pending % UCC_GETH_RX_BD_RING_SIZE_ALIGNMENT) { in uec_set_ringparam()
213 return -EINVAL; in uec_set_ringparam()
215 if (ring->tx_pending < UCC_GETH_TX_BD_RING_SIZE_MIN) { in uec_set_ringparam()
218 return -EINVAL; in uec_set_ringparam()
222 return -EBUSY; in uec_set_ringparam()
224 ug_info->bdRingLenRx[queue] = ring->rx_pending; in uec_set_ringparam()
225 ug_info->bdRingLenTx[queue] = ring->tx_pending; in uec_set_ringparam()
233 u32 stats_mode = ugeth->ug_info->statisticsMode; in uec_get_sset_count()
248 return -EOPNOTSUPP; in uec_get_sset_count()
255 u32 stats_mode = ugeth->ug_info->statisticsMode; in uec_get_strings()
273 u32 stats_mode = ugeth->ug_info->statisticsMode; in uec_get_ethtool_stats()
278 if (ugeth->ug_regs) in uec_get_ethtool_stats()
279 base = (u32 __iomem *)&ugeth->ug_regs->tx64; in uec_get_ethtool_stats()
287 base = (u32 __iomem *)ugeth->p_tx_fw_statistics_pram; in uec_get_ethtool_stats()
292 base = (u32 __iomem *)ugeth->p_rx_fw_statistics_pram; in uec_get_ethtool_stats()
303 strscpy(drvinfo->driver, DRV_NAME, sizeof(drvinfo->driver)); in uec_get_drvinfo()
304 strscpy(drvinfo->bus_info, "QUICC ENGINE", sizeof(drvinfo->bus_info)); in uec_get_drvinfo()
313 phylink_ethtool_get_wol(ugeth->phylink, wol); in uec_get_wol()
316 wol->supported |= WAKE_MAGIC; in uec_get_wol()
318 wol->wolopts |= ugeth->wol_en; in uec_get_wol()
326 ret = phylink_ethtool_set_wol(ugeth->phylink, wol); in uec_set_wol()
327 if (ret == -EOPNOTSUPP) { in uec_set_wol()
328 ugeth->phy_wol_en = 0; in uec_set_wol()
332 ugeth->phy_wol_en = wol->wolopts; in uec_set_wol()
337 * WAKE_MAGIC, error-out in uec_set_wol()
339 if (!ugeth->phy_wol_en && in uec_set_wol()
340 wol->wolopts & ~WAKE_MAGIC) in uec_set_wol()
341 return -EINVAL; in uec_set_wol()
343 if (wol->wolopts & WAKE_MAGIC && in uec_set_wol()
345 return -EINVAL; in uec_set_wol()
348 ugeth->wol_en = wol->wolopts; in uec_set_wol()
349 device_set_wakeup_enable(&netdev->dev, ugeth->wol_en); in uec_set_wol()
383 netdev->ethtool_ops = &uec_ethtool_ops; in uec_set_ethtool_ops()