更改USB 网卡名称

在code/kernel-6.1/drivers/net/usb/usbnet.c文件中更
有几处地都可以改

最好在添加下面一行。但是要注意同时只能用一个usb网卡,多个不知道会怎么样
strcpy(dev->name,“eth1”); //第三处添加

usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
{struct usbnet			*dev;struct net_device		*net;struct usb_host_interface	*interface;const struct driver_info	*info;struct usb_device		*xdev;int				status;const char			*name;struct usb_driver 	*driver = to_usb_driver(udev->dev.driver);/* usbnet already took usb runtime pm, so have to enable the feature* for usb interface, otherwise usb_autopm_get_interface may return* failure if RUNTIME_PM is enabled.*/if (!driver->supports_autosuspend) {driver->supports_autosuspend = 1;pm_runtime_enable(&udev->dev);}name = udev->dev.driver->name;info = (const struct driver_info *) prod->driver_info;if (!info) {dev_dbg (&udev->dev, "blacklisted by %s\n", name);return -ENODEV;}xdev = interface_to_usbdev (udev);interface = udev->cur_altsetting;status = -ENOMEM;// set up our own recordsnet = alloc_etherdev(sizeof(*dev));if (!net)goto out;/* netdev_printk() needs this so do it as early as possible */SET_NETDEV_DEV(net, &udev->dev);dev = netdev_priv(net);dev->udev = xdev;dev->intf = udev;dev->driver_info = info;dev->driver_name = name;dev->rx_speed = SPEED_UNSET;dev->tx_speed = SPEED_UNSET;net->tstats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);if (!net->tstats)goto out0;dev->msg_enable = netif_msg_init (msg_level, NETIF_MSG_DRV| NETIF_MSG_PROBE | NETIF_MSG_LINK);init_waitqueue_head(&dev->wait);skb_queue_head_init (&dev->rxq);skb_queue_head_init (&dev->txq);skb_queue_head_init (&dev->done);skb_queue_head_init(&dev->rxq_pause);tasklet_setup(&dev->bh, usbnet_bh_tasklet);INIT_WORK (&dev->kevent, usbnet_deferred_kevent);init_usb_anchor(&dev->deferred);timer_setup(&dev->delay, usbnet_bh, 0);mutex_init (&dev->phy_mutex);mutex_init(&dev->interrupt_mutex);dev->interrupt_count = 0;dev->net = net;strscpy(net->name, "usb%d", sizeof(net->name)); 			//第一次处eth_hw_addr_set(net, node_id);/* rx and tx sides can use different message sizes;* bind() should set rx_urb_size in that case.*/dev->hard_mtu = net->mtu + net->hard_header_len;net->min_mtu = 0;net->max_mtu = ETH_MAX_MTU;net->netdev_ops = &usbnet_netdev_ops;net->watchdog_timeo = TX_TIMEOUT_JIFFIES;net->ethtool_ops = &usbnet_ethtool_ops;// allow device-specific bind/init procedures// NOTE net->name still not usable ...if (info->bind) {status = info->bind (dev, udev);if (status < 0)goto out1;// heuristic:  "usb%d" for links we know are two-host,// else "eth%d" when there's reasonable doubt.  userspace// can rename the link if it knows better.if ((dev->driver_info->flags & FLAG_ETHER) != 0 &&((dev->driver_info->flags & FLAG_POINTTOPOINT) == 0 ||(net->dev_addr [0] & 0x02) == 0))strscpy(net->name, "eth%d", sizeof(net->name)); 			//第二处 /* WLAN devices should always be named "wlan%d" */if ((dev->driver_info->flags & FLAG_WLAN) != 0)strscpy(net->name, "wlan%d", sizeof(net->name));/* WWAN devices should always be named "wwan%d" */if ((dev->driver_info->flags & FLAG_WWAN) != 0)strscpy(net->name, "wwan%d", sizeof(net->name));/* devices that cannot do ARP */if ((dev->driver_info->flags & FLAG_NOARP) != 0)net->flags |= IFF_NOARP;/* maybe the remote can't receive an Ethernet MTU */if (net->mtu > (dev->hard_mtu - net->hard_header_len))net->mtu = dev->hard_mtu - net->hard_header_len;} else if (!info->in || !info->out)status = usbnet_get_endpoints (dev, udev);else {u8 ep_addrs[3] = {info->in + USB_DIR_IN, info->out + USB_DIR_OUT, 0};dev->in = usb_rcvbulkpipe (xdev, info->in);dev->out = usb_sndbulkpipe (xdev, info->out);if (!(info->flags & FLAG_NO_SETINT))status = usb_set_interface (xdev,interface->desc.bInterfaceNumber,interface->desc.bAlternateSetting);elsestatus = 0;if (status == 0 && !usb_check_bulk_endpoints(udev, ep_addrs))status = -EINVAL;}if (status >= 0 && dev->status)status = init_status (dev, udev);if (status < 0)goto out3;if (!dev->rx_urb_size)dev->rx_urb_size = dev->hard_mtu;dev->maxpacket = usb_maxpacket(dev->udev, dev->out);if (dev->maxpacket == 0) {/* that is a broken device */status = -ENODEV;goto out4;}/* let userspace know we have a random address */if (ether_addr_equal(net->dev_addr, node_id))net->addr_assign_type = NET_ADDR_RANDOM;if ((dev->driver_info->flags & FLAG_WLAN) != 0)SET_NETDEV_DEVTYPE(net, &wlan_type);if ((dev->driver_info->flags & FLAG_WWAN) != 0)SET_NETDEV_DEVTYPE(net, &wwan_type);/* initialize max rx_qlen and tx_qlen */usbnet_update_max_qlen(dev);if (dev->can_dma_sg && !(info->flags & FLAG_SEND_ZLP) &&!(info->flags & FLAG_MULTI_PACKET)) {dev->padding_pkt = kzalloc(1, GFP_KERNEL);if (!dev->padding_pkt) {status = -ENOMEM;goto out4;}}status = register_netdev (net);strcpy(dev->name,"eth1"); 							//第三处添加if (status)goto out5;netif_info(dev, probe, dev->net,"register '%s' at usb-%s-%s, %s, %pM\n",udev->dev.driver->name,xdev->bus->bus_name, xdev->devpath,dev->driver_info->description,net->dev_addr);// ok, it's ready to go.usb_set_intfdata (udev, dev);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/57658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ElementPlus的Form组件封装

前言 我们在项目开发过程中遇到最多就是表单页面的开发&#xff0c;那么使用频率比较高的就是Form组件&#xff0c;无论是vue亦或者是react&#xff0c;我们在项目中使用到UI库都会有Form组件。多数情况下都是用到了Form组件&#xff0c;我们先根据UI库或者其他类似的页面直接…

h5页面与小程序页面互相跳转

小程序跳转h5页面 一个home页 /pages/home/home 一个含有点击事件的元素&#xff1a;<button type"primary" bind:tap"toWebView">点击跳转h5页面</button>toWebView(){ wx.navigateTo({ url: /pages/webview/webview }) } 一个webView页 /pa…

一个vue3的待办列表组件

一个vue3的待办列表组件, 仿企业微信的待办列表 TodoList.vue <template><div><el-input v-model"todoInput" placeholder"写下你的待办事项..." class"el-input" keyup.enter"addTodo"input-style"background-c…

物联网行业应用实训室建设方案

一、建设背景 随着物联网技术的迅猛发展和广泛应用&#xff0c;物联网产业已跃升为新时代的经济增长引擎&#xff0c;对于产业升级和社会信息化水平的提升具有举足轻重的地位。因此&#xff0c;为了满足这一领域的迫切需求&#xff0c;培养具备物联网技术应用能力的优秀人才成…

自动发现-实现运维管理自动化

nVisual-Discovery是一款自动化工具软件&#xff0c;通过多种自动发现技术&#xff0c;协助运维管理人员快速建立可视化的网络文档&#xff0c;提升网络管理的效率与准确性。 01 IP扫描发现 当我们新接手一个网络运维项目&#xff0c;通常缺乏精准的网络文档数据&#xff0c;…

4.2-6 使用Hadoop WebUI

文章目录 1. 查看HDFS集群状态1.1 端口号说明1.2 用主机名访问1.3 主节点状态1.4 用IP地址访问1.5 查看数据节点 2. 操作HDFS文件系统2.1 查看HDFS文件系统2.2 在HDFS上创建目录2.3 上传文件到HDFS2.4 删除HDFS文件和目录 3. 查看YARN集群状态4. 实战总结 1. 查看HDFS集群状态 …

Docker部署MySQL主从复制

1. 主从复制概念及优势 1.1 概念 MySQL主从复制是一种数据库复制技术&#xff0c;它允许将一个数据库服务器&#xff08;主服务器&#xff09;上的数据更改复制到一个或多个数据库服务器&#xff08;从服务器&#xff09;。这种技术在数据库管理和维护中扮演着重要的角色&…

CSS 网格布局

网格布局是一个二维布局系统&#xff0c;允许开发者以行和列的形式创建灵活的网络&#xff0c;并将内容放置在网络的单元格中。有些元素可能只占据网络的一个单元&#xff0c;另一些元素则可能占据多行或多列。 网格的大小既可以精确定义&#xff0c;也可以根据自身内容自动计…

使用frp0.61.0透传局域网的https服务到自有域名

本文成因&#xff1a;我之前已经写过多个frphttps的文章&#xff0c;但因为frp版本升级后&#xff0c;更换了配置文件&#xff0c;其格式和之前差别比较明显&#xff0c;其次&#xff0c;之前的教程也过于繁杂&#xff0c;因此做出更新和改进。主要是展示各部分的配置文件&…

C/C++(六)多态

本文将介绍C的另一个基于继承的重要且复杂的机制&#xff0c;多态。 一、多态的概念 多态&#xff0c;就是多种形态&#xff0c;通俗来说就是不同的对象去完成某个行为&#xff0c;会产生不同的状态。 多态严格意义上分为静态多态与动态多态&#xff0c;我们平常说的多态一般…

实战应用WPS WebOffice开放平台服务

概述 根据公司的业务需要&#xff0c;主要功能是在线编辑文档&#xff0c;前端的小伙伴进行的技术调研&#xff0c;接入的是WPS WebOffice&#xff0c;这里只阐述技术介入的步骤、流程和遇到的坑进行的一些总结。 实践 WPS WebOffice 开放平台进行认证 在开始之前&#xff…

【NOIP提高组】加分二叉树

【NOIP提高组】加分二叉树 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 设一个n个节点的二叉树tree的中序遍历为&#xff08;l,2,3,…,n&#xff09;&#xff0c;其中数字1,2,3,…,n为节点编号。每个节点都有一个分数&#xff08;均为正整…

安全见闻(3)

脚本语言 lua php go(也算吧) python JavaScript nodejs这种主流脚本就很多了&#xff0c;这些编程语言都可以写一些脚本性的病毒&#xff0c;python可以编写木马&#xff0c;js也可以编写木马&#xff0c;比如beefxss&#xff0c;了解本质的人都知道那个就是相当于js写的木马…

TensorFlow面试整理-TensorFlow 结构与组件

TensorFlow 的结构和组件是其功能强大、灵活性高的重要原因。掌握这些结构和组件有助于更好地理解和使用 TensorFlow 构建、训练和部署模型。以下是 TensorFlow 关键的结构与组件介绍: 1. Tensor(张量) 定义:张量是 TensorFlow 中的数据载体,类似于多维数组或矩阵。张量的…

深入了解Vue Router:基本用法、重定向、动态路由与路由守卫的性能优化

文章目录 1. 引言2. Vue Router的基本用法2.1 基本配置 3. 重定向和命名路由的使用3.1 重定向3.2 命名路由 4. 在Vue Router中如何处理动态路由4.1 动态路由的概念4.2 如何处理动态路由4.3 动态路由的懒加载 5. 路由守卫的实现与性能影响5.1 什么是路由守卫&#xff1f;5.2 路由…

Redis 持久化 总结

前言 相关系列 《Redis & 目录》&#xff08;持续更新&#xff09;《Redis & 持久化 & 源码》&#xff08;学习过程/多有漏误/仅作参考/不再更新&#xff09;《Redis & 持久化 & 总结》&#xff08;学习总结/最新最准/持续更新&#xff09;《Redis & …

通信协议——UART

目录 基础概念串行&并行串行的优缺点 单工&双工 UART基本概念时序图思考&#xff1a;接收方如何确定01和0011 基础概念 串行&并行 串行为8车道&#xff0c;并行为1车道 串行的优缺点 通行速度快浪费资源布线复杂线与线之间存在干扰 单工&双工 单工&#xf…

WPF:Binding数据绑定

WPF&#xff08;Windows Presentation Foundation&#xff09;是微软推出的一种用于构建Windows客户端应用程序的UI框架。数据绑定是WPF中一个强大的功能&#xff0c;它允许UI元素与数据源之间建立连接&#xff0c;使得UI能够自动显示数据源中的数据&#xff0c;并且当数据源中…

NewStarCTF 2023 公开赛道 Web week1-week2

目录 week1 泄漏的秘密 Begin of Upload Begin of HTTP ErrorFlask ​Begin of PHP R!C!E! EasyLogin ​week2 游戏高手 include 0。0 ez_sql ​Unserialize&#xff1f; Upload again! R!!C!!E!! week1 泄漏的秘密 使用ctf-scan.py&#xff08;https://gith…

EasyExcel文件导入与导出

1.文件导入 导入校验 public class BoyListener extends AnalysisEventListener {List<String> names new ArrayList<>();/*** 每解析一行&#xff0c;回调该方法**/Overridepublic void invoke(Object data, AnalysisContext analysisContext) {//校验名称Stri…