⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linux下dm9000网卡驱动实验〈三〉 - orange - csdnblog.htm

📁 Dm9000网络接口驱动大全
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      lang=EN-US style="FONT-SIZE: 9pt"><FONT 
      face="Times New Roman">netif_stop_queue(dev);<SPAN 
      style="mso-spacerun: yes">&nbsp; </SPAN>//add by simon 2001.9.4 for kernel 
      2.4 </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"></SPAN>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>/* free interrupt */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>free_irq(dev-&gt;irq, dev); </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"></SPAN>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>/* RESET devie */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>phy_write(db, 0x00, 0x8000);<SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>/* PHY RESET */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>iow(db, 0x<CHMETCNV tcsc="0" numbertype="1" negative="False" 
      hasspace="False" sourcevalue="1" unitname="F" w:st="on"></CHMETCNV>1f, 
      0x01);<SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>/* 
      Power-Down PHY */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>iow(db, 0xff, 0x80);<SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>/* Disable 
      all interrupt */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>iow(db, 0x05, 0x00);<SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </SPAN>/* Disable RX */ 
      </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"></SPAN>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>MOD_DEC_USE_COUNT; </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt; mso-char-indent-count: 2.0"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">return 0; 
      </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman">}</FONT></SPAN></P>
      <P></P>
      <P><FONT face="Times New Roman"></FONT>&nbsp;</P>
      <P></P>
      <P><FONT face="Times New Roman"></FONT>&nbsp;</P>
      <P></P>
      <P><FONT face="Times New Roman"></FONT>&nbsp;</P></TD></TR></TBODY></TABLE>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN 
style="FONT-FAMILY: 宋体; mso-ascii-font-family: " new="" times=""><FONT 
size=3>发送数据接口,对照前面的简单的驱动框架。</FONT></SPAN></P>
<TABLE class=MsoTableGrid 
style="BACKGROUND: #e6e6e6; BORDER-COLLAPSE: collapse; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" 
cellSpacing=0 cellPadding=0 border=0>
  <TBODY>
  <TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
    <TD 
    style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #ece9d8; BORDER-BOTTOM-COLOR: #ece9d8; PADDING-BOTTOM: 0cm; WIDTH: 426.1pt; BORDER-TOP-COLOR: #ece9d8; PADDING-TOP: 0cm; BACKGROUND-COLOR: transparent; BORDER-RIGHT-COLOR: #ece9d8" 
    vAlign=top width=568>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman">static int 
      dmfe_start_xmit(struct sk_buff *skb, struct DEVICE *dev) 
</FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman">{ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt; mso-char-indent-count: 2.0"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT 
      face="Times New Roman">netif_stop_queue(dev); //add by simon 2001.9.4 for 
      kernel 2.4 </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"></SPAN>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>/* Disable all interrupt */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>iow(db, 0xff, 0x80); </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"></SPAN>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>/* Move data to DM9000 TX RAM */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>data_ptr = (char *)skb-&gt;data; </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>outb(0xf8, db-&gt;ioaddr); </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>tmplen = (skb-&gt;len + 1) / 2; </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>/* Word mode*/ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>for (i = 0; i &lt; tmplen; i++) </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN 
      style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>outw(((u16 *)data_ptr)[i], db-&gt;io_data); </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN></FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>/* TX control: First packet immediately send, second packet queue 
      */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>if (db-&gt;tx_pkt_cnt == 0) { </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>/* First Packet */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>db-&gt;tx_pkt_cnt++; </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"></SPAN>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>/* <PLACE w:st="on"></PLACE><CITY w:st="on"></CITY>Set <STATE 
      w:st="on"></STATE>TX length to DM9000 */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>iow(db, 0xfc, skb-&gt;len &amp; 0xff); </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>iow(db, 0xfd, (skb-&gt;len &gt;&gt; 8) &amp; 0xff); 
      </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"></SPAN>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>/* <PLACE w:st="on"></PLACE><CITY w:st="on"></CITY>Issue <STATE 
      w:st="on"></STATE>TX polling command */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>iow(db, 0x2, 0x1);<SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>/* Cleared after TX complete */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"></SPAN>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>dev-&gt;trans_start = jiffies;<SPAN 
      style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>/* saved 
      the time stamp */ </FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -