aboutsummaryrefslogtreecommitdiffstats
path: root/net/phonet/af_phonet.c
diff options
context:
space:
mode:
authorRémi Denis-Courmont <remi.denis-courmont@nokia.com>2011-03-08 17:44:07 -0500
committerDavid S. Miller <davem@davemloft.net>2011-03-09 14:59:30 -0500
commitb765e84f96f728e8e178348fc102f126c1736193 (patch)
tree2343dc694989604ea873923936cace52e5157040 /net/phonet/af_phonet.c
parentc69d4407d8884e8a127f95d07b1896443f3716ff (diff)
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>
Diffstat (limited to 'net/phonet/af_phonet.c')
-rw-r--r--net/phonet/af_phonet.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/net/phonet/af_phonet.c b/net/phonet/af_phonet.c
index 4706b77e67bf..c6fffd946d42 100644
--- a/net/phonet/af_phonet.c
+++ b/net/phonet/af_phonet.c
@@ -195,11 +195,7 @@ static int pn_send(struct sk_buff *skb, struct net_device *dev,
195 if (skb->pkt_type == PACKET_LOOPBACK) { 195 if (skb->pkt_type == PACKET_LOOPBACK) {
196 skb_reset_mac_header(skb); 196 skb_reset_mac_header(skb);
197 skb_orphan(skb); 197 skb_orphan(skb);
198 if (irq) 198 err = (irq ? netif_rx(skb) : netif_rx_ni(skb)) ? -ENOBUFS : 0;
199 netif_rx(skb);
200 else
201 netif_rx_ni(skb);
202 err = 0;
203 } else { 199 } else {
204 err = dev_hard_header(skb, dev, ntohs(skb->protocol), 200 err = dev_hard_header(skb, dev, ntohs(skb->protocol),
205 NULL, NULL, skb->len); 201 NULL, NULL, skb->len);
@@ -208,6 +204,8 @@ static int pn_send(struct sk_buff *skb, struct net_device *dev,
208 goto drop; 204 goto drop;
209 } 205 }
210 err = dev_queue_xmit(skb); 206 err = dev_queue_xmit(skb);
207 if (unlikely(err > 0))
208 err = net_xmit_errno(err);
211 } 209 }
212 210
213 return err; 211 return err;