X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Firda%2Firlap_frame.c;h=3e9a06abbdd08d8e223169bb4f0155b6dd409138;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=388f4ea83e1ab01a2eddabb23d3b51f9111156d8;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/net/irda/irlap_frame.c b/net/irda/irlap_frame.c index 388f4ea83..3e9a06abb 100644 --- a/net/irda/irlap_frame.c +++ b/net/irda/irlap_frame.c @@ -43,6 +43,9 @@ #include #include +static void irlap_send_i_frame(struct irlap_cb *self, struct sk_buff *skb, + int command); + /* * Function irlap_insert_info (self, skb) * @@ -110,8 +113,8 @@ void irlap_send_snrm_frame(struct irlap_cb *self, struct qos_info *qos) struct snrm_frame *frame; int ret; - ASSERT(self != NULL, return;); - ASSERT(self->magic == LAP_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == LAP_MAGIC, return;); /* Allocate frame */ tx_skb = dev_alloc_skb(64); @@ -203,8 +206,8 @@ void irlap_send_ua_response_frame(struct irlap_cb *self, struct qos_info *qos) IRDA_DEBUG(2, "%s() <%ld>\n", __FUNCTION__, jiffies); - ASSERT(self != NULL, return;); - ASSERT(self->magic == LAP_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == LAP_MAGIC, return;); /* Allocate frame */ tx_skb = dev_alloc_skb(64); @@ -244,8 +247,8 @@ void irlap_send_dm_frame( struct irlap_cb *self) struct sk_buff *tx_skb = NULL; __u8 *frame; - ASSERT(self != NULL, return;); - ASSERT(self->magic == LAP_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == LAP_MAGIC, return;); tx_skb = dev_alloc_skb(32); if (!tx_skb) @@ -276,8 +279,8 @@ void irlap_send_disc_frame(struct irlap_cb *self) IRDA_DEBUG(3, "%s()\n", __FUNCTION__); - ASSERT(self != NULL, return;); - ASSERT(self->magic == LAP_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == LAP_MAGIC, return;); tx_skb = dev_alloc_skb(16); if (!tx_skb) @@ -308,9 +311,9 @@ void irlap_send_discovery_xid_frame(struct irlap_cb *self, int S, __u8 s, IRDA_DEBUG(4, "%s(), s=%d, S=%d, command=%d\n", __FUNCTION__, s, S, command); - ASSERT(self != NULL, return;); - ASSERT(self->magic == LAP_MAGIC, return;); - ASSERT(discovery != NULL, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == LAP_MAGIC, return;); + IRDA_ASSERT(discovery != NULL, return;); tx_skb = dev_alloc_skb(64); if (!tx_skb) @@ -399,11 +402,11 @@ static void irlap_recv_discovery_xid_rsp(struct irlap_cb *self, IRDA_DEBUG(4, "%s()\n", __FUNCTION__); - ASSERT(self != NULL, return;); - ASSERT(self->magic == LAP_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == LAP_MAGIC, return;); if (!pskb_may_pull(skb, sizeof(struct xid_frame))) { - ERROR("%s: frame to short!\n", __FUNCTION__); + IRDA_ERROR("%s: frame to short!\n", __FUNCTION__); return; } @@ -420,7 +423,7 @@ static void irlap_recv_discovery_xid_rsp(struct irlap_cb *self, } if ((discovery = kmalloc(sizeof(discovery_t), GFP_ATOMIC)) == NULL) { - WARNING("%s: kmalloc failed!\n", __FUNCTION__); + IRDA_WARNING("%s: kmalloc failed!\n", __FUNCTION__); return; } memset(discovery, 0, sizeof(discovery_t)); @@ -475,7 +478,7 @@ static void irlap_recv_discovery_xid_cmd(struct irlap_cb *self, char *text; if (!pskb_may_pull(skb, sizeof(struct xid_frame))) { - ERROR("%s: frame to short!\n", __FUNCTION__); + IRDA_ERROR("%s: frame to short!\n", __FUNCTION__); return; } @@ -519,7 +522,8 @@ static void irlap_recv_discovery_xid_cmd(struct irlap_cb *self, /* Check if things are sane at this point... */ if((discovery_info == NULL) || !pskb_may_pull(skb, 3)) { - ERROR("%s: discovery frame to short!\n", __FUNCTION__); + IRDA_ERROR("%s: discovery frame to short!\n", + __FUNCTION__); return; } @@ -528,7 +532,7 @@ static void irlap_recv_discovery_xid_cmd(struct irlap_cb *self, */ discovery = kmalloc(sizeof(discovery_t), GFP_ATOMIC); if (!discovery) { - WARNING("%s: unable to malloc!\n", __FUNCTION__); + IRDA_WARNING("%s: unable to malloc!\n", __FUNCTION__); return; } @@ -629,34 +633,6 @@ static inline void irlap_recv_rr_frame(struct irlap_cb *self, irlap_do_event(self, RECV_RR_RSP, skb, info); } -void irlap_send_frmr_frame( struct irlap_cb *self, int command) -{ - struct sk_buff *tx_skb = NULL; - __u8 *frame; - - ASSERT( self != NULL, return;); - ASSERT( self->magic == LAP_MAGIC, return;); - - tx_skb = dev_alloc_skb( 32); - if (!tx_skb) - return; - - frame = skb_put(tx_skb, 2); - - frame[0] = self->caddr; - frame[0] |= (command) ? CMD_FRAME : 0; - - frame[1] = (self->vs << 1); - frame[1] |= PF_BIT; - frame[1] |= (self->vr << 5); - - frame[2] = 0; - - IRDA_DEBUG(4, "%s(), vr=%d, %ld\n", __FUNCTION__, self->vr, jiffies); - - irlap_queue_xmit(self, tx_skb); -} - /* * Function irlap_recv_rnr_frame (self, skb, info) * @@ -886,9 +862,9 @@ void irlap_send_data_secondary_final(struct irlap_cb *self, { struct sk_buff *tx_skb = NULL; - ASSERT(self != NULL, return;); - ASSERT(self->magic == LAP_MAGIC, return;); - ASSERT(skb != NULL, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == LAP_MAGIC, return;); + IRDA_ASSERT(skb != NULL, return;); /* Is this reliable or unreliable data? */ if (skb->data[1] == I_FRAME) { @@ -992,8 +968,8 @@ void irlap_resend_rejected_frames(struct irlap_cb *self, int command) struct sk_buff *skb; int count; - ASSERT(self != NULL, return;); - ASSERT(self->magic == LAP_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == LAP_MAGIC, return;); /* Initialize variables */ count = skb_queue_len(&self->wx_list); @@ -1012,9 +988,6 @@ void irlap_resend_rejected_frames(struct irlap_cb *self, int command) IRDA_DEBUG(0, "%s(), unable to copy\n", __FUNCTION__); return; } - /* Unlink tx_skb from list */ - tx_skb->next = tx_skb->prev = NULL; - tx_skb->list = NULL; /* Clear old Nr field + poll bit */ tx_skb->data[1] &= 0x0f; @@ -1042,21 +1015,19 @@ void irlap_resend_rejected_frames(struct irlap_cb *self, int command) /* * We can now fill the window with additional data frames */ - while (skb_queue_len( &self->txq) > 0) { + while (!skb_queue_empty(&self->txq)) { IRDA_DEBUG(0, "%s(), sending additional frames!\n", __FUNCTION__); - if ((skb_queue_len( &self->txq) > 0) && - (self->window > 0)) { + if (self->window > 0) { skb = skb_dequeue( &self->txq); - ASSERT(skb != NULL, return;); + IRDA_ASSERT(skb != NULL, return;); /* * If send window > 1 then send frame with pf * bit cleared */ if ((self->window > 1) && - skb_queue_len(&self->txq) > 0) - { + !skb_queue_empty(&self->txq)) { irlap_send_data_primary(self, skb); } else { irlap_send_data_primary_poll(self, skb); @@ -1072,8 +1043,8 @@ void irlap_resend_rejected_frame(struct irlap_cb *self, int command) struct sk_buff *tx_skb; struct sk_buff *skb; - ASSERT(self != NULL, return;); - ASSERT(self->magic == LAP_MAGIC, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == LAP_MAGIC, return;); /* Resend unacknowledged frame(s) */ skb = skb_peek(&self->wx_list); @@ -1089,9 +1060,6 @@ void irlap_resend_rejected_frame(struct irlap_cb *self, int command) IRDA_DEBUG(0, "%s(), unable to copy\n", __FUNCTION__); return; } - /* Unlink tx_skb from list */ - tx_skb->next = tx_skb->prev = NULL; - tx_skb->list = NULL; /* Clear old Nr field + poll bit */ tx_skb->data[1] &= 0x0f; @@ -1114,9 +1082,9 @@ void irlap_send_ui_frame(struct irlap_cb *self, struct sk_buff *skb, { IRDA_DEBUG(4, "%s()\n", __FUNCTION__); - ASSERT(self != NULL, return;); - ASSERT(self->magic == LAP_MAGIC, return;); - ASSERT(skb != NULL, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == LAP_MAGIC, return;); + IRDA_ASSERT(skb != NULL, return;); /* Insert connection address */ skb->data[0] = caddr | ((command) ? CMD_FRAME : 0); @@ -1129,8 +1097,8 @@ void irlap_send_ui_frame(struct irlap_cb *self, struct sk_buff *skb, * * Contruct and transmit Information (I) frame */ -void irlap_send_i_frame(struct irlap_cb *self, struct sk_buff *skb, - int command) +static void irlap_send_i_frame(struct irlap_cb *self, struct sk_buff *skb, + int command) { /* Insert connection address */ skb->data[0] = self->caddr; @@ -1193,13 +1161,13 @@ static void irlap_recv_frmr_frame(struct irlap_cb *self, struct sk_buff *skb, IRDA_DEBUG(0, "%s()\n", __FUNCTION__); - ASSERT(self != NULL, return;); - ASSERT(self->magic == LAP_MAGIC, return;); - ASSERT(skb != NULL, return;); - ASSERT(info != NULL, return;); + IRDA_ASSERT(self != NULL, return;); + IRDA_ASSERT(self->magic == LAP_MAGIC, return;); + IRDA_ASSERT(skb != NULL, return;); + IRDA_ASSERT(info != NULL, return;); if (!pskb_may_pull(skb, 4)) { - ERROR("%s: frame to short!\n", __FUNCTION__); + IRDA_ERROR("%s: frame to short!\n", __FUNCTION__); return; } @@ -1288,7 +1256,7 @@ static void irlap_recv_test_frame(struct irlap_cb *self, struct sk_buff *skb, IRDA_DEBUG(2, "%s()\n", __FUNCTION__); if (!pskb_may_pull(skb, sizeof(*frame))) { - ERROR("%s: frame to short!\n", __FUNCTION__); + IRDA_ERROR("%s: frame to short!\n", __FUNCTION__); return; } frame = (struct test_frame *) skb->data; @@ -1335,7 +1303,7 @@ static void irlap_recv_test_frame(struct irlap_cb *self, struct sk_buff *skb, * Jean II */ int irlap_driver_rcv(struct sk_buff *skb, struct net_device *dev, - struct packet_type *ptype) + struct packet_type *ptype, struct net_device *orig_dev) { struct irlap_info info; struct irlap_cb *self; @@ -1355,14 +1323,14 @@ int irlap_driver_rcv(struct sk_buff *skb, struct net_device *dev, * share and non linear skbs. This should never happen, so * we don't need to be clever about it. Jean II */ if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) { - ERROR("%s: can't clone shared skb!\n", __FUNCTION__); + IRDA_ERROR("%s: can't clone shared skb!\n", __FUNCTION__); dev_kfree_skb(skb); return -1; } /* Check if frame is large enough for parsing */ if (!pskb_may_pull(skb, 2)) { - ERROR("%s: frame to short!\n", __FUNCTION__); + IRDA_ERROR("%s: frame to short!\n", __FUNCTION__); dev_kfree_skb(skb); return -1; } @@ -1412,7 +1380,7 @@ int irlap_driver_rcv(struct sk_buff *skb, struct net_device *dev, irlap_recv_srej_frame(self, skb, &info, command); break; default: - WARNING("%s: Unknown S-frame %02x received!\n", + IRDA_WARNING("%s: Unknown S-frame %02x received!\n", __FUNCTION__, info.control); break; } @@ -1450,7 +1418,7 @@ int irlap_driver_rcv(struct sk_buff *skb, struct net_device *dev, irlap_recv_ui_frame(self, skb, &info); break; default: - WARNING("%s: Unknown frame %02x received!\n", + IRDA_WARNING("%s: Unknown frame %02x received!\n", __FUNCTION__, info.control); break; }