Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / isdn / i4l / isdn_x25iface.c
index 8f507e1..743ac40 100644 (file)
@@ -7,8 +7,8 @@
  *
  * stuff needed to support the Linux X.25 PLP code on top of devices that
  * can provide a lab_b service using the concap_proto mechanism.
- * This module supports a network interface wich provides lapb_sematics
- * -- as defined in ../../Documentation/networking/x25-iface.txt -- to
+ * This module supports a network interface which provides lapb_sematics
+ * -- as defined in Documentation/networking/x25-iface.txt -- to
  * the upper layer and assumes that the lower layer provides a reliable
  * data link service by means of the concap_device_ops callbacks.
  *
@@ -21,6 +21,7 @@
 #include <linux/netdevice.h>
 #include <linux/concap.h>
 #include <linux/wanrouter.h>
+#include <net/x25device.h>
 #include "isdn_x25iface.h"
 
 /* for debugging messages not to cause an oops when device pointer is NULL*/
@@ -39,15 +40,15 @@ typedef struct isdn_x25iface_proto_data {
 
 
 /* is now in header file (extern): struct concap_proto * isdn_x25iface_proto_new(void); */
-void isdn_x25iface_proto_del( struct concap_proto * );
-int isdn_x25iface_proto_close( struct concap_proto * );
-int isdn_x25iface_proto_restart( struct concap_proto *,
-                                struct net_device *,
-                                struct concap_device_ops *);
-int isdn_x25iface_xmit( struct concap_proto *, struct sk_buff * );
-int isdn_x25iface_receive( struct concap_proto *, struct sk_buff * );
-int isdn_x25iface_connect_ind( struct concap_proto * );
-int isdn_x25iface_disconn_ind( struct concap_proto * );
+static void isdn_x25iface_proto_del( struct concap_proto * );
+static int isdn_x25iface_proto_close( struct concap_proto * );
+static int isdn_x25iface_proto_restart( struct concap_proto *,
+                                       struct net_device *,
+                                       struct concap_device_ops *);
+static int isdn_x25iface_xmit( struct concap_proto *, struct sk_buff * );
+static int isdn_x25iface_receive( struct concap_proto *, struct sk_buff * );
+static int isdn_x25iface_connect_ind( struct concap_proto * );
+static int isdn_x25iface_disconn_ind( struct concap_proto * );
 
 
 static struct concap_proto_ops ix25_pops = {
@@ -79,7 +80,7 @@ static int pdata_is_bad( ix25_pdata_t * pda ){
 
 /* create a new x25 interface protocol instance
  */
-struct concap_proto * isdn_x25iface_proto_new()
+struct concap_proto * isdn_x25iface_proto_new(void)
 {
        ix25_pdata_t * tmp = kmalloc(sizeof(ix25_pdata_t),GFP_KERNEL);
        IX25DEBUG("isdn_x25iface_proto_new\n");
@@ -101,7 +102,7 @@ struct concap_proto * isdn_x25iface_proto_new()
 
 /* close the x25iface encapsulation protocol 
  */
-int isdn_x25iface_proto_close(struct concap_proto *cprot){
+static int isdn_x25iface_proto_close(struct concap_proto *cprot){
 
        ix25_pdata_t *tmp;
         int ret = 0;
@@ -128,7 +129,7 @@ int isdn_x25iface_proto_close(struct concap_proto *cprot){
 
 /* Delete the x25iface encapsulation protocol instance
  */
-void isdn_x25iface_proto_del(struct concap_proto *cprot){
+static void isdn_x25iface_proto_del(struct concap_proto *cprot){
 
        ix25_pdata_t * tmp;
  
@@ -157,9 +158,9 @@ void isdn_x25iface_proto_del(struct concap_proto *cprot){
 
 /* (re-)initialize the data structures for x25iface encapsulation
  */
-int isdn_x25iface_proto_restart(struct concap_proto *cprot,
-                               struct net_device *ndev, 
-                               struct concap_device_ops *dops)
+static int isdn_x25iface_proto_restart(struct concap_proto *cprot,
+                                       struct net_device *ndev,
+                                       struct concap_device_ops *dops)
 {
        ix25_pdata_t * pda = cprot -> proto_data ;
        ulong flags;
@@ -186,17 +187,14 @@ int isdn_x25iface_proto_restart(struct concap_proto *cprot,
 
 /* deliver a dl_data frame received from i4l HL driver to the network layer 
  */
-int isdn_x25iface_receive(struct concap_proto *cprot, struct sk_buff *skb)
+static int isdn_x25iface_receive(struct concap_proto *cprot, struct sk_buff *skb)
 {
        IX25DEBUG( "isdn_x25iface_receive %s \n", MY_DEVNAME(cprot->net_dev) );
        if ( ( (ix25_pdata_t*) (cprot->proto_data) ) 
             -> state == WAN_CONNECTED ){
-               skb -> dev = cprot -> net_dev;
-               skb -> protocol = htons(ETH_P_X25);
-               skb -> pkt_type = PACKET_HOST;
                if( skb_push(skb, 1)){
                        skb -> data[0]=0x00;
-                       skb -> mac.raw = skb -> data;
+                       skb->protocol = x25_type_trans(skb, cprot->net_dev);
                        netif_rx(skb);
                        return 0;
                }
@@ -208,7 +206,7 @@ int isdn_x25iface_receive(struct concap_proto *cprot, struct sk_buff *skb)
 
 /* a connection set up is indicated by lower layer 
  */
-int isdn_x25iface_connect_ind(struct concap_proto *cprot)
+static int isdn_x25iface_connect_ind(struct concap_proto *cprot)
 {
        struct sk_buff * skb = dev_alloc_skb(1);
        enum wan_states *state_p 
@@ -224,10 +222,7 @@ int isdn_x25iface_connect_ind(struct concap_proto *cprot)
        *state_p = WAN_CONNECTED;
        if( skb ){
                *( skb_put(skb, 1) ) = 0x01;
-               skb -> mac.raw = skb -> data;
-               skb -> dev  = cprot -> net_dev;
-               skb -> protocol = htons(ETH_P_X25);
-               skb -> pkt_type = PACKET_HOST;
+               skb->protocol = x25_type_trans(skb, cprot->net_dev);
                netif_rx(skb);
                return 0;
        } else {
@@ -240,7 +235,7 @@ int isdn_x25iface_connect_ind(struct concap_proto *cprot)
        
 /* a disconnect is indicated by lower layer 
  */
-int isdn_x25iface_disconn_ind(struct concap_proto *cprot)
+static int isdn_x25iface_disconn_ind(struct concap_proto *cprot)
 {
        struct sk_buff *skb;
        enum wan_states *state_p 
@@ -256,10 +251,7 @@ int isdn_x25iface_disconn_ind(struct concap_proto *cprot)
        skb = dev_alloc_skb(1);
        if( skb ){
                *( skb_put(skb, 1) ) = 0x02;
-               skb -> mac.raw = skb -> data;
-               skb -> dev  = cprot -> net_dev;
-               skb -> protocol = htons(ETH_P_X25);
-               skb -> pkt_type = PACKET_HOST;
+               skb->protocol = x25_type_trans(skb, cprot->net_dev);
                netif_rx(skb);
                return 0;
        } else {
@@ -270,13 +262,12 @@ int isdn_x25iface_disconn_ind(struct concap_proto *cprot)
 }
 
 /* process a frame handed over to us from linux network layer. First byte
-   semantics as defined in ../../Documentation/networking/x25-iface.txt 
+   semantics as defined in Documentation/networking/x25-iface.txt
    */
-int isdn_x25iface_xmit(struct concap_proto *cprot, struct sk_buff *skb)
+static int isdn_x25iface_xmit(struct concap_proto *cprot, struct sk_buff *skb)
 {
        unsigned char firstbyte = skb->data[0];
-       unsigned *state = 
-               &( ( (ix25_pdata_t*) (cprot -> proto_data) ) -> state  );
+       enum wan_states *state = &((ix25_pdata_t*)cprot->proto_data)->state;
        int ret = 0;
        IX25DEBUG( "isdn_x25iface_xmit: %s first=%x state=%d \n", MY_DEVNAME(cprot -> net_dev), firstbyte, *state );
        switch ( firstbyte ){