|
@@ -550,16 +550,23 @@ EXPORT_SYMBOL(irttp_close_tsap);
|
|
|
*/
|
|
|
int irttp_udata_request(struct tsap_cb *self, struct sk_buff *skb)
|
|
|
{
|
|
|
+ int ret = -1;
|
|
|
+
|
|
|
IRDA_ASSERT(self != NULL, return -1;);
|
|
|
IRDA_ASSERT(self->magic == TTP_TSAP_MAGIC, return -1;);
|
|
|
IRDA_ASSERT(skb != NULL, return -1;);
|
|
|
|
|
|
IRDA_DEBUG(4, "%s()\n", __func__);
|
|
|
|
|
|
+ /* Take shortcut on zero byte packets */
|
|
|
+ if (skb->len == 0) {
|
|
|
+ ret = 0;
|
|
|
+ goto err;
|
|
|
+ }
|
|
|
+
|
|
|
/* Check that nothing bad happens */
|
|
|
- if ((skb->len == 0) || (!self->connected)) {
|
|
|
- IRDA_DEBUG(1, "%s(), No data, or not connected\n",
|
|
|
- __func__);
|
|
|
+ if (!self->connected) {
|
|
|
+ IRDA_DEBUG(1, "%s(), Not connected\n", __func__);
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -576,7 +583,7 @@ int irttp_udata_request(struct tsap_cb *self, struct sk_buff *skb)
|
|
|
|
|
|
err:
|
|
|
dev_kfree_skb(skb);
|
|
|
- return -1;
|
|
|
+ return ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL(irttp_udata_request);
|
|
|
|
|
@@ -599,9 +606,15 @@ int irttp_data_request(struct tsap_cb *self, struct sk_buff *skb)
|
|
|
IRDA_DEBUG(2, "%s() : queue len = %d\n", __func__,
|
|
|
skb_queue_len(&self->tx_queue));
|
|
|
|
|
|
+ /* Take shortcut on zero byte packets */
|
|
|
+ if (skb->len == 0) {
|
|
|
+ ret = 0;
|
|
|
+ goto err;
|
|
|
+ }
|
|
|
+
|
|
|
/* Check that nothing bad happens */
|
|
|
- if ((skb->len == 0) || (!self->connected)) {
|
|
|
- IRDA_WARNING("%s: No data, or not connected\n", __func__);
|
|
|
+ if (!self->connected) {
|
|
|
+ IRDA_WARNING("%s: Not connected\n", __func__);
|
|
|
ret = -ENOTCONN;
|
|
|
goto err;
|
|
|
}
|