以太网的phy寄存器分析

一直唠叨说要系统地学习Linux网络驱动,一直没去做。今天终于下决定写篇关于PHY寄存器的文章了,写了这个,再写篇关于PHY驱动的文章,就算给自己交差了。后面的事再议。这篇文章讲述PHY寄存,大部分属于资料收集,但也夹杂着个人的经验、见解。文中结合IEEE802.3标准、网络的分析及对驱动的理解进行描述。一般来说,像SPI、I2C、USB、PCI等总线类型的资料,都会包括电气接口和编程接口,对于以太网也类似,像硬件接口如MII、GMII,本来也想写一篇文章的,但无奈自己对接口没研究,就不写了。

阅读全文>>

Linux PHY几个状态的跟踪

前面文章零零星星地分析了PHY,本来想完整地,系统地做分析,发现工程量太大了,而自己又一知半解,所以只好各个击破,一点一点来分析。本文主要分析了设备上电、拨出网线、插上网线、自动协商等过程的PHY状态。

阅读全文>>

Linux系统网络设备启动和禁止“ifconfig eth0 up/down”命令的跟踪

前面文章讲了Linux系统的ethtool框架的一些东西,是从用户空间可以直观认识到的地方入手。同样,本文从Linux系统绝大部分人都熟悉的“ifconfig eth0 up”命令来跟踪一下此命令在内核中的发生了什么事情。由于ifconfig启动(up)和禁止(down)网络设备很相似,就放到一起讲了。

阅读全文>>

参考ethtool写了个Linux设置、获取网卡模式的接口

差不多一个月没写文章了,这期间,主要是搞一些比较复杂的问题,一直被搞,没有搞其它的东西,也就没写出什么东西来。在找问题过程中,上网了解到ethtool这个工具十分强大,以为这个代码很复杂,而恰好领导要求我提供设置网卡信息的接口,于是下了代码,研究了一下,参考了一下,整理了一下。当然文中写的是第一个版本,要是这样的接口提供出去,其它部门的人肯定会有意见的。

阅读全文>>

ethtool的内核流程跟踪

这些天开始下决心写写Linux网络方面的文章。由于能力和时间有限,当前还没有对Linux的网络有深入的了解。我一开始打算从网卡基本知识到PHY寄存器,到MAC控制器,到以太网协议栈,一步一步地学习。但实际中发现不能如此,在公司不同在学校,不可能有集中的时间精力去学习的,比如,刚刚使用了iperf来测试网卡性能,又要在内核中打印出PHY芯片寄存器,而前提是要对PHY有一定了解。同时又要了解设备所处的网络拓扑,又不得不去看看交换机方面的资料。在这种情形下,似乎没有规律地做事,完全由工作需求来驱动。在做事的同时我也在记录要点,希望可以整理出主线。在业余时便将这些要点发散、整理。因此,在写文章时就已经对自己进行定位,从感性的认识上入手,慢慢去学习,去接触。比如,因工作上的需要学习了ethtool,于是以此为切入点,看看内核关于ethtool到底是怎么控制的。再比如从网卡使能到禁止跟踪相关的内核流程。

阅读全文>>

我参与的一个x86平台项目的经历

今年是第一次完整参与一个项目的方方面面——当然,是站在开发人员的角度的,至于市场需求收集,采购元件生产,新品发布,销售拿钱,就不可能有我的份了。以前参与项目,都是只负责一点点东西,而且中后期完全处于边缘状态,有事就找,没事就忙别的事,我在之前写的年度总结文章也提到我都不好意思参加项目聚餐了。这次比以前有进步,想了好久,觉得有必要写一写自己的经历。下面的话,是从作为开发人员的我的角度出发来描述的。

阅读全文>>

在Ubuntu 14.04平台上利用Intel的GPU实现硬件加速--基于VAAPI

先前利用了一些时间去网上搜索资料,了解Intel的集显,特别是E3800系列的SOC,主要是因为老大安排一个任务,叫我协助另一个公司的同事调查这个SOC上的硬件加速功能,即硬件解码。这个事我很早就开始耳闻了,当时还在搞项目,没空理。趁着项目处于交付阶段有点空余时间就安排我去做。

阅读全文>>