cregit-Linux how code gets into the kernel

Release 4.7 drivers/infiniband/ulp/ipoib/ipoib_ethtool.c

/*
 * Copyright (c) 2007 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.
 */

#include <linux/kernel.h>
#include <linux/ethtool.h>
#include <linux/netdevice.h>

#include "ipoib.h"


struct ipoib_stats {
	
char stat_string[ETH_GSTRING_LEN];
	
int stat_offset;
};


#define IPOIB_NETDEV_STAT(m) { \
                .stat_string = #m, \
                .stat_offset = offsetof(struct rtnl_link_stats64, m) }


static const struct ipoib_stats ipoib_gstrings_stats[] = {
	IPOIB_NETDEV_STAT(rx_packets),
	IPOIB_NETDEV_STAT(tx_packets),
	IPOIB_NETDEV_STAT(rx_bytes),
	IPOIB_NETDEV_STAT(tx_bytes),
	IPOIB_NETDEV_STAT(tx_errors),
	IPOIB_NETDEV_STAT(rx_dropped),
	IPOIB_NETDEV_STAT(tx_dropped)
};


#define IPOIB_GLOBAL_STATS_LEN	ARRAY_SIZE(ipoib_gstrings_stats)


static void ipoib_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo) { struct ipoib_dev_priv *priv = netdev_priv(netdev); snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version), "%d.%d.%d", (int)(priv->ca->attrs.fw_ver >> 32), (int)(priv->ca->attrs.fw_ver >> 16) & 0xffff, (int)priv->ca->attrs.fw_ver & 0xffff); strlcpy(drvinfo->bus_info, dev_name(priv->ca->dma_device), sizeof(drvinfo->bus_info)); strlcpy(drvinfo->version, ipoib_driver_version, sizeof(drvinfo->version)); strlcpy(drvinfo->driver, "ib_ipoib", sizeof(drvinfo->driver)); }

Contributors

PersonTokensPropCommitsCommitProp
yan burmanyan burman9768.31%133.33%
eli coheneli cohen3021.13%133.33%
or gerlitzor gerlitz1510.56%133.33%
Total142100.00%3100.00%


static int ipoib_get_coalesce(struct net_device *dev, struct ethtool_coalesce *coal) { struct ipoib_dev_priv *priv = netdev_priv(dev); coal->rx_coalesce_usecs = priv->ethtool.coalesce_usecs; coal->rx_max_coalesced_frames = priv->ethtool.max_coalesced_frames; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
eli coheneli cohen49100.00%1100.00%
Total49100.00%1100.00%


static int ipoib_set_coalesce(struct net_device *dev, struct ethtool_coalesce *coal) { struct ipoib_dev_priv *priv = netdev_priv(dev); int ret; /* * These values are saved in the private data and returned * when ipoib_get_coalesce() is called */ if (coal->rx_coalesce_usecs > 0xffff || coal->rx_max_coalesced_frames > 0xffff) return -EINVAL; ret = ib_modify_cq(priv->recv_cq, coal->rx_max_coalesced_frames, coal->rx_coalesce_usecs); if (ret && ret != -ENOSYS) { ipoib_warn(priv, "failed modifying CQ (%d)\n", ret); return ret; } priv->ethtool.coalesce_usecs = coal->rx_coalesce_usecs; priv->ethtool.max_coalesced_frames = coal->rx_max_coalesced_frames; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
eli coheneli cohen11099.10%266.67%
or gerlitzor gerlitz10.90%133.33%
Total111100.00%3100.00%


static void ipoib_get_ethtool_stats(struct net_device *dev, struct ethtool_stats __always_unused *stats, u64 *data) { int i; struct net_device_stats *net_stats = &dev->stats; u8 *p = (u8 *)net_stats; for (i = 0; i < IPOIB_GLOBAL_STATS_LEN; i++) data[i] = *(u64 *)(p + ipoib_gstrings_stats[i].stat_offset); }

Contributors

PersonTokensPropCommitsCommitProp
hans westgaard ryhans westgaard ry78100.00%1100.00%
Total78100.00%1100.00%


static void ipoib_get_strings(struct net_device __always_unused *dev, u32 stringset, u8 *data) { u8 *p = data; int i; switch (stringset) { case ETH_SS_STATS: for (i = 0; i < IPOIB_GLOBAL_STATS_LEN; i++) { memcpy(p, ipoib_gstrings_stats[i].stat_string, ETH_GSTRING_LEN); p += ETH_GSTRING_LEN; } break; case ETH_SS_TEST: default: break; } }

Contributors

PersonTokensPropCommitsCommitProp
hans westgaard ryhans westgaard ry76100.00%1100.00%
Total76100.00%1100.00%


static int ipoib_get_sset_count(struct net_device __always_unused *dev, int sset) { switch (sset) { case ETH_SS_STATS: return IPOIB_GLOBAL_STATS_LEN; case ETH_SS_TEST: default: break; } return -EOPNOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
hans westgaard ryhans westgaard ry36100.00%1100.00%
Total36100.00%1100.00%

static const struct ethtool_ops ipoib_ethtool_ops = { .get_drvinfo = ipoib_get_drvinfo, .get_coalesce = ipoib_get_coalesce, .set_coalesce = ipoib_set_coalesce, .get_strings = ipoib_get_strings, .get_ethtool_stats = ipoib_get_ethtool_stats, .get_sset_count = ipoib_get_sset_count, };
void ipoib_set_ethtool_ops(struct net_device *dev) { dev->ethtool_ops = &ipoib_ethtool_ops; }

Contributors

PersonTokensPropCommitsCommitProp
eli coheneli cohen1482.35%150.00%
wilfried klaebewilfried klaebe317.65%150.00%
Total17100.00%2100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
hans westgaard ryhans westgaard ry27443.56%112.50%
eli coheneli cohen23938.00%337.50%
yan burmanyan burman9715.42%112.50%
or gerlitzor gerlitz162.54%225.00%
wilfried klaebewilfried klaebe30.48%112.50%
Total629100.00%8100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}