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

Commit 39892032 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
  b44: Use kernel DMA addresses for the kernel DMA API
  forcedeth: Fix resume from hibernation regression.
  xfrm: fix fragmentation on inter family tunnels
  ibm_newemac: Fix dangerous struct assumption
  gigaset: documentation update
  gigaset: in file ops, check for device disconnect before anything else
  bas_gigaset: use tasklet_hi_schedule for timing critical tasklets
  net/802/fddi.c: add MODULE_LICENSE
  smsc911x: remove unused #include <linux/version.h>
  axnet_cs: fix phy_id detection for bogus Asix chip.
  bnx2: Use request_firmware()
  b44: Fix sizes passed to b44_sync_dma_desc_for_{device,cpu}()
  socket: use percpu_add() while updating sockets_in_use
  virtio_net: Set the mac config only when VIRITO_NET_F_MAC
  myri_sbus: use request_firmware
  e1000: fix loss of multicast packets
  vxge: should include tcp.h

Conflict in firmware/WHENCE (SCSI vs net firmware)
parents d508afb4 37efa239
Loading
Loading
Loading
Loading
+32 −20
Original line number Diff line number Diff line
@@ -61,24 +61,28 @@ GigaSet 307x Device Driver
     ---------------------
2.1. Modules
     -------
     To get the device working, you have to load the proper kernel module. You
     can do this using
         modprobe modulename
     where modulename is ser_gigaset (M101), usb_gigaset (M105), or
     bas_gigaset (direct USB connection to the base).
     For the devices to work, the proper kernel modules have to be loaded.
     This normally happens automatically when the system detects the USB
     device (base, M105) or when the line discipline is attached (M101). It
     can also be triggered manually using the modprobe(8) command, for example
     for troubleshooting or to pass module parameters.

     The module ser_gigaset provides a serial line discipline N_GIGASET_M101
     which drives the device through the regular serial line driver. To use it,
     run the Gigaset M101 daemon "gigasetm101d" (also available from
     http://sourceforge.net/projects/gigaset307x/) with the device file of the
     RS232 port to the M101 as an argument, for example:
	 gigasetm101d /dev/ttyS1
     This will open the device file, set its line discipline to N_GIGASET_M101,
     and then sleep in the background, keeping the device open so that the
     line discipline remains active. To deactivate it, kill the daemon, for
     example with
	 killall gigasetm101d
     before disconnecting the device.
     which drives the device through the regular serial line driver. It must
     be attached to the serial line to which the M101 is connected with the
     ldattach(8) command (requires util-linux-ng release 2.14 or later), for
     example:
	 ldattach GIGASET_M101 /dev/ttyS1
     This will open the device file, attach the line discipline to it, and
     then sleep in the background, keeping the device open so that the line
     discipline remains active. To deactivate it, kill the daemon, for example
     with
	 killall ldattach
     before disconnecting the device. To have this happen automatically at
     system startup/shutdown on an LSB compatible system, create and activate
     an appropriate LSB startup script /etc/init.d/gigaset. (The init name
     'gigaset' is officially assigned to this project by LANANA.)
     Alternatively, just add the 'ldattach' command line to /etc/rc.local.

2.2. Device nodes for user space programs
     ------------------------------------
@@ -194,10 +198,11 @@ GigaSet 307x Device Driver
     operation (for wireless access to the base), but are needed for access
     to the M105's own configuration mode (registration to the base, baudrate
     and line format settings, device status queries) via the gigacontr
     utility. Their use is disabled in the driver by default for safety
     reasons but can be enabled by setting the kernel configuration option
     "Support for undocumented USB requests" (GIGASET_UNDOCREQ) to "Y" and
     recompiling.
     utility. Their use is controlled by the kernel configuration option
     "Support for undocumented USB requests" (CONFIG_GIGASET_UNDOCREQ). If you
     encounter error code -ENOTTY when trying to use some features of the
     M105, try setting that option to "y" via 'make {x,menu}config' and
     recompiling the driver.


3.   Troubleshooting
@@ -228,6 +233,13 @@ GigaSet 307x Device Driver
     Solution:
        Select Unimodem mode for all DECT data adapters. (see section 2.4.)

     Problem:
        You want to configure your USB DECT data adapter (M105) but gigacontr
        reports an error: "/dev/ttyGU0: Inappropriate ioctl for device".
     Solution:
        Recompile the usb_gigaset driver with the kernel configuration option
        CONFIG_GIGASET_UNDOCREQ set to 'y'. (see section 2.6.)

