e1000e: use dev_kfree_skb_irq() instead of dev_kfree_skb()
Based on a report and patch originally submitted by Prasanna Panchamukhi. Use dev_kfree_skb_irq() in e1000_clean_jumbo_rx_irq() since this latter function is called only in interrupt context. This avoids "Warning: kfree_skb on hard IRQ" messages. Cc: "Prasanna S. Panchamukhi" <prasanna.panchamukhi@riverbed.com> Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>wifi-calibration
parent
23633b13ff
commit
ef5ab89cf7
|
@ -1322,7 +1322,7 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
|
||||||
/* an error means any chain goes out the window
|
/* an error means any chain goes out the window
|
||||||
* too */
|
* too */
|
||||||
if (rx_ring->rx_skb_top)
|
if (rx_ring->rx_skb_top)
|
||||||
dev_kfree_skb(rx_ring->rx_skb_top);
|
dev_kfree_skb_irq(rx_ring->rx_skb_top);
|
||||||
rx_ring->rx_skb_top = NULL;
|
rx_ring->rx_skb_top = NULL;
|
||||||
goto next_desc;
|
goto next_desc;
|
||||||
}
|
}
|
||||||
|
@ -1395,7 +1395,7 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
|
||||||
/* eth type trans needs skb->data to point to something */
|
/* eth type trans needs skb->data to point to something */
|
||||||
if (!pskb_may_pull(skb, ETH_HLEN)) {
|
if (!pskb_may_pull(skb, ETH_HLEN)) {
|
||||||
e_err("pskb_may_pull failed.\n");
|
e_err("pskb_may_pull failed.\n");
|
||||||
dev_kfree_skb(skb);
|
dev_kfree_skb_irq(skb);
|
||||||
goto next_desc;
|
goto next_desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue