/* 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; }
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 }