aboutsummaryrefslogtreecommitdiffstats
path: root/net/irda/irlan/irlan_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/irda/irlan/irlan_common.c')
-rw-r--r--net/irda/irlan/irlan_common.c47
1 files changed, 37 insertions, 10 deletions
diff --git a/net/irda/irlan/irlan_common.c b/net/irda/irlan/irlan_common.c
index 657d12210578..9b962f247714 100644
--- a/net/irda/irlan/irlan_common.c
+++ b/net/irda/irlan/irlan_common.c
@@ -23,7 +23,6 @@
23 * 23 *
24 ********************************************************************/ 24 ********************************************************************/
25 25
26#include <linux/config.h>
27#include <linux/module.h> 26#include <linux/module.h>
28 27
29#include <linux/kernel.h> 28#include <linux/kernel.h>
@@ -637,7 +636,8 @@ void irlan_get_provider_info(struct irlan_cb *self)
637 IRDA_ASSERT(self != NULL, return;); 636 IRDA_ASSERT(self != NULL, return;);
638 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); 637 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;);
639 638
640 skb = dev_alloc_skb(64); 639 skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER,
640 GFP_ATOMIC);
641 if (!skb) 641 if (!skb)
642 return; 642 return;
643 643
@@ -669,7 +669,10 @@ void irlan_open_data_channel(struct irlan_cb *self)
669 IRDA_ASSERT(self != NULL, return;); 669 IRDA_ASSERT(self != NULL, return;);
670 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); 670 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;);
671 671
672 skb = dev_alloc_skb(64); 672 skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER +
673 IRLAN_STRING_PARAMETER_LEN("MEDIA", "802.3") +
674 IRLAN_STRING_PARAMETER_LEN("ACCESS_TYPE", "DIRECT"),
675 GFP_ATOMIC);
673 if (!skb) 676 if (!skb)
674 return; 677 return;
675 678
@@ -705,7 +708,9 @@ void irlan_close_data_channel(struct irlan_cb *self)
705 if (self->client.tsap_ctrl == NULL) 708 if (self->client.tsap_ctrl == NULL)
706 return; 709 return;
707 710
708 skb = dev_alloc_skb(64); 711 skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER +
712 IRLAN_BYTE_PARAMETER_LEN("DATA_CHAN"),
713 GFP_ATOMIC);
709 if (!skb) 714 if (!skb)
710 return; 715 return;
711 716
@@ -716,7 +721,7 @@ void irlan_close_data_channel(struct irlan_cb *self)
716 721
717 /* Build frame */ 722 /* Build frame */
718 frame[0] = CMD_CLOSE_DATA_CHAN; 723 frame[0] = CMD_CLOSE_DATA_CHAN;
719 frame[1] = 0x01; /* Two parameters */ 724 frame[1] = 0x01; /* One parameter */
720 725
721 irlan_insert_byte_param(skb, "DATA_CHAN", self->dtsap_sel_data); 726 irlan_insert_byte_param(skb, "DATA_CHAN", self->dtsap_sel_data);
722 727
@@ -740,7 +745,11 @@ static void irlan_open_unicast_addr(struct irlan_cb *self)
740 IRDA_ASSERT(self != NULL, return;); 745 IRDA_ASSERT(self != NULL, return;);
741 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); 746 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;);
742 747
743 skb = dev_alloc_skb(128); 748 skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER +
749 IRLAN_BYTE_PARAMETER_LEN("DATA_CHAN") +
750 IRLAN_STRING_PARAMETER_LEN("FILTER_TYPE", "DIRECTED") +
751 IRLAN_STRING_PARAMETER_LEN("FILTER_MODE", "FILTER"),
752 GFP_ATOMIC);
744 if (!skb) 753 if (!skb)
745 return; 754 return;
746 755
@@ -778,7 +787,12 @@ void irlan_set_broadcast_filter(struct irlan_cb *self, int status)
778 IRDA_ASSERT(self != NULL, return;); 787 IRDA_ASSERT(self != NULL, return;);
779 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); 788 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;);
780 789
781 skb = dev_alloc_skb(128); 790 skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER +
791 IRLAN_BYTE_PARAMETER_LEN("DATA_CHAN") +
792 IRLAN_STRING_PARAMETER_LEN("FILTER_TYPE", "BROADCAST") +
793 /* We may waste one byte here...*/
794 IRLAN_STRING_PARAMETER_LEN("FILTER_MODE", "FILTER"),
795 GFP_ATOMIC);
782 if (!skb) 796 if (!skb)
783 return; 797 return;
784 798
@@ -817,7 +831,12 @@ void irlan_set_multicast_filter(struct irlan_cb *self, int status)
817 IRDA_ASSERT(self != NULL, return;); 831 IRDA_ASSERT(self != NULL, return;);
818 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); 832 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;);
819 833
820 skb = dev_alloc_skb(128); 834 skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER +
835 IRLAN_BYTE_PARAMETER_LEN("DATA_CHAN") +
836 IRLAN_STRING_PARAMETER_LEN("FILTER_TYPE", "MULTICAST") +
837 /* We may waste one byte here...*/
838 IRLAN_STRING_PARAMETER_LEN("FILTER_MODE", "NONE"),
839 GFP_ATOMIC);
821 if (!skb) 840 if (!skb)
822 return; 841 return;
823 842
@@ -857,7 +876,12 @@ static void irlan_get_unicast_addr(struct irlan_cb *self)
857 IRDA_ASSERT(self != NULL, return;); 876 IRDA_ASSERT(self != NULL, return;);
858 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); 877 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;);
859 878
860 skb = dev_alloc_skb(128); 879 skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER +
880 IRLAN_BYTE_PARAMETER_LEN("DATA_CHAN") +
881 IRLAN_STRING_PARAMETER_LEN("FILTER_TYPE", "DIRECTED") +
882 IRLAN_STRING_PARAMETER_LEN("FILTER_OPERATION",
883 "DYNAMIC"),
884 GFP_ATOMIC);
861 if (!skb) 885 if (!skb)
862 return; 886 return;
863 887
@@ -892,7 +916,10 @@ void irlan_get_media_char(struct irlan_cb *self)
892 IRDA_ASSERT(self != NULL, return;); 916 IRDA_ASSERT(self != NULL, return;);
893 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); 917 IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;);
894 918
895 skb = dev_alloc_skb(64); 919 skb = alloc_skb(IRLAN_MAX_HEADER + IRLAN_CMD_HEADER +
920 IRLAN_STRING_PARAMETER_LEN("MEDIA", "802.3"),
921 GFP_ATOMIC);
922
896 if (!skb) 923 if (!skb)
897 return; 924 return;
898 925