Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-fixes-2.6
[pandora-kernel.git] / net / irda / irlap_event.c
index a8b8873..16c4ef0 100644 (file)
@@ -19,7 +19,7 @@
  *     published by the Free Software Foundation; either version 2 of
  *     the License, or (at your option) any later version.
  *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
  *     provide warranty for any of this software. This material is
  *     provided "AS-IS" and at no charge.
  *
@@ -217,7 +217,7 @@ static void irlap_start_poll_timer(struct irlap_cb *self, int timeout)
        } else
                self->fast_RR = FALSE;
 
-       IRDA_DEBUG(3, "%s(), timeout=%d (%ld)\n", __FUNCTION__, timeout, jiffies);
+       IRDA_DEBUG(3, "%s(), timeout=%d (%ld)\n", __func__, timeout, jiffies);
 #endif /* CONFIG_IRDA_FAST_RR */
 
        if (timeout == 0)
@@ -241,7 +241,7 @@ void irlap_do_event(struct irlap_cb *self, IRLAP_EVENT event,
        if (!self || self->magic != LAP_MAGIC)
                return;
 
-       IRDA_DEBUG(3, "%s(), event = %s, state = %s\n", __FUNCTION__,
+       IRDA_DEBUG(3, "%s(), event = %s, state = %s\n", __func__,
                   irlap_event[event], irlap_state[self->state]);
 
        ret = (*state[self->state])(self, event, skb, info);
@@ -259,7 +259,7 @@ void irlap_do_event(struct irlap_cb *self, IRLAP_EVENT event,
                 * try to disconnect link if we send any data frames, since
                 * that will change the state away form XMIT
                 */
-               IRDA_DEBUG(2, "%s() : queue len = %d\n", __FUNCTION__,
+               IRDA_DEBUG(2, "%s() : queue len = %d\n", __func__,
                           skb_queue_len(&self->txq));
 
                if (!skb_queue_empty(&self->txq)) {
@@ -340,7 +340,7 @@ static int irlap_state_ndm(struct irlap_cb *self, IRLAP_EVENT event,
                         * media busy in irlap_connect_request() and
                         * postpone the event... - Jean II */
                        IRDA_DEBUG(0, "%s(), CONNECT_REQUEST: media busy!\n",
-                                  __FUNCTION__);
+                                  __func__);
 
                        /* Always switch state before calling upper layers */
                        irlap_next_state(self, LAP_NDM);
@@ -367,7 +367,7 @@ static int irlap_state_ndm(struct irlap_cb *self, IRLAP_EVENT event,
                        irlap_connect_indication(self, skb);
                } else {
                        IRDA_DEBUG(0, "%s(), SNRM frame does not "
-                                  "contain an I field!\n", __FUNCTION__);
+                                  "contain an I field!\n", __func__);
                }
                break;
        case DISCOVERY_REQUEST:
@@ -375,7 +375,7 @@ static int irlap_state_ndm(struct irlap_cb *self, IRLAP_EVENT event,
 
                if (self->media_busy) {
                        IRDA_DEBUG(1, "%s(), DISCOVERY_REQUEST: media busy!\n",
-                                  __FUNCTION__);
+                                  __func__);
                        /* irlap->log.condition = MEDIA_BUSY; */
 
                        /* This will make IrLMP try again */
@@ -441,7 +441,7 @@ static int irlap_state_ndm(struct irlap_cb *self, IRLAP_EVENT event,
                 * those cases...
                 * Jean II
                 */
-                       IRDA_DEBUG(1, "%s(), Receiving final discovery request, missed the discovery slots :-(\n", __FUNCTION__);
+                       IRDA_DEBUG(1, "%s(), Receiving final discovery request, missed the discovery slots :-(\n", __func__);
 
                        /* Last discovery request -> in the log */
                        irlap_discovery_indication(self, info->discovery);
@@ -520,7 +520,7 @@ static int irlap_state_ndm(struct irlap_cb *self, IRLAP_EVENT event,
                /* Only accept broadcast frames in NDM mode */
                if (info->caddr != CBROADCAST) {
                        IRDA_DEBUG(0, "%s(), not a broadcast frame!\n",
-                                  __FUNCTION__);
+                                  __func__);
                } else
                        irlap_unitdata_indication(self, skb);
                break;
@@ -536,10 +536,10 @@ static int irlap_state_ndm(struct irlap_cb *self, IRLAP_EVENT event,
                irlap_send_test_frame(self, CBROADCAST, info->daddr, skb);
                break;
        case RECV_TEST_RSP:
-               IRDA_DEBUG(0, "%s() not implemented!\n", __FUNCTION__);
+               IRDA_DEBUG(0, "%s() not implemented!\n", __func__);
                break;
        default:
-               IRDA_DEBUG(2, "%s(), Unknown event %s\n", __FUNCTION__,
+               IRDA_DEBUG(2, "%s(), Unknown event %s\n", __func__,
                           irlap_event[event]);
 
                ret = -1;
@@ -567,13 +567,13 @@ static int irlap_state_query(struct irlap_cb *self, IRLAP_EVENT event,
                IRDA_ASSERT(info != NULL, return -1;);
                IRDA_ASSERT(info->discovery != NULL, return -1;);
 
-               IRDA_DEBUG(4, "%s(), daddr=%08x\n", __FUNCTION__,
+               IRDA_DEBUG(4, "%s(), daddr=%08x\n", __func__,
                           info->discovery->data.daddr);
 
                if (!self->discovery_log) {
                        IRDA_WARNING("%s: discovery log is gone! "
                                     "maybe the discovery timeout has been set"
-                                    " too short?\n", __FUNCTION__);
+                                    " too short?\n", __func__);
                        break;
                }
                hashbin_insert(self->discovery_log,
@@ -598,7 +598,7 @@ static int irlap_state_query(struct irlap_cb *self, IRLAP_EVENT event,
 
                IRDA_ASSERT(info != NULL, return -1;);
 
-               IRDA_DEBUG(1, "%s(), Receiving discovery request (s = %d) while performing discovery :-(\n", __FUNCTION__, info->s);
+               IRDA_DEBUG(1, "%s(), Receiving discovery request (s = %d) while performing discovery :-(\n", __func__, info->s);
 
                /* Last discovery request ? */
                if (info->s == 0xff)
@@ -613,7 +613,7 @@ static int irlap_state_query(struct irlap_cb *self, IRLAP_EVENT event,
                 */
                if (irda_device_is_receiving(self->netdev) && !self->add_wait) {
                        IRDA_DEBUG(2, "%s(), device is slow to answer, "
-                                  "waiting some more!\n", __FUNCTION__);
+                                  "waiting some more!\n", __func__);
                        irlap_start_slot_timer(self, msecs_to_jiffies(10));
                        self->add_wait = TRUE;
                        return ret;
@@ -649,7 +649,7 @@ static int irlap_state_query(struct irlap_cb *self, IRLAP_EVENT event,
                }
                break;
        default:
-               IRDA_DEBUG(2, "%s(), Unknown event %s\n", __FUNCTION__,
+               IRDA_DEBUG(2, "%s(), Unknown event %s\n", __func__,
                           irlap_event[event]);
 
                ret = -1;
@@ -671,7 +671,7 @@ static int irlap_state_reply(struct irlap_cb *self, IRLAP_EVENT event,
        discovery_t *discovery_rsp;
        int ret=0;
 
-       IRDA_DEBUG(4, "%s()\n", __FUNCTION__);
+       IRDA_DEBUG(4, "%s()\n", __func__);
 
        IRDA_ASSERT(self != NULL, return -1;);
        IRDA_ASSERT(self->magic == LAP_MAGIC, return -1;);
@@ -679,7 +679,7 @@ static int irlap_state_reply(struct irlap_cb *self, IRLAP_EVENT event,
        switch (event) {
        case QUERY_TIMER_EXPIRED:
                IRDA_DEBUG(0, "%s(), QUERY_TIMER_EXPIRED <%ld>\n",
-                          __FUNCTION__, jiffies);
+                          __func__, jiffies);
                irlap_next_state(self, LAP_NDM);
                break;
        case RECV_DISCOVERY_XID_CMD:
@@ -717,7 +717,7 @@ static int irlap_state_reply(struct irlap_cb *self, IRLAP_EVENT event,
                }
                break;
        default:
-               IRDA_DEBUG(1, "%s(), Unknown event %d, %s\n", __FUNCTION__,
+               IRDA_DEBUG(1, "%s(), Unknown event %d, %s\n", __func__,
                           event, irlap_event[event]);
 
                ret = -1;
@@ -738,7 +738,7 @@ static int irlap_state_conn(struct irlap_cb *self, IRLAP_EVENT event,
 {
        int ret = 0;
 
-       IRDA_DEBUG(4, "%s(), event=%s\n", __FUNCTION__, irlap_event[ event]);
+       IRDA_DEBUG(4, "%s(), event=%s\n", __func__, irlap_event[ event]);
 
        IRDA_ASSERT(self != NULL, return -1;);
        IRDA_ASSERT(self->magic == LAP_MAGIC, return -1;);
@@ -799,18 +799,18 @@ static int irlap_state_conn(struct irlap_cb *self, IRLAP_EVENT event,
                break;
        case RECV_DISCOVERY_XID_CMD:
                IRDA_DEBUG(3, "%s(), event RECV_DISCOVER_XID_CMD!\n",
-                          __FUNCTION__);
+                          __func__);
                irlap_next_state(self, LAP_NDM);
 
                break;
        case DISCONNECT_REQUEST:
-               IRDA_DEBUG(0, "%s(), Disconnect request!\n", __FUNCTION__);
+               IRDA_DEBUG(0, "%s(), Disconnect request!\n", __func__);
                irlap_send_dm_frame(self);
                irlap_next_state( self, LAP_NDM);
                irlap_disconnect_indication(self, LAP_DISC_INDICATION);
                break;
        default:
-               IRDA_DEBUG(1, "%s(), Unknown event %d, %s\n", __FUNCTION__,
+               IRDA_DEBUG(1, "%s(), Unknown event %d, %s\n", __func__,
                           event, irlap_event[event]);
 
                ret = -1;
@@ -832,7 +832,7 @@ static int irlap_state_setup(struct irlap_cb *self, IRLAP_EVENT event,
 {
        int ret = 0;
 
-       IRDA_DEBUG(4, "%s()\n", __FUNCTION__);
+       IRDA_DEBUG(4, "%s()\n", __func__);
 
        IRDA_ASSERT(self != NULL, return -1;);
        IRDA_ASSERT(self->magic == LAP_MAGIC, return -1;);
@@ -861,7 +861,7 @@ static int irlap_state_setup(struct irlap_cb *self, IRLAP_EVENT event,
                self->retry_count++;
                break;
        case RECV_SNRM_CMD:
-               IRDA_DEBUG(4, "%s(), SNRM battle!\n", __FUNCTION__);
+               IRDA_DEBUG(4, "%s(), SNRM battle!\n", __func__);
 
                IRDA_ASSERT(skb != NULL, return 0;);
                IRDA_ASSERT(info != NULL, return 0;);
@@ -948,7 +948,7 @@ static int irlap_state_setup(struct irlap_cb *self, IRLAP_EVENT event,
                irlap_disconnect_indication(self, LAP_DISC_INDICATION);
                break;
        default:
-               IRDA_DEBUG(1, "%s(), Unknown event %d, %s\n", __FUNCTION__,
+               IRDA_DEBUG(1, "%s(), Unknown event %d, %s\n", __func__,
                           event, irlap_event[event]);
 
                ret = -1;
@@ -966,7 +966,7 @@ static int irlap_state_setup(struct irlap_cb *self, IRLAP_EVENT event,
 static int irlap_state_offline(struct irlap_cb *self, IRLAP_EVENT event,
                               struct sk_buff *skb, struct irlap_info *info)
 {
-       IRDA_DEBUG( 0, "%s(), Unknown event\n", __FUNCTION__);
+       IRDA_DEBUG( 0, "%s(), Unknown event\n", __func__);
 
        return -1;
 }
@@ -1030,7 +1030,7 @@ static int irlap_state_xmit_p(struct irlap_cb *self, IRLAP_EVENT event,
                         */
                        if((!nextfit) && (skb->len > self->bytes_left)) {
                                IRDA_DEBUG(0, "%s(), Not allowed to transmit"
-                                          " more bytes!\n", __FUNCTION__);
+                                          " more bytes!\n", __func__);
                                /* Requeue the skb */
                                skb_queue_head(&self->txq, skb_get(skb));
                                /*
@@ -1082,7 +1082,7 @@ static int irlap_state_xmit_p(struct irlap_cb *self, IRLAP_EVENT event,
 #endif /* CONFIG_IRDA_FAST_RR */
                } else {
                        IRDA_DEBUG(4, "%s(), Unable to send! remote busy?\n",
-                                  __FUNCTION__);
+                                  __func__);
                        skb_queue_head(&self->txq, skb_get(skb));
 
                        /*
@@ -1094,7 +1094,7 @@ static int irlap_state_xmit_p(struct irlap_cb *self, IRLAP_EVENT event,
                break;
        case POLL_TIMER_EXPIRED:
                IRDA_DEBUG(3, "%s(), POLL_TIMER_EXPIRED <%ld>\n",
-                           __FUNCTION__, jiffies);
+                           __func__, jiffies);
                irlap_send_rr_frame(self, CMD_FRAME);
                /* Return to NRM properly - Jean II  */
                self->window = self->window_size;
@@ -1120,7 +1120,7 @@ static int irlap_state_xmit_p(struct irlap_cb *self, IRLAP_EVENT event,
                break;
        default:
                IRDA_DEBUG(0, "%s(), Unknown event %s\n",
-                          __FUNCTION__, irlap_event[event]);
+                          __func__, irlap_event[event]);
 
                ret = -EINVAL;
                break;
@@ -1138,7 +1138,7 @@ static int irlap_state_pclose(struct irlap_cb *self, IRLAP_EVENT event,
 {
        int ret = 0;
 
-       IRDA_DEBUG(1, "%s()\n", __FUNCTION__);
+       IRDA_DEBUG(1, "%s()\n", __func__);
 
        IRDA_ASSERT(self != NULL, return -1;);
        IRDA_ASSERT(self->magic == LAP_MAGIC, return -1;);
@@ -1173,7 +1173,7 @@ static int irlap_state_pclose(struct irlap_cb *self, IRLAP_EVENT event,
                }
                break;
        default:
-               IRDA_DEBUG(1, "%s(), Unknown event %d\n", __FUNCTION__, event);
+               IRDA_DEBUG(1, "%s(), Unknown event %d\n", __func__, event);
 
                ret = -1;
                break;
@@ -1199,6 +1199,19 @@ static int irlap_state_nrm_p(struct irlap_cb *self, IRLAP_EVENT event,
 
        switch (event) {
        case RECV_I_RSP: /* Optimize for the common case */
+               if (unlikely(skb->len <= LAP_ADDR_HEADER + LAP_CTRL_HEADER)) {
+                       /*
+                        * Input validation check: a stir4200/mcp2150
+                        * combination sometimes results in an empty i:rsp.
+                        * This makes no sense; we can just ignore the frame
+                        * and send an rr:cmd immediately. This happens before
+                        * changing nr or ns so triggers a retransmit
+                        */
+                       irlap_wait_min_turn_around(self, &self->qos_tx);
+                       irlap_send_rr_frame(self, CMD_FRAME);
+                       /* Keep state */
+                       break;
+               }
                /* FIXME: must check for remote_busy below */
 #ifdef CONFIG_IRDA_FAST_RR
                /*
@@ -1284,7 +1297,7 @@ static int irlap_state_nrm_p(struct irlap_cb *self, IRLAP_EVENT event,
                        } else {
                                IRDA_DEBUG(4,
                                       "%s(), missing or duplicate frame!\n",
-                                          __FUNCTION__);
+                                          __func__);
 
                                /* Update Nr received */
                                irlap_update_nr_received(self, info->nr);
@@ -1354,7 +1367,7 @@ static int irlap_state_nrm_p(struct irlap_cb *self, IRLAP_EVENT event,
                    (nr_status == NR_UNEXPECTED))
                {
                        IRDA_DEBUG(4, "%s(), unexpected nr and ns!\n",
-                                  __FUNCTION__);
+                                  __func__);
                        if (info->pf) {
                                /* Resend rejected frames */
                                irlap_resend_rejected_frames(self, CMD_FRAME);
@@ -1394,9 +1407,9 @@ static int irlap_state_nrm_p(struct irlap_cb *self, IRLAP_EVENT event,
                        }
                        break;
                }
-               IRDA_DEBUG(1, "%s(), Not implemented!\n", __FUNCTION__);
+               IRDA_DEBUG(1, "%s(), Not implemented!\n", __func__);
                IRDA_DEBUG(1, "%s(), event=%s, ns_status=%d, nr_status=%d\n",
-                      __FUNCTION__, irlap_event[event], ns_status, nr_status);
+                      __func__, irlap_event[event], ns_status, nr_status);
                break;
        case RECV_UI_FRAME:
                /* Poll bit cleared? */
@@ -1407,7 +1420,7 @@ static int irlap_state_nrm_p(struct irlap_cb *self, IRLAP_EVENT event,
                        del_timer(&self->final_timer);
                        irlap_data_indication(self, skb, TRUE);
                        irlap_next_state(self, LAP_XMIT_P);
-                       IRDA_DEBUG(1, "%s: RECV_UI_FRAME: next state %s\n", __FUNCTION__, irlap_state[self->state]);
+                       IRDA_DEBUG(1, "%s: RECV_UI_FRAME: next state %s\n", __func__, irlap_state[self->state]);
                        irlap_start_poll_timer(self, self->poll_timeout);
                }
                break;
@@ -1462,7 +1475,7 @@ static int irlap_state_nrm_p(struct irlap_cb *self, IRLAP_EVENT event,
                        irlap_next_state(self, LAP_NRM_P);
                } else if (ret == NR_INVALID) {
                        IRDA_DEBUG(1, "%s(), Received RR with "
-                                  "invalid nr !\n", __FUNCTION__);
+                                  "invalid nr !\n", __func__);
 
                        irlap_next_state(self, LAP_RESET_WAIT);
 
@@ -1514,9 +1527,15 @@ static int irlap_state_nrm_p(struct irlap_cb *self, IRLAP_EVENT event,
 
                /* N2 is the disconnect timer. Until we reach it, we retry */
                if (self->retry_count < self->N2) {
-                       /* Retry sending the pf bit to the secondary */
-                       irlap_wait_min_turn_around(self, &self->qos_tx);
-                       irlap_send_rr_frame(self, CMD_FRAME);
+                       if (skb_peek(&self->wx_list) == NULL) {
+                               /* Retry sending the pf bit to the secondary */
+                               IRDA_DEBUG(4, "nrm_p: resending rr");
+                               irlap_wait_min_turn_around(self, &self->qos_tx);
+                               irlap_send_rr_frame(self, CMD_FRAME);
+                       } else {
+                               IRDA_DEBUG(4, "nrm_p: resend frames");
+                               irlap_resend_rejected_frames(self, CMD_FRAME);
+                       }
 
                        irlap_start_final_timer(self, self->final_timeout);
                        self->retry_count++;
@@ -1561,7 +1580,7 @@ static int irlap_state_nrm_p(struct irlap_cb *self, IRLAP_EVENT event,
                irlap_start_final_timer(self, 2 * self->final_timeout);
                break;
        case RECV_RD_RSP:
-               IRDA_DEBUG(1, "%s(), RECV_RD_RSP\n", __FUNCTION__);
+               IRDA_DEBUG(1, "%s(), RECV_RD_RSP\n", __func__);
 
                irlap_flush_all_queues(self);
                irlap_next_state(self, LAP_XMIT_P);
@@ -1570,7 +1589,7 @@ static int irlap_state_nrm_p(struct irlap_cb *self, IRLAP_EVENT event,
                break;
        default:
                IRDA_DEBUG(1, "%s(), Unknown event %s\n",
-                           __FUNCTION__, irlap_event[event]);
+                           __func__, irlap_event[event]);
 
                ret = -1;
                break;
@@ -1590,7 +1609,7 @@ static int irlap_state_reset_wait(struct irlap_cb *self, IRLAP_EVENT event,
 {
        int ret = 0;
 
-       IRDA_DEBUG(3, "%s(), event = %s\n", __FUNCTION__, irlap_event[event]);
+       IRDA_DEBUG(3, "%s(), event = %s\n", __func__, irlap_event[event]);
 
        IRDA_ASSERT(self != NULL, return -1;);
        IRDA_ASSERT(self->magic == LAP_MAGIC, return -1;);
@@ -1616,7 +1635,7 @@ static int irlap_state_reset_wait(struct irlap_cb *self, IRLAP_EVENT event,
                irlap_next_state( self, LAP_PCLOSE);
                break;
        default:
-               IRDA_DEBUG(2, "%s(), Unknown event %s\n", __FUNCTION__,
+               IRDA_DEBUG(2, "%s(), Unknown event %s\n", __func__,
                           irlap_event[event]);
 
                ret = -1;
@@ -1637,7 +1656,7 @@ static int irlap_state_reset(struct irlap_cb *self, IRLAP_EVENT event,
 {
        int ret = 0;
 
-       IRDA_DEBUG(3, "%s(), event = %s\n", __FUNCTION__, irlap_event[event]);
+       IRDA_DEBUG(3, "%s(), event = %s\n", __func__, irlap_event[event]);
 
        IRDA_ASSERT(self != NULL, return -1;);
        IRDA_ASSERT(self->magic == LAP_MAGIC, return -1;);
@@ -1695,7 +1714,7 @@ static int irlap_state_reset(struct irlap_cb *self, IRLAP_EVENT event,
                 * state
                 */
                if (!info) {
-                       IRDA_DEBUG(3, "%s(), RECV_SNRM_CMD\n", __FUNCTION__);
+                       IRDA_DEBUG(3, "%s(), RECV_SNRM_CMD\n", __func__);
                        irlap_initiate_connection_state(self);
                        irlap_wait_min_turn_around(self, &self->qos_tx);
                        irlap_send_ua_response_frame(self, &self->qos_rx);
@@ -1705,12 +1724,12 @@ static int irlap_state_reset(struct irlap_cb *self, IRLAP_EVENT event,
                } else {
                        IRDA_DEBUG(0,
                                   "%s(), SNRM frame contained an I field!\n",
-                                  __FUNCTION__);
+                                  __func__);
                }
                break;
        default:
                IRDA_DEBUG(1, "%s(), Unknown event %s\n",
-                          __FUNCTION__, irlap_event[event]);
+                          __func__, irlap_event[event]);
 
                ret = -1;
                break;
@@ -1730,7 +1749,7 @@ static int irlap_state_xmit_s(struct irlap_cb *self, IRLAP_EVENT event,
 {
        int ret = 0;
 
-       IRDA_DEBUG(4, "%s(), event=%s\n", __FUNCTION__, irlap_event[event]);
+       IRDA_DEBUG(4, "%s(), event=%s\n", __func__, irlap_event[event]);
 
        IRDA_ASSERT(self != NULL, return -ENODEV;);
        IRDA_ASSERT(self->magic == LAP_MAGIC, return -EBADR;);
@@ -1767,7 +1786,7 @@ static int irlap_state_xmit_s(struct irlap_cb *self, IRLAP_EVENT event,
                         */
                        if((!nextfit) && (skb->len > self->bytes_left)) {
                                IRDA_DEBUG(0, "%s(), Not allowed to transmit"
-                                          " more bytes!\n", __FUNCTION__);
+                                          " more bytes!\n", __func__);
                                /* Requeue the skb */
                                skb_queue_head(&self->txq, skb_get(skb));
 
@@ -1813,7 +1832,7 @@ static int irlap_state_xmit_s(struct irlap_cb *self, IRLAP_EVENT event,
                                ret = -EPROTO;
                        }
                } else {
-                       IRDA_DEBUG(2, "%s(), Unable to send!\n", __FUNCTION__);
+                       IRDA_DEBUG(2, "%s(), Unable to send!\n", __func__);
                        skb_queue_head(&self->txq, skb_get(skb));
                        ret = -EPROTO;
                }
@@ -1829,7 +1848,7 @@ static int irlap_state_xmit_s(struct irlap_cb *self, IRLAP_EVENT event,
                 * when we return... - Jean II */
                break;
        default:
-               IRDA_DEBUG(2, "%s(), Unknown event %s\n", __FUNCTION__,
+               IRDA_DEBUG(2, "%s(), Unknown event %s\n", __func__,
                           irlap_event[event]);
 
                ret = -EINVAL;
@@ -1852,7 +1871,7 @@ static int irlap_state_nrm_s(struct irlap_cb *self, IRLAP_EVENT event,
        int nr_status;
        int ret = 0;
 
-       IRDA_DEBUG(4, "%s(), event=%s\n", __FUNCTION__, irlap_event[ event]);
+       IRDA_DEBUG(4, "%s(), event=%s\n", __func__, irlap_event[ event]);
 
        IRDA_ASSERT(self != NULL, return -1;);
        IRDA_ASSERT(self->magic == LAP_MAGIC, return -1;);
@@ -1861,7 +1880,7 @@ static int irlap_state_nrm_s(struct irlap_cb *self, IRLAP_EVENT event,
        case RECV_I_CMD: /* Optimize for the common case */
                /* FIXME: must check for remote_busy below */
                IRDA_DEBUG(4, "%s(), event=%s nr=%d, vs=%d, ns=%d, "
-                          "vr=%d, pf=%d\n", __FUNCTION__,
+                          "vr=%d, pf=%d\n", __func__,
                           irlap_event[event], info->nr,
                           self->vs, info->ns, self->vr, info->pf);
 
@@ -2093,21 +2112,21 @@ static int irlap_state_nrm_s(struct irlap_cb *self, IRLAP_EVENT event,
                        irlap_next_state(self, LAP_NRM_S);
                } else {
                        IRDA_DEBUG(1, "%s(), invalid nr not implemented!\n",
-                                  __FUNCTION__);
+                                  __func__);
                }
                break;
        case RECV_SNRM_CMD:
                /* SNRM frame is not allowed to contain an I-field */
                if (!info) {
                        del_timer(&self->wd_timer);
-                       IRDA_DEBUG(1, "%s(), received SNRM cmd\n", __FUNCTION__);
+                       IRDA_DEBUG(1, "%s(), received SNRM cmd\n", __func__);
                        irlap_next_state(self, LAP_RESET_CHECK);
 
                        irlap_reset_indication(self);
                } else {
                        IRDA_DEBUG(0,
                                   "%s(), SNRM frame contained an I-field!\n",
-                                  __FUNCTION__);
+                                  __func__);
 
                }
                break;
@@ -2139,7 +2158,7 @@ static int irlap_state_nrm_s(struct irlap_cb *self, IRLAP_EVENT event,
                 *   which explain why we use (self->N2 / 2) here !!!
                 * Jean II
                 */
-               IRDA_DEBUG(1, "%s(), retry_count = %d\n", __FUNCTION__,
+               IRDA_DEBUG(1, "%s(), retry_count = %d\n", __func__,
                           self->retry_count);
 
                if (self->retry_count < (self->N2 / 2)) {
@@ -2192,7 +2211,7 @@ static int irlap_state_nrm_s(struct irlap_cb *self, IRLAP_EVENT event,
                irlap_send_test_frame(self, self->caddr, info->daddr, skb);
                break;
        default:
-               IRDA_DEBUG(1, "%s(), Unknown event %d, (%s)\n", __FUNCTION__,
+               IRDA_DEBUG(1, "%s(), Unknown event %d, (%s)\n", __func__,
                           event, irlap_event[event]);
 
                ret = -EINVAL;
@@ -2209,7 +2228,7 @@ static int irlap_state_sclose(struct irlap_cb *self, IRLAP_EVENT event,
 {
        int ret = 0;
 
-       IRDA_DEBUG(1, "%s()\n", __FUNCTION__);
+       IRDA_DEBUG(1, "%s()\n", __func__);
 
        IRDA_ASSERT(self != NULL, return -ENODEV;);
        IRDA_ASSERT(self->magic == LAP_MAGIC, return -EBADR;);
@@ -2266,7 +2285,7 @@ static int irlap_state_sclose(struct irlap_cb *self, IRLAP_EVENT event,
                        break;          /* stay in SCLOSE */
                }
 
-               IRDA_DEBUG(1, "%s(), Unknown event %d, (%s)\n", __FUNCTION__,
+               IRDA_DEBUG(1, "%s(), Unknown event %d, (%s)\n", __func__,
                           event, irlap_event[event]);
 
                ret = -EINVAL;
@@ -2282,7 +2301,7 @@ static int irlap_state_reset_check( struct irlap_cb *self, IRLAP_EVENT event,
 {
        int ret = 0;
 
-       IRDA_DEBUG(1, "%s(), event=%s\n", __FUNCTION__, irlap_event[event]);
+       IRDA_DEBUG(1, "%s(), event=%s\n", __func__, irlap_event[event]);
 
        IRDA_ASSERT(self != NULL, return -ENODEV;);
        IRDA_ASSERT(self->magic == LAP_MAGIC, return -EBADR;);
@@ -2303,7 +2322,7 @@ static int irlap_state_reset_check( struct irlap_cb *self, IRLAP_EVENT event,
                irlap_next_state(self, LAP_SCLOSE);
                break;
        default:
-               IRDA_DEBUG(1, "%s(), Unknown event %d, (%s)\n", __FUNCTION__,
+               IRDA_DEBUG(1, "%s(), Unknown event %d, (%s)\n", __func__,
                           event, irlap_event[event]);
 
                ret = -EINVAL;