Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e47f3178 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge commit master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 of HEAD

* HEAD:
  [NET]: fix __sk_stream_mem_reclaim
  [Bluetooth] Fix deadlock in the L2CAP layer
  [Bluetooth] Let BT_HIDP depend on INPUT
  [Bluetooth] Avoid NULL pointer dereference with tty->driver
  [Bluetooth] Remaining transitions to use kzalloc()
  [WAN]: converting generic HDLC to use netif_dormant*()
  [IPV4]: Fix error handling for fib_insert_node call
  [NETROM] lockdep: fix false positive
  [ROSE] lockdep: fix false positive
  [AX.25]: Optimize AX.25 socket list lock
  [IPCOMP]: Fix truesize after decompression
  [IPV6]: Use ipv6_addr_src_scope for link address sorting.
  [TCP] tcp_highspeed: Fix AI updates.
  [MAINTAINERS]: Add proper entry for TC classifier
  [NETROM]: Drop lock before calling nr_destroy_socket
  [NETROM]: Fix locking order when establishing a NETROM circuit.
  [AX.25]: Fix locking of ax25 protocol function list.
  [IPV6]: order addresses by scope
parents a0486407 a6f157a8
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -2752,6 +2752,12 @@ P: Christoph Hellwig
M:	hch@infradead.org
S:	Maintained

TC CLASSIFIER
P:	Jamal Hadi Salim
M:	hadi@cyberus.ca
L:	netdev@vger.kernel.org
S:	Maintained

TI OMAP RANDOM NUMBER GENERATOR SUPPORT
P:	Deepak Saxena
M:	dsaxena@plexity.net
+2 −2
Original line number Diff line number Diff line
@@ -191,7 +191,7 @@ static int hci_uart_flush(struct hci_dev *hdev)

	/* Flush any pending characters in the driver and discipline. */
	tty_ldisc_flush(tty);
	if (tty->driver->flush_buffer)
	if (tty->driver && tty->driver->flush_buffer)
		tty->driver->flush_buffer(tty);

	if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
@@ -290,7 +290,7 @@ static int hci_uart_tty_open(struct tty_struct *tty)
	if (tty->ldisc.flush_buffer)
		tty->ldisc.flush_buffer(tty);

	if (tty->driver->flush_buffer)
	if (tty->driver && tty->driver->flush_buffer)
		tty->driver->flush_buffer(tty);

	return 0;
+16 −10
Original line number Diff line number Diff line
@@ -116,27 +116,33 @@ static inline void openwin(card_t *card, u8 page)
#include "hd6457x.c"


static inline void set_carrier(port_t *port)
{
	if (!sca_in(MSCI1_OFFSET + ST3, port) & ST3_DCD)
		netif_carrier_on(port_to_dev(port));
	else
		netif_carrier_off(port_to_dev(port));
}


static void sca_msci_intr(port_t *port)
{
	struct net_device *dev = port_to_dev(port);
	card_t* card = port_to_card(port);
	u8 stat = sca_in(MSCI1_OFFSET + ST1, card); /* read MSCI ST1 status */
	u8 stat = sca_in(MSCI1_OFFSET + ST1, port); /* read MSCI ST1 status */

	/* Reset MSCI TX underrun status bit */
	sca_out(stat & ST1_UDRN, MSCI0_OFFSET + ST1, card);
	sca_out(stat & ST1_UDRN, MSCI0_OFFSET + ST1, port);

	if (stat & ST1_UDRN) {
		struct net_device_stats *stats = hdlc_stats(dev);
		struct net_device_stats *stats = hdlc_stats(port_to_dev(port));
		stats->tx_errors++; /* TX Underrun error detected */
		stats->tx_fifo_errors++;
	}

	/* Reset MSCI CDCD status bit - uses ch#2 DCD input */
	sca_out(stat & ST1_CDCD, MSCI1_OFFSET + ST1, card);
	sca_out(stat & ST1_CDCD, MSCI1_OFFSET + ST1, port);

	if (stat & ST1_CDCD)
		hdlc_set_carrier(!(sca_in(MSCI1_OFFSET + ST3, card) & ST3_DCD),
				 dev);
		set_carrier(port);
}


