<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>network driver &#8211; richliu&#039;s blog</title>
	<atom:link href="https://richliu.com/tag/network-driver/feed/" rel="self" type="application/rss+xml" />
	<link>https://richliu.com</link>
	<description>Linux, 工作, 生活, 家人</description>
	<lastBuildDate>Wed, 24 Dec 2008 05:57:11 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>[Linux] fakenetdev 假的 network interface</title>
		<link>https://richliu.com/2008/12/24/667/linux-fakenetdev-%e5%81%87%e7%9a%84-network-interface/</link>
					<comments>https://richliu.com/2008/12/24/667/linux-fakenetdev-%e5%81%87%e7%9a%84-network-interface/#comments</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Wed, 24 Dec 2008 05:57:11 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[fake]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[modules]]></category>
		<category><![CDATA[network driver]]></category>
		<guid isPermaLink="false">https://richliu.com/?p=667</guid>

					<description><![CDATA[<p>有些時候, 我們會需要一個假的 network device. 像是 1) 某些軟體會去 check netw [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://richliu.com/2008/12/24/667/linux-fakenetdev-%e5%81%87%e7%9a%84-network-interface/">[Linux] fakenetdev 假的 network interface</a> appeared first on <a rel="nofollow" href="https://richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>有些時候, 我們會需要一個假的 network device.<br />
像是<br />
1) 某些軟體會去 check network interface<br />
2) 需要學習寫作一些軟體</p>
<p>所以我花了一點點時間寫了這一個 kernel modules<br />
主要功能就是在 linux 下建立一個假的 network interface<br />
這個 network interface<br />
只能送(馬上就 free 掉 packet buffer), 沒有收的 function .</p>
<p>在 insert 時, 可以用參數 name 和 mac 指定特定的 network device name 和 mac address.<br />
ex: # insmod fakenetdev.ko name=fake0 mac=00:aa:bb:cc:dd:ee<br />
mac 的格式也可以是 00aabbccddee 或 00-aa-bb-cc-dd-ee<br />
也支援用 ifconfig 修改 mac<br />
ex: # ifconfig eth2 down<br />
# ifconfig eth2 hw ether 00:aa:bb:cc:dd:ee<br />
# ifconfig eth2 up</p>
<p>這個程式在 ubuntu 8.10 (interpid), Linux kernel 2.6.27 下測試.<br />
目前看起來沒有很大的問題, 原作者要用的目地可以達到</p>
<p>可以從這個 URL 下載程式 <a href="https://sourceforge.net/project/showfiles.php?group_id=248740&amp;package_id=303790&amp;release_id=649323" target="_blank" rel="noopener">fakenetdev</a></p>
<p>&#8212; English &#8212;<br />
Sometimes, we will need a fake network device for some purpose<br />
like,<br />
1) cheat some software which will check network mac<br />
2) learn how to write a simple network device driver</p>
<p>So, I spend a little time to write this kernel module.<br />
Major function is that create fake network interface.<br />
It can send packet, but driver will free it immediately.</p>
<p>When insert modules, the module support argument &#8220;name&#8221; and &#8220;mac&#8221; to<br />
modify default name and mac.<br />
ex: # insmod fakenetdev.ko name=fake0 mac=00:aa:bb:cc:dd:ee<br />
it also support other format for mac, like 00aabbccddee or 00-aa-bb-cc-dd-ee<br />
and support modify mac by ifconfig<br />
ex: # ifconfig eth2 down<br />
# ifconfig eth2 hw ether 00:aa:bb:cc:dd:ee<br />
# ifconfig eth2 up</p>
<p>This module was tested at ubuntu 8.10 (interpid), Linux kernel 2.6.27.<br />
It seems work fine for me .</p>
<p>You can download follow this link <a href="https://sourceforge.net/project/showfiles.php?group_id=248740&amp;package_id=303790&amp;release_id=649323" target="_blank" rel="noopener">fakenetdev</a></p>
<p>&#8212;</p>
<p>後記:</p>
<p>這 Driver 不難寫, 麻煩的是在 Debug .不小心少寫一行就 Core Dump.<br />
又懶得弄 KGDB 或是 User Mode Linux, 因為弄的時可能比寫完還多<br />
網路上掃了一遍沒有看到馬上可以用的, 所以就自己亂寫, 希望<br />
大家都可以用得到, 因為是用在*謎*用途的呀 :p</p>
<p>不過這個功能可以用 dummy device 達成,<br />
我寫的頂多就是可以在 load driver 的時候改 name 和 mac .</p>
<p>The post <a rel="nofollow" href="https://richliu.com/2008/12/24/667/linux-fakenetdev-%e5%81%87%e7%9a%84-network-interface/">[Linux] fakenetdev 假的 network interface</a> appeared first on <a rel="nofollow" href="https://richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://richliu.com/2008/12/24/667/linux-fakenetdev-%e5%81%87%e7%9a%84-network-interface/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Linux kernel 2.6.24 Porting 雜記.</title>
		<link>https://richliu.com/2008/05/15/593/linux-kernel-2624-porting-%e9%9b%9c%e8%a8%98/</link>
					<comments>https://richliu.com/2008/05/15/593/linux-kernel-2624-porting-%e9%9b%9c%e8%a8%98/#comments</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Thu, 15 May 2008 05:51:05 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[2.6.24]]></category>
		<category><![CDATA[napi]]></category>
		<category><![CDATA[network driver]]></category>
		<category><![CDATA[PCI]]></category>
		<guid isPermaLink="false">https://richliu.com/2008/05/15/593/</guid>

					<description><![CDATA[<p>最近將某個 Device Porting 從 2.6.16 Porting 上 2.6.24, 記錄一下碰到的 [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://richliu.com/2008/05/15/593/linux-kernel-2624-porting-%e9%9b%9c%e8%a8%98/">Linux kernel 2.6.24 Porting 雜記.</a> appeared first on <a rel="nofollow" href="https://richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>最近將某個 Device Porting 從 2.6.16 Porting 上 2.6.24, 記錄一下碰到的問題.</p>
<p>1. Network Driver</p>
<p>當有這樣的訊息時<br />
# ifconfig eth0 up<br />
SIOCSIFFLAGS : invalid agument</p>
<p>我碰到的狀況是, MAC Address 必需要在 probe 時先行 initial 完成.<br />
若是沒有完成, ifconfig 就會出現這樣的錯誤訊息, 原因仍然不明.<br />
我的做法就是加一行<br />
memcpy(dev-&gt;dev_addr , addr, 6); 這樣就可以了.</p>
<p>2.6.24 的 NAPI Interface 改過了, 上比對一下 2.6.23 和 2.6.24 的 Code 就可以知道改了什麼地方.<br />
netif_poll_* 的 interface 改名了以外, NAPI hook 的 _poll function 在傳入參數和結構上有小小的修正</p>
<p>2.6.24 修改了 NAPI 的呼叫法, 對我這邊比較複雜的 Switch Driver 也應該修正一下.</p>
<p>2. PCI<br />
pci_find_device 要改用 pci_get_device. 這個 function 還很早就改名了,<br />
只是在 porting 這一版的時候, 多了一個選項<br />
[ ] Enable deprecated pci_find_* API.<br />
如果不想開就不用改了.</p>
<p>3. CPU<br />
2.6.24 CPU proc.info 結構和2.6.16 有一點點不一樣, 如果直接放上 2.6.24 則 CPU Info 會錯誤,<br />
這時要修改 mm/CPU-proc.S , 附上部份的 patch, 增加一個 word 大小, 這樣就可以顯示正常了.</p>
<blockquote><p> 		PMD_BIT4 | \<br />
PMD_SECT_AP_WRITE | \<br />
PMD_SECT_AP_READ<br />
+	.long   PMD_TYPE_SECT | \<br />
+		PMD_SECT_AP_WRITE | \<br />
+		PMD_SECT_AP_READ</p></blockquote>
<p>4. Interrupt.<br />
原來 SA_INTERRUPT/SA_SHIRQ 都改叫 IRQF_SHARED, 事實上, 這一組定義己經完全換掉了<br />
詳情請見 include\linux\Interrupt.h</p>
<p>5. DMA<br />
pci_free_consistent 被 dma_free_coherent 取代<br />
pci_alloc_consistent(..); 被 dma_alloc_coherent(.., GFP_KERNEL); 取代,  後面要多加一個參數.<br />
consistent_sync 被 dma_cache_maint 取代.<br />
算是小改&#8230;.</p>
<p>The post <a rel="nofollow" href="https://richliu.com/2008/05/15/593/linux-kernel-2624-porting-%e9%9b%9c%e8%a8%98/">Linux kernel 2.6.24 Porting 雜記.</a> appeared first on <a rel="nofollow" href="https://richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://richliu.com/2008/05/15/593/linux-kernel-2624-porting-%e9%9b%9c%e8%a8%98/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
	</channel>
</rss>