3.2. Telling the driver to provide more information
     ----------------------------------------------
     Building the driver with the "Gigaset debugging" kernel configuration
+2 −2
Original line number Diff line number Diff line
@@ -821,7 +821,7 @@ static void read_iso_callback(struct urb *urb)
		/* pass URB to tasklet */
		ubc->isoindone = urb;
		ubc->isoinstatus = status;
		tasklet_schedule(&ubc->rcvd_tasklet);
		tasklet_hi_schedule(&ubc->rcvd_tasklet);
	} else {
		/* tasklet still busy, drop data and resubmit URB */
		ubc->loststatus = status;
@@ -888,7 +888,7 @@ static void write_iso_callback(struct urb *urb)
	ubc->isooutovfl = ubc->isooutdone;
	ubc->isooutdone = ucx;
	spin_unlock_irqrestore(&ubc->isooutlock, flags);
	tasklet_schedule(&ubc->sent_tasklet);
	tasklet_hi_schedule(&ubc->sent_tasklet);
}

/* starturbs
+30 −28
Original line number Diff line number Diff line
@@ -193,7 +193,9 @@ static void if_close(struct tty_struct *tty, struct file *filp)

	mutex_lock(&cs->mutex);

	if (!cs->open_count)
	if (!cs->connected)
		gig_dbg(DEBUG_IF, "not connected");	/* nothing to do */
	else if (!cs->open_count)
		dev_warn(cs->dev, "%s: device not opened\n", __func__);
	else {
		if (!--cs->open_count) {
@@ -228,7 +230,10 @@ static int if_ioctl(struct tty_struct *tty, struct file *file,
	if (mutex_lock_interruptible(&cs->mutex))
		return -ERESTARTSYS; // FIXME -EINTR?

	if (!cs->open_count)
	if (!cs->connected) {
		gig_dbg(DEBUG_IF, "not connected");
		retval = -ENODEV;
	} else if (!cs->open_count)
		dev_warn(cs->dev, "%s: device not opened\n", __func__);
	else {
		retval = 0;
@@ -248,13 +253,6 @@ static int if_ioctl(struct tty_struct *tty, struct file *file,
				retval = put_user(int_arg, (int __user *) arg);
			break;
		case GIGASET_BRKCHARS:
			//FIXME test if MS_LOCKED
			if (!cs->connected) {
				gig_dbg(DEBUG_ANY,
				    "can't communicate with unplugged device");
				retval = -ENODEV;
				break;
			}
			retval = copy_from_user(&buf,
					(const unsigned char __user *) arg, 6)
				? -EFAULT : 0;
@@ -331,7 +329,7 @@ static int if_tiocmset(struct tty_struct *tty, struct file *file,
		return -ERESTARTSYS; // FIXME -EINTR?

	if (!cs->connected) {
		gig_dbg(DEBUG_ANY, "can't communicate with unplugged device");
		gig_dbg(DEBUG_IF, "not connected");
		retval = -ENODEV;
	} else {
		mc = (cs->control_state | set) & ~clear & (TIOCM_RTS|TIOCM_DTR);
@@ -360,14 +358,14 @@ static int if_write(struct tty_struct *tty, const unsigned char *buf, int count)
	if (mutex_lock_interruptible(&cs->mutex))
		return -ERESTARTSYS; // FIXME -EINTR?

	if (!cs->open_count)
	if (!cs->connected) {
		gig_dbg(DEBUG_IF, "not connected");
		retval = -ENODEV;
	} else if (!cs->open_count)
		dev_warn(cs->dev, "%s: device not opened\n", __func__);
	else if (cs->mstate != MS_LOCKED) {
		dev_warn(cs->dev, "can't write to unlocked device\n");
		retval = -EBUSY;
	} else if (!cs->connected) {
		gig_dbg(DEBUG_ANY, "can't write to unplugged device");
		retval = -EBUSY; //FIXME
	} else {
		retval = cs->ops->write_cmd(cs, buf, count,
					    &cs->if_wake_tasklet);
@@ -394,14 +392,14 @@ static int if_write_room(struct tty_struct *tty)
	if (mutex_lock_interruptible(&cs->mutex))
		return -ERESTARTSYS; // FIXME -EINTR?

	if (!cs->open_count)
	if (!cs->connected) {
		gig_dbg(DEBUG_IF, "not connected");
		retval = -ENODEV;
	} else if (!cs->open_count)
		dev_warn(cs->dev, "%s: device not opened\n", __func__);
	else if (cs->mstate != MS_LOCKED) {
		dev_warn(cs->dev, "can't write to unlocked device\n");
		retval = -EBUSY;
	} else if (!cs->connected) {
		gig_dbg(DEBUG_ANY, "can't write to unplugged device");
		retval = -EBUSY; //FIXME
	} else
		retval = cs->ops->write_room(cs);

@@ -426,14 +424,14 @@ static int if_chars_in_buffer(struct tty_struct *tty)
	if (mutex_lock_interruptible(&cs->mutex))
		return -ERESTARTSYS; // FIXME -EINTR?

	if (!cs->open_count)
	if (!cs->connected) {
		gig_dbg(DEBUG_IF, "not connected");
		retval = -ENODEV;
	} else if (!cs->open_count)
		dev_warn(cs->dev, "%s: device not opened\n", __func__);
	else if (cs->mstate != MS_LOCKED) {
		dev_warn(cs->dev, "can't write to unlocked device\n");
		retval = -EBUSY;
	} else if (!cs->connected) {
		gig_dbg(DEBUG_ANY, "can't write to unplugged device");
		retval = -EBUSY; //FIXME
	} else
		retval = cs->ops->chars_in_buffer(cs);

@@ -456,7 +454,9 @@ static void if_throttle(struct tty_struct *tty)

	mutex_lock(&cs->mutex);

	if (!cs->open_count)
	if (!cs->connected)
		gig_dbg(DEBUG_IF, "not connected");	/* nothing to do */
	else if (!cs->open_count)
		dev_warn(cs->dev, "%s: device not opened\n", __func__);
	else {
		//FIXME
@@ -479,7 +479,9 @@ static void if_unthrottle(struct tty_struct *tty)

	mutex_lock(&cs->mutex);

	if (!cs->open_count)
	if (!cs->connected)
		gig_dbg(DEBUG_IF, "not connected");	/* nothing to do */
	else if (!cs->open_count)
		dev_warn(cs->dev, "%s: device not opened\n", __func__);
	else {
		//FIXME
@@ -506,13 +508,13 @@ static void if_set_termios(struct tty_struct *tty, struct ktermios *old)

	mutex_lock(&cs->mutex);

	if (!cs->open_count) {
		dev_warn(cs->dev, "%s: device not opened\n", __func__);
	if (!cs->connected) {
		gig_dbg(DEBUG_IF, "not connected");
		goto out;
	}

	if (!cs->connected) {
		gig_dbg(DEBUG_ANY, "can't communicate with unplugged device");
	if (!cs->open_count) {
		dev_warn(cs->dev, "%s: device not opened\n", __func__);
		goto out;
	}

+1 −1
Original line number Diff line number Diff line
@@ -2234,7 +2234,7 @@ config BNX2
	tristate "Broadcom NetXtremeII support"
	depends on PCI
	select CRC32
	select ZLIB_INFLATE
	select FW_LOADER
	help
	  This driver supports Broadcom NetXtremeII gigabit Ethernet cards.

+4 −4
Original line number Diff line number Diff line
@@ -703,7 +703,7 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)

	if (bp->flags & B44_FLAG_RX_RING_HACK)
		b44_sync_dma_desc_for_device(bp->sdev, bp->rx_ring_dma,
			                    dest_idx * sizeof(dp),
			                    dest_idx * sizeof(*dp),
			                    DMA_BIDIRECTIONAL);

	return RX_PKT_BUF_SZ;
@@ -731,7 +731,7 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)

	if (bp->flags & B44_FLAG_RX_RING_HACK)
		b44_sync_dma_desc_for_cpu(bp->sdev, bp->rx_ring_dma,
			                 src_idx * sizeof(src_desc),
			                 src_idx * sizeof(*src_desc),
			                 DMA_BIDIRECTIONAL);

	ctrl = src_desc->ctrl;
@@ -747,10 +747,10 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)

	if (bp->flags & B44_FLAG_RX_RING_HACK)
		b44_sync_dma_desc_for_device(bp->sdev, bp->rx_ring_dma,
					     dest_idx * sizeof(dest_desc),
					     dest_idx * sizeof(*dest_desc),
					     DMA_BIDIRECTIONAL);

	ssb_dma_sync_single_for_device(bp->sdev, le32_to_cpu(src_desc->addr),
	ssb_dma_sync_single_for_device(bp->sdev, dest_map->mapping,
				       RX_PKT_BUF_SZ,
				       DMA_FROM_DEVICE);
}
Loading