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

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

📁 Dm9000网络接口驱动大全
💻 HTM
📖 第 1 页 / 共 4 页
字号:
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">netif_wake_queue(dev);</SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold"></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">return 
      0;</SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">} 
      </SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold"></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">static 
      int test_set_mac_address(struct net_device * dev, void *addr)</SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">{</SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">struct 
      socketaddr<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>* 
      mac_addr;</SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold"></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">mac_addr 
      = addr;</SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">if(netif_running(dev))</SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">{</SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold"><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Return 
      –EBUSY;</SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">}</SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">memcpy(dev-&gt;dev_addr 
      , mac_addr-&gt;sa_data , dev-&gt;addr_len);</SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">//</SPAN><SPAN 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">改变<SPAN 
      lang=EN-US>mac</SPAN>地址,与具体硬件相关。<SPAN lang=EN-US></SPAN></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">return 
      0;</SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">}</SPAN><SPAN 
      lang=EN-US 
      style="FONT-FAMILY: 宋体; mso-bidi-font-weight: bold; mso-bidi-font-size: 10.5pt"></SPAN></P>
      <P>&nbsp;</P>
      <P>&nbsp;</P>
      <P>&nbsp;</P>
      <P>&nbsp;</P>
      <P>&nbsp;</P>
      <P>&nbsp;</P>
      <P>&nbsp;</P>
      <P>&nbsp;</P></TD></TR></TBODY></TABLE></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-bidi-font-weight: bold; mso-bidi-font-size: 10.5pt"></SPAN></P>
<P>&nbsp;</P>
<P class=MsoToc1 style="MARGIN: 0cm 0cm 0pt"><A name=_Toc142815170><SPAN 
style="FONT-FAMILY: 黑体; mso-ascii-font-family: " times="" new=""><FONT 
color=#c26d08 size=3>数据接收与中断服务程序</FONT></SPAN></A></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT 
size=3><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" 
new="">一般网络驱动程序不对发送数据进行缓存,而是直接使用硬件的发送功能把数据发送出去。接收数据则通过硬件中断来通知的。在中断处理程序中,把硬件帧信息填入一个</SPAN><SPAN 
lang=EN-US><FONT face="Times New Roman">sk_buff</FONT></SPAN><SPAN 
style="FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" 
new="">结构中,然后调用</SPAN><SPAN lang=EN-US><FONT 
face="Times New Roman">netif_rx()</FONT></SPAN><SPAN 
style="FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" 
new="">传递给上层处理。当然,在使用中断之前,需要向系统注册中断处理程序。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US></SPAN></P>
<P>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN 
style="FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" new=""><FONT 
size=3>下面是中断服务程序的写法:</FONT></SPAN></P>
<TABLE class=MsoNormalTable 
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 void 
      net_irq_handle(int irq, void * dev_id, struct pt_regs * 
      regs)</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: 21pt"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">struct 
      net_device * dev;</FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">struct 
      sk_buff<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; 
      </SPAN>*skb;</FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">unsigned 
      int<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>length;</FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">u8<SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>* dec;</FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">dev = 
      (struct net_device *)dev_id;</FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT 
      face="Times New Roman">if(</FONT></SPAN><SPAN 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" 
      new="">发送成功</SPAN><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: 21pt"><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: 21pt"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><SPAN style="mso-spacerun: yes"><FONT 
      face="Times New Roman">&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" 
      new=""> 清除发送中断标志;</SPAN><SPAN lang=EN-US 
style="FONT-SIZE: 9pt"></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" 
      new="">  </SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT 
      face="Times New Roman"> netif_wake_queue(dev);</FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><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: 21pt"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT 
      face="Times New Roman">if(</FONT></SPAN><SPAN 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" 
      new="">接收成功</SPAN><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: 21pt"><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: 21pt"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><SPAN style="mso-spacerun: yes"><FONT 
      face="Times New Roman">&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" 
      new="">清除接受中断标志;</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" 
      new="">  </SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT 
      face="Times New Roman">length = </FONT></SPAN><SPAN 
      style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" 
      new="">数据包长度;</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>skb = 
      dev_alloc_skb(length + 2);</FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; 
      </SPAN>if(!skb)</FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; mso-char-indent-count: 4.0"><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: 36pt; mso-char-indent-count: 4.0"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; 
      </SPAN>return;</FONT></SPAN></P>
      <P>&nbsp;</P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; mso-char-indent-count: 4.0"><SPAN 
      lang=EN-US style="FONT-SIZE: 9pt"><FONT 
      face="Times New Roman">}</FONT></SPAN></P>
      <P>&nbsp;</P>

⌨️ 快捷键说明

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