This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / net / bluetooth / bnep / core.c
index a87cc64..ce7b9a5 100644 (file)
@@ -61,7 +61,7 @@
 #define BT_DBG(D...)
 #endif
 
-#define VERSION "1.2"
+#define VERSION "1.0"
 
 static LIST_HEAD(bnep_session_list);
 static DECLARE_RWSEM(bnep_session_sem);
@@ -99,9 +99,11 @@ static void __bnep_unlink_session(struct bnep_session *s)
 static int bnep_send(struct bnep_session *s, void *data, size_t len)
 {
        struct socket *sock = s->sock;
-       struct kvec iv = { data, len };
+       struct iovec iv = { data, len };
 
-       return kernel_sendmsg(sock, &s->msg, &iv, 1, len);
+       s->msg.msg_iov    = &iv;
+       s->msg.msg_iovlen = 1;
+       return sock_sendmsg(sock, &s->msg, len);
 }
 
 static int bnep_send_rsp(struct bnep_session *s, u8 ctrl, u16 resp)
@@ -113,21 +115,6 @@ static int bnep_send_rsp(struct bnep_session *s, u8 ctrl, u16 resp)
        return bnep_send(s, &rsp, sizeof(rsp));
 }
 
-#ifdef CONFIG_BT_BNEP_PROTO_FILTER
-static inline void bnep_set_default_proto_filter(struct bnep_session *s)
-{
-       /* (IPv4, ARP)  */
-       s->proto_filter[0].start = htons(0x0800);
-       s->proto_filter[0].end   = htons(0x0806);
-       /* (RARP, AppleTalk) */
-       s->proto_filter[1].start = htons(0x8035);
-       s->proto_filter[1].end   = htons(0x80F3);
-       /* (IPX, IPv6) */
-       s->proto_filter[2].start = htons(0x8137);
-       s->proto_filter[2].end   = htons(0x86DD);
-}
-#endif
-
 static int bnep_ctrl_set_netfilter(struct bnep_session *s, u16 *data, int len)
 {
        int n;
@@ -156,13 +143,9 @@ static int bnep_ctrl_set_netfilter(struct bnep_session *s, u16 *data, int len)
                        BT_DBG("proto filter start %d end %d",
                                f[i].start, f[i].end);
                }
-
                if (i < BNEP_MAX_PROTO_FILTERS)
                        memset(f + i, 0, sizeof(*f));
 
-               if (n == 0)
-                       bnep_set_default_proto_filter(s);
-
                bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_SUCCESS);
        } else {
                bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_FILTER_LIMIT_REACHED);
@@ -406,7 +389,7 @@ static inline int bnep_tx_frame(struct bnep_session *s, struct sk_buff *skb)
 {
        struct ethhdr *eh = (void *) skb->data;
        struct socket *sock = s->sock;
-       struct kvec iv[3];
+       struct iovec iv[3];
        int len = 0, il = 0;
        u8 type = 0;
 
@@ -417,7 +400,7 @@ static inline int bnep_tx_frame(struct bnep_session *s, struct sk_buff *skb)
                goto send;
        }
 
-       iv[il++] = (struct kvec) { &type, 1 };
+       iv[il++] = (struct iovec) { &type, 1 };
        len++;
 
        if (!memcmp(eh->h_dest, s->eh.h_source, ETH_ALEN))
@@ -432,23 +415,25 @@ static inline int bnep_tx_frame(struct bnep_session *s, struct sk_buff *skb)
        type = __bnep_tx_types[type];
        switch (type) {
        case BNEP_COMPRESSED_SRC_ONLY:
-               iv[il++] = (struct kvec) { eh->h_source, ETH_ALEN };
+               iv[il++] = (struct iovec) { eh->h_source, ETH_ALEN };
                len += ETH_ALEN;
                break;
                
        case BNEP_COMPRESSED_DST_ONLY:
-               iv[il++] = (struct kvec) { eh->h_dest, ETH_ALEN };
+               iv[il++] = (struct iovec) { eh->h_dest, ETH_ALEN };
                len += ETH_ALEN;
                break;
        }
 
 send:
-       iv[il++] = (struct kvec) { skb->data, skb->len };
+       iv[il++] = (struct iovec) { skb->data, skb->len };
        len += skb->len;
        
        /* FIXME: linearize skb */
        {
-               len = kernel_sendmsg(sock, &s->msg, iv, il, len);
+               s->msg.msg_iov    = iv;
+               s->msg.msg_iovlen = il;
+               len = sock_sendmsg(sock, &s->msg, len);
        }
        kfree_skb(skb);
 
@@ -475,6 +460,8 @@ static int bnep_session(void *arg)
        set_user_nice(current, -15);
        current->flags |= PF_NOFREEZE;
 
+        set_fs(KERNEL_DS);
+
        init_waitqueue_entry(&wait, current);
        add_wait_queue(sk->sk_sleep, &wait);
        while (!atomic_read(&s->killed)) {
@@ -563,12 +550,21 @@ int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock)
        /* Set default mc filter */
        set_bit(bnep_mc_hash(dev->broadcast), (ulong *) &s->mc_filter);
 #endif
-
+       
 #ifdef CONFIG_BT_BNEP_PROTO_FILTER
        /* Set default protocol filter */
-       bnep_set_default_proto_filter(s);
-#endif
 
+       /* (IPv4, ARP)  */
+       s->proto_filter[0].start = htons(0x0800);
+       s->proto_filter[0].end   = htons(0x0806);
+       /* (RARP, AppleTalk) */
+       s->proto_filter[1].start = htons(0x8035);
+       s->proto_filter[1].end   = htons(0x80F3);
+       /* (IPX, IPv6) */
+       s->proto_filter[2].start = htons(0x8137);
+       s->proto_filter[2].end   = htons(0x86DD);
+#endif
+       
        err = register_netdev(dev);
        if (err) {
                goto failed;