aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2014-02-12 17:14:28 -0500
committerDavid S. Miller <davem@davemloft.net>2014-02-12 17:33:02 -0500
commit6a7a1081cebacc454588a0ba448eda6bd498e709 (patch)
tree32f6eef8d2928a69b6977876575f2af6033e4023 /include/uapi
parentaf440a8aed3d88a39f26b13de26b30c36189d994 (diff)
ethtool: Update documentation of struct ethtool_pauseparam
Convert the inline comments to kernel-doc format. Explicitly specify that non-zero autoneg is an error if link autonegotiation is disabled. Specify that pause capabilities should be advertised dependent on link autonegotiation, not the autoneg flag here. There is no way to opt-out of pause frame autonegotiation, and this improves behaviour when the link partner is configured to follow pause frame autonegotiation and our interface is not. Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/uapi')
-rw-r--r--include/uapi/linux/ethtool.h36
1 files changed, 23 insertions, 13 deletions
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
index e602cd05cef1..8ca2924a2cbf 100644
--- a/include/uapi/linux/ethtool.h
+++ b/include/uapi/linux/ethtool.h
@@ -466,20 +466,30 @@ struct ethtool_channels {
466 __u32 combined_count; 466 __u32 combined_count;
467}; 467};
468 468
469/* for configuring link flow control parameters */ 469/**
470 * struct ethtool_pauseparam - Ethernet pause (flow control) parameters
471 * @cmd: Command number = %ETHTOOL_GPAUSEPARAM or %ETHTOOL_SPAUSEPARAM
472 * @autoneg: Flag to enable autonegotiation of pause frame use
473 * @rx_pause: Flag to enable reception of pause frames
474 * @tx_pause: Flag to enable transmission of pause frames
475 *
476 * Drivers should reject a non-zero setting of @autoneg when
477 * autoneogotiation is disabled (or not supported) for the link.
478 *
479 * If the link is autonegotiated, drivers should use
480 * mii_advertise_flowctrl() or similar code to set the advertised
481 * pause frame capabilities based on the @rx_pause and @tx_pause flags,
482 * even if @autoneg is zero. They should also allow the advertised
483 * pause frame capabilities to be controlled directly through the
484 * advertising field of &struct ethtool_cmd.
485 *
486 * If @autoneg is non-zero, the MAC is configured to send and/or
487 * receive pause frames according to the result of autonegotiation.
488 * Otherwise, it is configured directly based on the @rx_pause and
489 * @tx_pause flags.
490 */
470struct ethtool_pauseparam { 491struct ethtool_pauseparam {
471 __u32 cmd; /* ETHTOOL_{G,S}PAUSEPARAM */ 492 __u32 cmd;
472
473 /* If the link is being auto-negotiated (via ethtool_cmd.autoneg
474 * being true) the user may set 'autoneg' here non-zero to have the
475 * pause parameters be auto-negotiated too. In such a case, the
476 * {rx,tx}_pause values below determine what capabilities are
477 * advertised.
478 *
479 * If 'autoneg' is zero or the link is not being auto-negotiated,
480 * then {rx,tx}_pause force the driver to use/not-use pause
481 * flow control.
482 */
483 __u32 autoneg; 493 __u32 autoneg;
484 __u32 rx_pause; 494 __u32 rx_pause;
485 __u32 tx_pause; 495 __u32 tx_pause;