<div dir="ltr"><div style="font-size:14px"><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">hi all:</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">     I read the function of process_backlog, and I found it don&#39;t delete the NIC form poll list. the codes is:</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium"><br></div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">4321 static int process_backlog(struct napi_struct *napi, int quota)<br>4322 {<br>4323     int work = 0;<br>4324     struct softnet_data *sd = container_of(napi, struct softnet_data, backlog);<br>4325 <br>4326     /* Check if we have pending ipi, its better to send them now,<br>4327      * not waiting net_rx_action() end.<br>4328      */<br>4329     if (sd_has_rps_ipi_waiting(sd)) {<br>4330         local_irq_disable();<br>4331         net_rps_action_and_irq_enable(sd);<br>4332     }<br>4333 <br>4334     napi-&gt;weight = weight_p;<br>4335     local_irq_disable();<br>4336     while (1) {<br>4337         struct sk_buff *skb;<br>4338 <br>4339         while ((skb = __skb_dequeue(&amp;sd-&gt;process_queue))) {<br>4340             local_irq_enable();<br>4341             __netif_receive_skb(skb);<br>4342             local_irq_disable();<br>4343             input_queue_head_incr(sd);<br>4344             if (++work &gt;= quota) {<br>4345                 local_irq_enable();<br>4346                 return work;<br>4347             }<br>4348         }<br>4349 <br>4350         rps_lock(sd);<br>4351         if (skb_queue_empty(&amp;sd-&gt;input_pkt_queue)) {<br>4352             /*<br>4353              * Inline a custom version of __napi_complete().<br>4354              * only current cpu owns and manipulates this napi,<br>4355              * and NAPI_STATE_SCHED is the only possible flag set<br>4356              * on backlog.<br>4357              * We can use a plain write instead of clear_bit(),<br>4358              * and we dont need an smp_mb() memory barrier.<br>4359              */<br>4360             napi-&gt;state = 0;<br>4361             rps_unlock(sd);<br>4362 <br>4363             break;<br>4364         }<br>4365 <br>4366         skb_queue_splice_tail_init(&amp;sd-&gt;input_pkt_queue,</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">4367                        &amp;sd-&gt;process_queue);<br>4368         rps_unlock(sd);<br>4369     }<br>4370     local_irq_enable();<br>4371 <br>4372     return work;<br>4373 }<br><br></div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">I think we should delete the NIC from the poll list by:</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">list_del(&amp;napi-&gt;poll_list);</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium"><br></div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">and my git repository infromation is:</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium"><br></div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">[root@localhost linux]# git show</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">commit aa39477b5692611b91ac9455ae588738852b3f60</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">Merge: 48ec833 5164bec</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">Author: Linus Torvalds &lt;<a href="mailto:torvalds@linux-foundation.org" target="_blank">torvalds@linux-foundation.org</a>&gt;</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">Date:   Mon Dec 22 14:47:17 2014 -0800</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium"><br></div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">    Merge tag &#39;dm-3.19-fixes&#39; of git://<a href="http://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm" target="_blank">git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm</a></div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">    Pull device mapper fixes from Mike Snitzer:</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">     &quot;Thre stable fixes and one fix for a regression introduced during 3.19</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">      merge:</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">       - Fix inability to discard used space when the thin-pool target is in</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">         out-of-data-space mode and also transition the thin-pool back to</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">         write mode once free space is made available.</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">       - Fix DM core bio-based end_io bug that prevented proper</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">         post-processing of the error code returned from the block layer.</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">       - Fix crash in DM thin-pool due to thin device being added to the</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">         pool&#39;s active_thins list before properly initializing the thin</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">         device&#39;s refcount&quot;</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">    * tag &#39;dm-3.19-fixes&#39; of git://<a href="http://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm" target="_blank">git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm</a>:</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">      dm: fix missed error code if .end_io isn&#39;t implemented by target_type</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">      dm thin: fix crash by initializing thin device&#39;s refcount and completion earlier</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">      dm thin: fix missing out-of-data-space to write mode transition if blocks are released</div><div style="color:rgb(0,0,0);font-family:Tahoma;text-align:-webkit-auto;font-size:medium">      dm thin: fix inability to discard blocks when in out-of-data-space mode</div></div><div style="text-align:-webkit-auto;color:rgb(0,0,0);font-family:Tahoma;font-size:medium"><br></div><div style="text-align:-webkit-auto;color:rgb(0,0,0);font-family:Tahoma;font-size:medium"><br></div><div style="text-align:-webkit-auto;color:rgb(0,0,0);font-family:Tahoma;font-size:medium">Don&#39;t handle the list_del is right, or this is a bug?</div><div style="text-align:-webkit-auto;color:rgb(0,0,0);font-family:Tahoma;font-size:medium"><br></div><div style="text-align:-webkit-auto;color:rgb(0,0,0);font-family:Tahoma;font-size:medium">Thank you.</div></div>