软中断处理流程 目录 软中断处理流程 软中断处理的时机 中断退出时软中断调度机制 软中断处理的时机 标准linux内核关抢占的情况下,软中断只在下面两个时机调度 中断退出时(中断上下文) 软中断线程处理 中断退出时软中断调度机制 判断是否属于中断上下文以及是否有软中断处与pending状态 判断软中断线程是否处于runing状态(4.9内核引入) 进行软中断处理 最多restart10次或者累计运行2ms 判断是否还有软中断处于pending状态 //kernel/softirq.c defineMAX_SOFTIRQ_TIMEmsecs_to_jiffies(2...

  LEe7oAzCxFwr   19天前   43   0   0 Linux

飞腾E2000板载以太网适配 e2000 5.4.18 macb yt8521 1.设备树移植 2.MACB驱动移植 3.网络连通性调试 3-1.MACB驱动环回测试 3-2.YT8521PHY工作模式及电压确认 3-3.YT8521PHY环回测试 3-4.YT8521PHYtxdelay调整 飞腾E2000嵌入式板卡的MAC芯片对应linux通用macb驱动,外接YT8521PHY芯片。飞腾在5.10内核上进行过适配,现将其移植到麒麟5.4内核。 本文参考资料:飞腾5.10内核源码飞腾E2000以太网驱动注册和使用简介飞腾腾珑E2000软件编程手册V0.6.pd...

  LEe7oAzCxFwr   2023年11月30日   12   0   0 Linux

GMAC网卡Fixed-Link模式 GMAC fixed-link固定链接模式,mac与对端的连接方式是写死的,通常用于mactomac(不排除mactophy的情况)。内核要支持fixed-link模式,需要打开CONFIG_FIXED_PHY配置。 社区版linux的gmac网卡platform平台驱动中,在设备树默认下支持fixed-link,gmac网卡platform平台驱动默认不支持ACPI模式。 fixed-link模式的实现,概括起来就两步, 通过fixed_phy_register创建phydevice 连接phydevice fixed-link的link状态...

  LEe7oAzCxFwr   2023年11月28日   15   0   0 Linux

