/* * Copyright (c) 2017, Mellanox Technologies. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU * General Public License (GPL) Version 2, available from the file * COPYING in the main directory of this source tree, or the * OpenIB.org BSD license below: * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE.
*/
/* rtnl lock protects from race between this ethtool op and sub * interface ndo_init/uninit.
*/
ASSERT_RTNL(); if (ipriv->num_sub_interfaces > 0) {
mlx5_core_warn(epriv->mdev, "can't change number of channels for interfaces with sub interfaces (%u)\n",
ipriv->num_sub_interfaces); return -EINVAL;
}
staticinlineint mlx5_ptys_rate_enum_to_int(enum mlx5_ptys_rate rate)
{ switch (rate) { case MLX5_PTYS_RATE_SDR: return2500; case MLX5_PTYS_RATE_DDR: return5000; case MLX5_PTYS_RATE_QDR: case MLX5_PTYS_RATE_FDR10: return10000; case MLX5_PTYS_RATE_FDR: return14000; case MLX5_PTYS_RATE_EDR: return25000; case MLX5_PTYS_RATE_HDR: return50000; case MLX5_PTYS_RATE_NDR: return100000; case MLX5_PTYS_RATE_XDR: return200000; default: return -1;
}
}
static u32 mlx5i_get_speed_settings(u16 ib_link_width_oper, u16 ib_proto_oper)
{ int rate, width;
rate = mlx5_ptys_rate_enum_to_int(ib_proto_oper); if (rate < 0) return SPEED_UNKNOWN;
width = mlx5_ptys_width_enum_to_int(ib_link_width_oper); if (width < 0) return SPEED_UNKNOWN;
/* ETHTOOL_GRXRINGS is needed by ethtool -x which is not part * of rxnfc. We keep this logic out of mlx5e_ethtool_get_rxnfc, * to avoid breaking "ethtool -x" when mlx5e_ethtool_get_rxnfc * is compiled out via CONFIG_MLX5_EN_RXNFC=n.
*/ if (info->cmd == ETHTOOL_GRXRINGS) {
info->data = priv->channels.params.num_channels; return0;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.