Пример #1
0
/* NetDev commands */
int run_netdev_cmd(const char *buffer) {
	int			scan_count;
	struct net_device* 	dev;

    scan_count = sscanf(buffer, NETDEV_CMD_STRING, NETDEV_SCANF_LIST);

    if( scan_count != NETDEV_LIST_LEN)
    {
        printk("netdev command bad format %x != %x\n", scan_count, NETDEV_LIST_LEN );
        return 1;
    }

    switch(command) {
	case COM_NETDEV_STS:
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
            dev = dev_get_by_name(name);
#else
		dev = dev_get_by_name(&init_net, name);
#endif
		if(dev != NULL)
		{
                mv_eth_netdev_print(dev);
                dev_put(dev);
            }
            break;
#ifdef CONFIG_MV_GATEWAY
        case COM_NETDEV_PORT_ADD:
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
            dev = dev_get_by_name(name);
#else
		dev = dev_get_by_name(&init_net, name);
#endif
            if(dev != NULL)
            {
                mv_gtw_switch_port_add(dev, port);
                dev_put(dev);
            }
            break;
        case COM_NETDEV_PORT_DEL:
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
            dev = dev_get_by_name(name);
#else
		dev = dev_get_by_name(&init_net, name);
#endif
			if(dev != NULL)
            {
		mv_gtw_switch_port_del(dev, port);
                dev_put(dev);
            }
            break;
#endif /* CONFIG_MV_GATEWAY */
		default:
		printk(" Unknown netdev command \n");
    }
    return 0;
}
static ssize_t mv_switch_netdev_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t len)
{
	const char      *name = attr->attr.name;
	int             err = 0, port = 0;
	char            dev_name[30];
	struct net_device *netdev;

	if (!capable(CAP_NET_ADMIN))
		return -EPERM;

	/* Read arguments */
	sscanf(buf, "%s %d", dev_name, &port);
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
	netdev = dev_get_by_name(dev_name);
#else
	netdev = dev_get_by_name(&init_net, dev_name);
#endif
	if (netdev == NULL) {
		err = 1;
	} else {
		if (!strcmp(name, "netdev_sts"))
			mv_eth_netdev_print(netdev);
		else if (!strcmp(name, "port_add"))
			err = mv_eth_switch_port_add(netdev, port);
		else if (!strcmp(name, "port_del"))
			err = mv_eth_switch_port_del(netdev, port);

		dev_put(netdev);
	}

	if (err)
		printk(KERN_ERR " - FAILED, err=%d\n", err);
	else
		printk(KERN_ERR " - SUCCESS\n");

	return err ? -EINVAL : len;
}
Пример #3
0
void run_com_stats(void) {
	printk("\n\n#########################################################################################\n\n");
	switch(status) {
		case STS_PORT:
			printk("  PORT %d: GET ETH STATUS\n\n",port);
            mv_eth_status_print(port);
			ethPortStatus(port);
			break;

        case STS_PORT_MAC:
            ethPortUcastShow(port);
			ethPortMcast(port);
            break;

		case STS_PORT_Q:
			printk("  PORT %d: GET ETH STATUS ON Q %d\n\n",port,q);
			ethPortQueues(port, q, q, 1);
			break;

#if (MV_ETH_RX_Q_NUM > 1)
		case STS_PORT_RXP:
			printk("  PORT %d: GET ETH RX POLICY STATUS\n\n",port);
			printk("Not supported\n");
			break;
#endif /* MV_ETH_RX_Q_NUM > 1 */

		case STS_PORT_TOS_MAP:
			mv_eth_tos_map_show(port);
			break;

		case STS_PORT_TXP:
			printk("  PORT %d: GET ETH TX POLICY STATUS\n\n",port);
			ethTxPolicyRegs(port);
			break;

		case STS_PORT_REGS:
			printk("  PORT %d: GET ETH PORT REGS STATUS\n\n",port);
			ethPortRegs(port);
			break;

		case STS_PORT_MIB:
			ethPortCounters(port);
			ethPortRmonCounters(port);	
			break;

		case STS_PORT_STATS:
			printk("  PORT %d: GET ETH STATISTIC STATUS\n\n",port);
			mv_eth_stats_print(port);
			break;

        case STS_NETDEV:
			mv_eth_netdev_print(port);
            break;

#ifdef CONFIG_MV_ETH_NFP
		case STS_PORT_NFP_STATS:
			printk("  PORT %d: NFP statistics\n\n",port);
			mv_eth_nfp_stats_print(port);
			break;
#endif /* CONFIG_MV_ETH_NFP */

#ifdef CONFIG_MV_GATEWAY
        case STS_SWITCH_STATS:
            mv_gtw_switch_stats(port);
            break;
#endif /* CONFIG_MV_GATEWAY */

		default:
			printk(" Unknown status command \n");
	}
#ifdef CONFIG_MV_ETH_NFP_DUAL
    eth_remote_port_status_print(port, status);
#endif
}