PHY的12种状态 enumphy_state{ PHY_DOWN=0,//关闭网卡 PHY_STARTING,//PHY设备准备好了,PHYdriver尚为准备好 PHY_READY,//PHY设备注册成功 PHY_PENDING,//PHY芯片挂起 PHY_UP,//开启网卡 PHY_AN,//网卡自协商 PHY_RUNNING,//网卡已经插入网线并建立物理连接,该状态可切换到PHY_CHANGELINK PHY_NOLINK,//断网,拔掉网线 PHY_FORCING,//自动协商失败,强制处理(读phy状态寄存器,设置速率,设置工作模式) PHY_CHANGELI...

  LEe7oAzCxFwr   2023年11月01日   31   0   0 Linux

GMAC网卡相关介绍与分析 目录 GMAC网卡相关介绍与分析 环境描述 UTP SDS MII MII RMII GMII RGMII SGMII GMAC网卡信息获取方法 获取GMAC网卡信息 查看PHY工作接口模式 获取PHYID MAC芯片 读写MAC寄存器的方法 读MAC寄存器 写MAC寄存器 MAC环回配置 PHY芯片 CPU读写phy方法(待更新) mdio读写phy寄存器 读phy设备基础信息 读PHY设备寄存器 写PHY设备寄存器 Atheros8035强制千兆百兆十兆配置方式 PHY环回配置 GMAC网卡驱动分析 stmmac_dvr...

  LEe7oAzCxFwr   2023年11月01日   61   0   0 Linux

目录 FCoE 使用前提 FCoE FCoE是一种融合网络技术,其目的是将FC帧封装到以太网帧中,实现以太网链路与光纤链路通信的功能。SAN一般指存储区域网络,FCSAN有光纤组网,IPSAN由以太网电缆组网。LAN一般指局域网,以太网组网。 通常情况下业务前端面向普通用户都是采用以太网提供服务,在业务的后端由于庞大的用户基础可能会采用FCSAN提供存储服务(当然也有可能是IPSAN)。 上图中LAN中的主机要与FCSAN通信,必须经过以下路径: 使用FCoE组网,可以将路径简化为这样: 使用前提 FCoE需要软硬件支持,主要包括linux内核支持、网卡驱动支持、网卡硬件...

  LEe7oAzCxFwr   2023年11月01日   39   0   0 Linux

环境 CPU:Phytium,S2500/64C00内核版本:4.19.90-25.10网讯网卡:txgbe共两台设备,光纤直连 复现步骤 设备A、B分别执行以下操作,即可复现 modprobefcoe systemctlstartlldpad systemctlstartfcoe 总结 重启问题是SCSI存储模块libfcoe中fcoe_ctlr_timer_work(drivers/scsi/fcoe/fcoe_ctlr.c)函数访问了非法的内存地址,地址异常原因是编码问题导致,使用结构体强制赋值而忽略了list指针成员的值。 调试记录 查看内核日志 麒麟4.19.9025.10版本,开...

  LEe7oAzCxFwr   2023年11月01日   37   0   0 Linux

参数介绍 net.ipv4.tcp_tw_reuse=1表示开启重用。允许将TIME-WAITsockets重新用于新的TCP连接,默认为0,表示关闭; net.ipv4.tcp_tw_recycle=1表示开启TCP连接中TIME-WAITsockets的快速回收,默认为0,表示关闭。 net.ipv4.tcp_fin_timeout=30表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。 客户端主动关闭tcpsocket时: 客户端发送FIN报文段,进入FIN_WAIT_1状态。服务器端收到FIN报文段,发送ACK表示确认,进入CLOSE_WAIT状态。...

  LEe7oAzCxFwr   2023年11月01日   76   0   0 Linux

背景 工作中遇到客户反馈,上层应用UDP固定间隔100ms发包,但本地tcpdump抓包存在波动,有的数据包之间间隔107ms甚至更多,以此重新梳理了下udp的发送流程。 udp发包流程 udp_sendmsg UDPcorking是一项优化技术,允许内核将多次数据累积成单个数据报发送。在用户程序中有两种方法可以启用此选项: 使用setsockopt系统调用设置socket的UDP_CORK选项程序调用send,sendto或sendmsg时,带MSG_MORE参数 如果没设置UDP_CORK,直接发送到ip层,根据客户只是偶尔出现时延过高的情况,可以确定UDP_CORK并没有被设置,udp...

  LEe7oAzCxFwr   2023年11月01日   54   0   0 Linux

kprobe_eventsshell模式使用教程 kprobe 使用前提 需要内核启用以下配置CONFIG_KPROBES=yCONFIG_HAVE_KPROBES=yCONFIG_KPROBE_EVENT=y kprobe_events kprobe_events有两种类型:kprobe,kretprobekprobe_evnets规则添加的入口:/sys/kernel/debug/tracing/kprobe_events kprobe在函数调用时进行探测,可以用来判断函数是否被调用以及调用函数的传参值是什么.用法:echo"p:probe1input_e...

  LEe7oAzCxFwr   2023年11月01日   56   0   0 Linux

对于磁盘和文件系统来讲Buffer对应磁盘数据的缓存,用于读或写。Cache对应文件数据的页缓存,用于读或写。 Buffer可以用来聚合多个写操作,Cache则可以理解为预读操作,文件系统通过这两种方式提升磁盘IO性能。 对于网络协议来讲只有Buffer的概念,该Buffer对应数据的收发缓冲区。 对于cpu来讲Cache的概念更多,主要用于CPU与内存的读写。其存在于CPU硬件中。 Buffer,Cache回收方式(网络协议部分不会参与该过程) 自动回收,内存将要耗尽时触发比如到达高水位/proc/sys/vm/min_free_kbytes最小剩余大小 手动回收/proc/sys/vm/...

  LEe7oAzCxFwr   2023年11月01日   43   0   0 Linux

sendtoerrno-11代码分析 errno-11在内核代码中代表EAGAIN(再试⼀次),域套接字sendto过程中sendto->sock_sendmsg->unix_dgram_sendmsg,在unix_dgram_sendmsg中有两处会返回EAGAIN:第1处:sock_alloc_send_pskb第2处:other!=sk&&unlikely(unix_peer(other)!=sk&&unix_recvq_full_lockless(other))unix_peer(sk)!=other||unix_dgram_peer_wak...

  LEe7oAzCxFwr   2023年11月01日   94   0   0 Linux

QEMU直接从tap/tun取数据 QEMUtap数据接收步骤: qemu从tun取数据包 qemu将数据包放入virtio硬件网卡。 qemu触发中断。 虚拟机收到中断,从virtio读取数据。 在qemu中步骤1(tap_read_packet)和步骤2(qemu_send_packet_async)都是在tap_send中完成的,其中步骤2是异步流程。 qemu/net/tap.c staticvoidtap_send(voidopaque) { TAPStates=opaque; intsize; intpackets=0; while(true){ uint8_tbuf=s-&g...

  LEe7oAzCxFwr   2023年11月01日   56   0   0 Linux
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~