@@ -190,7 +196,7 @@ static int c101_open(struct net_device *dev)
	sca_out(IE1_UDRN, MSCI0_OFFSET + IE1, port);
	sca_out(IE0_TXINT, MSCI0_OFFSET + IE0, port);

	hdlc_set_carrier(!(sca_in(MSCI1_OFFSET + ST3, port) & ST3_DCD), dev);
	set_carrier(port);
	printk(KERN_DEBUG "0x%X\n", sca_in(MSCI1_OFFSET + ST3, port));

	/* enable MSCI1 CDCD interrupt */
@@ -378,7 +384,7 @@ static int __init c101_run(unsigned long irq, unsigned long winbase)
	}

	sca_init_sync_port(card); /* Set up C101 memory */
	hdlc_set_carrier(!(sca_in(MSCI1_OFFSET + ST3, card) & ST3_DCD), dev);
	set_carrier(card);

	printk(KERN_INFO "%s: Moxa C101 on IRQ%u,"
	       " using %u TX + %u RX packets rings\n",
+20 −6
Original line number Diff line number Diff line
@@ -168,6 +168,23 @@ static inline u32 buffer_offset(port_t *port, u16 desc, int transmit)
}


static inline void sca_set_carrier(port_t *port)
{
	if (!(sca_in(get_msci(port) + ST3, port_to_card(port)) & ST3_DCD)) {
#ifdef DEBUG_LINK
		printk(KERN_DEBUG "%s: sca_set_carrier on\n",
		       port_to_dev(port)->name);
#endif
		netif_carrier_on(port_to_dev(port));
	} else {
#ifdef DEBUG_LINK
		printk(KERN_DEBUG "%s: sca_set_carrier off\n",
		       port_to_dev(port)->name);
#endif
		netif_carrier_off(port_to_dev(port));
	}
}


static void sca_init_sync_port(port_t *port)
{
@@ -237,9 +254,7 @@ static void sca_init_sync_port(port_t *port)
			sca_out(DIR_BOFE, DIR_TX(phy_node(port)), card);
		}
	}

	hdlc_set_carrier(!(sca_in(get_msci(port) + ST3, card) & ST3_DCD),
			 port_to_dev(port));
	sca_set_carrier(port);
}


@@ -262,8 +277,7 @@ static inline void sca_msci_intr(port_t *port)
	}

	if (stat & ST1_CDCD)
		hdlc_set_carrier(!(sca_in(msci + ST3, card) & ST3_DCD),
				 port_to_dev(port));
		sca_set_carrier(port);
}
#endif

@@ -566,7 +580,7 @@ static void sca_open(struct net_device *dev)
   - all DMA interrupts
*/

	hdlc_set_carrier(!(sca_in(msci + ST3, card) & ST3_DCD), dev);
	sca_set_carrier(port);

#ifdef __HD64570_H
	/* MSCI TX INT and RX INT A IRQ enable */
+4 −10
Original line number Diff line number Diff line
@@ -192,9 +192,7 @@ static int cisco_rx(struct sk_buff *skb)
					       "uptime %ud%uh%um%us)\n",
					       dev->name, days, hrs,
					       min, sec);
#if 0
					netif_carrier_on(dev);
#endif
					netif_dormant_off(dev);
					hdlc->state.cisco.up = 1;
				}
			}
@@ -227,9 +225,7 @@ static void cisco_timer(unsigned long arg)
		       hdlc->state.cisco.settings.timeout * HZ)) {
		hdlc->state.cisco.up = 0;
		printk(KERN_INFO "%s: Link down\n", dev->name);
#if 0
		netif_carrier_off(dev);
#endif
		netif_dormant_on(dev);
	}

	cisco_keepalive_send(dev, CISCO_KEEPALIVE_REQ,
@@ -265,10 +261,7 @@ static void cisco_stop(struct net_device *dev)
{
	hdlc_device *hdlc = dev_to_hdlc(dev);
	del_timer_sync(&hdlc->state.cisco.timer);
#if 0
	if (netif_carrier_ok(dev))
		netif_carrier_off(dev);
#endif
	netif_dormant_on(dev);
	hdlc->state.cisco.up = 0;
	hdlc->state.cisco.request_sent = 0;
}
@@ -328,6 +321,7 @@ int hdlc_cisco_ioctl(struct net_device *dev, struct ifreq *ifr)
		dev->type = ARPHRD_CISCO;
		dev->flags = IFF_POINTOPOINT | IFF_NOARP;
		dev->addr_len = 0;
		netif_dormant_on(dev);
		return 0;
	}

Loading