const size_t size = sizeof(raw_hdlc_proto);
        raw_hdlc_proto new_settings;
        hdlc_device *hdlc = dev_to_hdlc(dev);
-       int result, old_qlen;
+       unsigned int old_qlen;
+       int result;
 
        switch (ifr->ifr_settings.type) {
        case IF_GET_PROTO:
 
 #ifdef CONFIG_NET_SCHED
        DECLARE_HASHTABLE       (qdisc_hash, 4);
 #endif
-       unsigned long           tx_queue_len;
+       unsigned int            tx_queue_len;
        spinlock_t              tx_global_lock;
        int                     watchdog_timeo;
 
 
 
 static int change_tx_queue_len(struct net_device *dev, unsigned long new_len)
 {
-       int res, orig_len = dev->tx_queue_len;
+       unsigned int orig_len = dev->tx_queue_len;
+       int res;
+
+       if (new_len != (unsigned int)new_len)
+               return -ERANGE;
 
        if (new_len != orig_len) {
                dev->tx_queue_len = new_len;
 
        return netdev_store(dev, attr, buf, len, change_tx_queue_len);
 }
-NETDEVICE_SHOW_RW(tx_queue_len, fmt_ulong);
+NETDEVICE_SHOW_RW(tx_queue_len, fmt_dec);
 
 static int change_gro_flush_timeout(struct net_device *dev, unsigned long val)
 {
 
        }
 
        if (tb[IFLA_TXQLEN]) {
-               unsigned long value = nla_get_u32(tb[IFLA_TXQLEN]);
-               unsigned long orig_len = dev->tx_queue_len;
+               unsigned int value = nla_get_u32(tb[IFLA_TXQLEN]);
+               unsigned int orig_len = dev->tx_queue_len;
 
                if (dev->tx_queue_len ^ value) {
                        dev->tx_queue_len = value;