Phonet: return an error when packet TX fails
Phonet assumes that packets are never dropped. We try our best to avoid this situation. But lets return ENOBUFS if queueing to the network device fails so that the caller knows things went wrong. Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c69d4407d8
commit
b765e84f96
1 changed files with 3 additions and 5 deletions
|
@ -195,11 +195,7 @@ static int pn_send(struct sk_buff *skb, struct net_device *dev,
|
|||
if (skb->pkt_type == PACKET_LOOPBACK) {
|
||||
skb_reset_mac_header(skb);
|
||||
skb_orphan(skb);
|
||||
if (irq)
|
||||
netif_rx(skb);
|
||||
else
|
||||
netif_rx_ni(skb);
|
||||
err = 0;
|
||||
err = (irq ? netif_rx(skb) : netif_rx_ni(skb)) ? -ENOBUFS : 0;
|
||||
} else {
|
||||
err = dev_hard_header(skb, dev, ntohs(skb->protocol),
|
||||
NULL, NULL, skb->len);
|
||||
|
@ -208,6 +204,8 @@ static int pn_send(struct sk_buff *skb, struct net_device *dev,
|
|||
goto drop;
|
||||
}
|
||||
err = dev_queue_xmit(skb);
|
||||
if (unlikely(err > 0))
|
||||
err = net_xmit_errno(err);
|
||||
}
|
||||
|
||||
return err;
|
||||
|
|
Loading…
Reference in a new issue