当前位置: 首页 > news >正文

5G网卡network connection: disconnected

日志

5G流程中没有报任何错误,但是重新拿地址了,感觉像是驱动层连接断开了,dmesg中日志如下:

[ 1526.558377] ippassthrough:set [ ip=10.108.40.47 mask=27 ip_net=10.108.40.32 router=10.108.40.33 dns=221.12.1.227 221.12.33.227] br-lan
[ 1526.611901] paranum:3, print all para:10.108.40.47 27 10.108.40.33
[ 1526.624461] 00-ip_forward trace: ACTION=ifup INTERFACE=usb0
[ 1526.642179] ippassthrough:24 uci config network.usb0.ippassthrough=0
[ 1526.752928] 00-ip_forward:13 enable=0 ipaddr= wanip=10.108.40.47
[ 1526.790193] 00-ip_forward:17 enable=0 forwarding=1
[33074.341964] cdc_ncm 1-1:2.0 usb0: network connection: disconnected
[33074.409453] IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
[33074.431074] 00-ip_forward trace: ACTION=ifdown INTERFACE=usb0
[33074.482347] 00-ip_forward:13 enable=0 ipaddr= wanip=
[33074.500230] 00-ip_forward:17 enable=0 forwarding=1
[33077.638013] cdc_ncm 1-1:2.0 usb0: 350 mbit/s downlink 350 mbit/s uplink
[33077.670000] cdc_ncm 1-1:2.0 usb0: network connection: connected
[33077.682119] IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
[33077.877715] deconfig
[33078.419726] ippassthrough:set [ ip=10.120.73.215 mask=28 ip_net=10.120.73.208 router=10.120.73.209 dns=221.12.1.227 221.12.33.227] br-lan
[33078.480873] 00-ip_forward trace: ACTION=ifup INTERFACE=usb0
[33078.508550] paranum:3, print all para:10.120.73.215 28 10.120.73.209
[33078.529942] ippassthrough:24 uci config network.usb0.ippassthrough=0
[33078.673876] 00-ip_forward:13 enable=0 ipaddr= wanip=10.120.73.215
[33078.711189] 00-ip_forward:17 enable=0 forwarding=1
[90870.526202] br-lan: port 2(lan) neighbor 7fff.2a:3b:a1:3e:9a:a2 lost
[90870.538872] br-lan: topology change detected, propagating
[90870.550102] br-lan: port 2(lan) received tcn bpdu
[90870.559459] br-lan: topology change detected, propagating

关键日志:

[33074.341964] cdc_ncm 1-1:2.0 usb0: network connection: disconnected---断开

[33077.638013] cdc_ncm 1-1:2.0 usb0: 350 mbit/s downlink 350 mbit/s uplink
[33077.670000] cdc_ncm 1-1:2.0 usb0: network connection: connected-----恢复

查后台代码如下:

重点看下注释:说是根据CDC NCM规范,说是当通信速率变化时,由设备侧发出的事件。 

USB接口虚拟网卡

ECM

- 驱动文件路径drivers/net/usb/cdc_ether.c;
- 包含MAC头,需要MAC地址,由eth_random_addr(u8 *addr)产生;
- ECM虚拟网卡host和device端的MAC地址,都由device端生成,并且host_mac通过USB字符串描述符(字符串索引是iMACAddress)传给host;
- 传输的是纯粹的以太网包,一次USB传输只包含一个以太网帧。

MBIM

不包含MAC头,Raw IP mode。

NCM

USB_CDC_NOTIFY_NETWORK_CONNECTION

driver/net/usb/cdc_ncm.c
给通知USB_CDC_NOTIFY_NETWORK_CONNECTION加个log,判断网络接口断开是软件断开,还是物理断开。如果看到USB host端网络节点disconnect,并且这个log也打印了,那么说明从interrupt IN端点收到了断开通知,这个断开是由USB gadget端ifconfig down导致的,如果看到USB host端网络节点disconnect,并且没有log打印,那么就是物理断开。

- 包含MAC头,需要MAC地址,由eth_random_addr(u8 *addr)产生;
- NCM虚拟网卡host和device端的MAC地址,都由device端生成,并且host_mac通过USB字符串描述符(字符串索引是iMACAddress)传给host;

每一个USB NCM报文从偏移字节20开始(第一个字节偏移为0)的每4个字节为1组,前2个字节(小端模式)表示Ethernet帧的在该NCM中的偏移字节,后2个字节(小端模式)表示该Ethernet帧的长度。每个以太网帧头有14个字节,如果看到EtherType等于86 DD表示该帧为IPv6。
Table 3-1: Sixteen Bit NCM Transfer Header (NTH16)
Table 3-3: Sixteen-bit NCM Datagram Pointer Table (NDP16)

RNDIS

- 包含MAC头,需要MAC地址,由eth_random_addr(u8 *addr)产生;
- RNDIS虚拟网卡host和device端的MAC地址,都由device端生成,并且host_mac通过控制传输传给host;
- 每个RNDIS报文有RNDIS报头,每个RNDIS报文可以包含多个以太网帧(MaxPacketsPerTransfer),这种特性称为报文聚合,即调用一次URB可以发送或者接收多个IP报文。

 RMNET

7.1 RMNET
- 不包含MAC头,Raw IP mode;
- device端MAC地址由eth_random_addr(u8 *addr)产生;host端的MAC地址由host端驱动指定;
- 每个RMNET报文有RMNET报头,每个RMNET报文可以包含多个以太网帧,这种特性称为报文聚合,即调用一次URB可以发送或者接收多个IP报文。

7.2 IPA
ETH_P_MAP: 0x00F9, Qualcomm multiplexing and aggregation protocol

http://www.lryc.cn/news/479990.html

相关文章:

  • 微积分复习笔记 Calculus Volume 1 - 4.9 Newton’s Method
  • Flutter自定义矩形进度条实现详解
  • 如何设置 TORCH_CUDA_ARCH_LIST 环境变量以优化 PyTorch 性能
  • CSS的三个重点
  • 【笔记】前后端互通中前端登录无响应
  • AI引领PPT创作:迈向“免费”时代的新篇章?
  • HTB:Perfection[WriteUP]
  • 鸿蒙next打包流程
  • uni-app 实现自定义底部导航
  • Vue前端开发:animate.css第三方动画库
  • Java中的I/O模型——BIO、NIO、AIO
  • 【软考知识】敏捷开发与统一建模过程(RUP)
  • Redis常见面试题(二)
  • 业务模块部署
  • 【LeetCode】【算法】48. 旋转图像
  • 【STM32F1】——9轴姿态模块JY901与串口通信(上)
  • Docker网络概述
  • Vite与Vue Cli的区别与详解
  • 深究JS底层原理
  • 数据分析-41-时间序列预测之机器学习方法XGBoost
  • json转java对象 1.文件读取为String 2.String转为JSONObject 3.JSONObject转为Class
  • 基于卷积神经网络的农作物病虫害识别系统(pytorch框架,python源码)
  • ETLCloud异常问题分析ai功能
  • 【1】 Kafka快速入门-从原理到实践
  • go语言中的map类型详解
  • GBase 8a MPP Cluster V9安装部署
  • 静态库、动态库、framework、xcframework、use_frameworks!的作用、关联核心SDK工程和测试(主)工程、设备CPU架构
  • C++ | Leetcode C++题解之第552题学生出勤记录II
  • 网站架构知识之Ansible(day020)
  • K8s使用nfs