lkml.org 
[lkml]   [2002]   [Feb]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] HDLC patch for 2.5.5 (1/3)
    [1/3]:
    - struct if_settings in struct ifreq becomes struct if_settings *
    - anonymous data pointer in struct if_settings is now a pointer to a
    union of struct containing l2 parameters. So far, hdlc_settings is
    the only one available
    - struct hdlc_settings is declared in (new) include/linux/hdlc/ioctl.h.
    The underlying settings (raw hdlc, cisco, fr) are moved from
    include/linux/hdlc.h to here
    - shortcuts for accessing protocol specific settings are defined in
    include/linux/hdlc/ioctl.h (shamelessly inspired from
    #define ifr_map ifr_ifru.ifru_map and friends)


    diff -burpN linux-2.5.5-pre1-kh/include/linux/hdlc/ioctl.h linux-2.5.5-pre1-ma_pomme/include/linux/hdlc/ioctl.h
    --- linux-2.5.5-pre1-kh/include/linux/hdlc/ioctl.h Thu Jan 1 01:00:00 1970
    +++ linux-2.5.5-pre1-ma_pomme/include/linux/hdlc/ioctl.h Sun Feb 17 17:42:10 2002
    @@ -0,0 +1,61 @@
    +#ifndef __HDLC_IOCTL_H__
    +#define __HDLC_IOCTL_H__
    +
    +typedef struct {
    + unsigned int clock_rate; /* bits per second */
    + unsigned int clock_type; /* internal, external, TX-internal etc. */
    + unsigned short loopback;
    +} sync_serial_settings; /* V.35, V.24, X.21 */
    +
    +typedef struct {
    + unsigned int clock_rate; /* bits per second */
    + unsigned int clock_type; /* internal, external, TX-internal etc. */
    + unsigned short loopback;
    + unsigned int slot_map;
    +} te1_settings; /* T1, E1 */
    +
    +typedef struct {
    + unsigned short encoding;
    + unsigned short parity;
    +} raw_hdlc_proto;
    +
    +typedef struct {
    + unsigned int t391;
    + unsigned int t392;
    + unsigned int n391;
    + unsigned int n392;
    + unsigned int n393;
    + unsigned short lmi;
    + unsigned short dce; /* 1 for DCE (network side) operation */
    +} fr_proto;
    +
    +typedef struct {
    + unsigned int dlci;
    +} fr_proto_pvc; /* for creating/deleting FR PVCs */
    +
    +typedef struct {
    + unsigned int interval;
    + unsigned int timeout;
    +} cisco_proto;
    +
    +/* PPP doesn't need any info now - supply length = 0 to ioctl */
    +
    +struct hdlc_settings {
    + union {
    + raw_hdlc_proto raw_hdlc;
    + cisco_proto cisco;
    + fr_proto fr;
    + fr_proto_pvc fr_pvc;
    + sync_serial_settings sync;
    + te1_settings te1;
    + } hdlcs_hdlcu;
    +};
    +
    +#define hdlcs_raw hdlcs_hdlcu.raw_hdlc
    +#define hdlcs_cisco hdlcs_hdlcu.cisco
    +#define hdlcs_fr hdlcs_hdlcu.fr
    +#define hdlcs_pvc hdlcs_hdlcu.fr_pvc
    +#define hdlcs_sync hdlcs_hdlcu.sync
    +#define hdlcs_te1 hdlcs_hdlcu.te1
    +
    +#endif /* __HDLC_IOCTL_H__ */
    diff -burpN linux-2.5.5-pre1-kh/include/linux/hdlc.h linux-2.5.5-pre1-ma_pomme/include/linux/hdlc.h
    --- linux-2.5.5-pre1-kh/include/linux/hdlc.h Sun Feb 17 17:44:14 2002
    +++ linux-2.5.5-pre1-ma_pomme/include/linux/hdlc.h Sun Feb 17 17:42:10 2002
    @@ -18,20 +18,6 @@
    #define CLOCK_TXINT 3 /* Internal TX and external RX clock */
    #define CLOCK_TXFROMRX 4 /* TX clock derived from external RX clock */

    -typedef struct {
    - unsigned int clock_rate; /* bits per second */
    - unsigned int clock_type; /* internal, external, TX-internal etc. */
    - unsigned short loopback;
    -}sync_serial_settings; /* V.35, V.24, X.21 */
    -
    -typedef struct {
    - unsigned int clock_rate; /* bits per second */
    - unsigned int clock_type; /* internal, external, TX-internal etc. */
    - unsigned short loopback;
    - unsigned int slot_map;
    -}te1_settings; /* T1, E1 */
    -
    -

    #define ENCODING_DEFAULT 0 /* Default (current) setting */
    #define ENCODING_NRZ 1
    @@ -50,38 +36,11 @@ typedef struct {
    #define PARITY_CRC32_PR0_CCITT 6 /* CRC32, initial value 0x00000000 */
    #define PARITY_CRC32_PR1_CCITT 7 /* CRC32, initial value 0xFFFFFFFF */

    -typedef struct {
    - unsigned short encoding;
    - unsigned short parity;
    -}raw_hdlc_proto;
    -
    -
    #define LMI_DEFAULT 0 /* Default (current) setting */
    #define LMI_NONE 1 /* No LMI, all PVCs are static */
    #define LMI_ANSI 2 /* ANSI Annex D */
    #define LMI_CCITT 3 /* ITU-T Annex A */

    -typedef struct {
    - unsigned int t391;
    - unsigned int t392;
    - unsigned int n391;
    - unsigned int n392;
    - unsigned int n393;
    - unsigned short lmi;
    - unsigned short dce; /* 1 for DCE (network side) operation */
    -}fr_proto;
    -
    -typedef struct {
    - unsigned int dlci;
    -}fr_proto_pvc; /* for creating/deleting FR PVCs */
    -
    -
    -typedef struct {
    - unsigned int interval;
    - unsigned int timeout;
    -}cisco_proto;
    -
    -
    /* PPP doesn't need any info now - supply length = 0 to ioctl */


    @@ -90,6 +49,7 @@ typedef struct {
    #include <linux/skbuff.h>
    #include <linux/netdevice.h>
    #include <net/syncppp.h>
    +#include <linux/hdlc/ioctl.h>

    #define HDLC_MAX_MTU 1500 /* Ethernet 1500 bytes */
    #define HDLC_MAX_MRU (HDLC_MAX_MTU + 10) /* max 10 bytes for FR */
    diff -burpN linux-2.5.5-pre1-kh/include/linux/if.h linux-2.5.5-pre1-ma_pomme/include/linux/if.h
    --- linux-2.5.5-pre1-kh/include/linux/if.h Sun Feb 17 17:39:24 2002
    +++ linux-2.5.5-pre1-ma_pomme/include/linux/if.h Sun Feb 17 17:42:10 2002
    @@ -21,6 +21,7 @@

    #include <linux/types.h> /* for "__kernel_caddr_t" et al */
    #include <linux/socket.h> /* for "struct sockaddr" et al */
    +#include <linux/hdlc/ioctl.h>

    /* Standard interface flags (netdevice->flags). */
    #define IFF_UP 0x1 /* interface is up */
    @@ -95,10 +96,13 @@ struct ifmap
    struct if_settings
    {
    unsigned int type; /* Type of physical device or protocol */
    - unsigned int data_length; /* device/protocol data length */
    - void * data; /* pointer to data, ignored if length = 0 */
    + union {
    + /* {atm/eth/dsl}_settings anyone ? */
    + struct hdlc_settings ifsu_hdlc;
    + } ifs_ifsu;
    };

    +#define ifs_hdlc ifs_ifsu.ifsu_hdlc

    /*
    * Interface request structure used for socket
    @@ -129,7 +133,7 @@ struct ifreq
    char ifru_slave[IFNAMSIZ]; /* Just fits the size */
    char ifru_newname[IFNAMSIZ];
    char * ifru_data;
    - struct if_settings ifru_settings;
    + struct if_settings *ifru_settings;
    } ifr_ifru;
    };

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 13:24    [W:3.600 / U:0.496 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site