Loading Documentation/ABI/testing/sysfs-platform-at91 0 → 100644 +25 −0 Original line number Diff line number Diff line What: /sys/devices/platform/at91_can/net/<iface>/mb0_id Date: January 2011 KernelVersion: 2.6.38 Contact: Marc Kleine-Budde <kernel@pengutronix.de> Description: Value representing the can_id of mailbox 0. Default: 0x7ff (standard frame) Due to a chip bug (errata 50.2.6.3 & 50.3.5.3 in "AT91SAM9263 Preliminary 6249H-ATARM-27-Jul-09") the contents of mailbox 0 may be send under certain conditions (even if disabled or in rx mode). The workaround in the errata suggests not to use the mailbox and load it with an unused identifier. In order to use an extended can_id add the CAN_EFF_FLAG (0x80000000U) to the can_id. Example: - standard id 0x7ff: echo 0x7ff > /sys/class/net/can0/mb0_id - extended id 0x1fffffff: echo 0x9fffffff > /sys/class/net/can0/mb0_id Documentation/networking/bonding.txt +71 −12 Original line number Diff line number Diff line Loading @@ -49,7 +49,8 @@ Table of Contents 3.3 Configuring Bonding Manually with Ifenslave 3.3.1 Configuring Multiple Bonds Manually 3.4 Configuring Bonding Manually via Sysfs 3.5 Overriding Configuration for Special Cases 3.5 Configuration with Interfaces Support 3.6 Overriding Configuration for Special Cases 4. Querying Bonding Configuration 4.1 Bonding Configuration Loading Loading @@ -161,8 +162,8 @@ onwards) do not have /usr/include/linux symbolically linked to the default kernel source include directory. SECOND IMPORTANT NOTE: If you plan to configure bonding using sysfs, you do not need to use ifenslave. If you plan to configure bonding using sysfs or using the /etc/network/interfaces file, you do not need to use ifenslave. 2. Bonding Driver Options ========================= Loading Loading @@ -779,22 +780,26 @@ resend_igmp You can configure bonding using either your distro's network initialization scripts, or manually using either ifenslave or the sysfs interface. Distros generally use one of two packages for the network initialization scripts: initscripts or sysconfig. Recent versions of these packages have support for bonding, while older sysfs interface. Distros generally use one of three packages for the network initialization scripts: initscripts, sysconfig or interfaces. Recent versions of these packages have support for bonding, while older versions do not. We will first describe the options for configuring bonding for distros using versions of initscripts and sysconfig with full or partial support for bonding, then provide information on enabling distros using versions of initscripts, sysconfig and interfaces with full or partial support for bonding, then provide information on enabling bonding without support from the network initialization scripts (i.e., older versions of initscripts or sysconfig). If you're unsure whether your distro uses sysconfig or initscripts, or don't know if it's new enough, have no fear. If you're unsure whether your distro uses sysconfig, initscripts or interfaces, or don't know if it's new enough, have no fear. Determining this is fairly straightforward. First, issue the command: First, look for a file called interfaces in /etc/network directory. If this file is present in your system, then your system use interfaces. See Configuration with Interfaces Support. Else, issue the command: $ rpm -qf /sbin/ifup Loading Loading @@ -1327,8 +1332,62 @@ echo 2000 > /sys/class/net/bond1/bonding/arp_interval echo +eth2 > /sys/class/net/bond1/bonding/slaves echo +eth3 > /sys/class/net/bond1/bonding/slaves 3.5 Overriding Configuration for Special Cases 3.5 Configuration with Interfaces Support ----------------------------------------- This section applies to distros which use /etc/network/interfaces file to describe network interface configuration, most notably Debian and it's derivatives. The ifup and ifdown commands on Debian don't support bonding out of the box. The ifenslave-2.6 package should be installed to provide bonding support. Once installed, this package will provide bond-* options to be used into /etc/network/interfaces. Note that ifenslave-2.6 package will load the bonding module and use the ifenslave command when appropriate. Example Configurations ---------------------- In /etc/network/interfaces, the following stanza will configure bond0, in active-backup mode, with eth0 and eth1 as slaves. auto bond0 iface bond0 inet dhcp bond-slaves eth0 eth1 bond-mode active-backup bond-miimon 100 bond-primary eth0 eth1 If the above configuration doesn't work, you might have a system using upstart for system startup. This is most notably true for recent Ubuntu versions. The following stanza in /etc/network/interfaces will produce the same result on those systems. auto bond0 iface bond0 inet dhcp bond-slaves none bond-mode active-backup bond-miimon 100 auto eth0 iface eth0 inet manual bond-master bond0 bond-primary eth0 eth1 auto eth1 iface eth1 inet manual bond-master bond0 bond-primary eth0 eth1 For a full list of bond-* supported options in /etc/network/interfaces and some more advanced examples tailored to you particular distros, see the files in /usr/share/doc/ifenslave-2.6. 3.6 Overriding Configuration for Special Cases ---------------------------------------------- When using the bonding driver, the physical port which transmits a frame is typically selected by the bonding driver, and is not relevant to the user or system administrator. The output port is simply selected using the policies of Loading MAINTAINERS +0 −1 Original line number Diff line number Diff line Loading @@ -3327,7 +3327,6 @@ F: drivers/net/wimax/i2400m/ F: include/linux/wimax/i2400m.h INTEL WIRELESS WIFI LINK (iwlwifi) M: Reinette Chatre <reinette.chatre@intel.com> M: Wey-Yi Guy <wey-yi.w.guy@intel.com> M: Intel Linux Wireless <ilw@linux.intel.com> L: linux-wireless@vger.kernel.org Loading drivers/bluetooth/ath3k.c +20 −55 Original line number Diff line number Diff line Loading @@ -47,46 +47,40 @@ MODULE_DEVICE_TABLE(usb, ath3k_table); #define USB_REQ_DFU_DNLOAD 1 #define BULK_SIZE 4096 struct ath3k_data { struct usb_device *udev; u8 *fw_data; u32 fw_size; u32 fw_sent; }; static int ath3k_load_firmware(struct ath3k_data *data, unsigned char *firmware, int count) static int ath3k_load_firmware(struct usb_device *udev, const struct firmware *firmware) { u8 *send_buf; int err, pipe, len, size, sent = 0; int count = firmware->size; BT_DBG("ath3k %p udev %p", data, data->udev); BT_DBG("udev %p", udev); pipe = usb_sndctrlpipe(data->udev, 0); pipe = usb_sndctrlpipe(udev, 0); if ((usb_control_msg(data->udev, pipe, send_buf = kmalloc(BULK_SIZE, GFP_ATOMIC); if (!send_buf) { BT_ERR("Can't allocate memory chunk for firmware"); return -ENOMEM; } memcpy(send_buf, firmware->data, 20); if ((err = usb_control_msg(udev, pipe, USB_REQ_DFU_DNLOAD, USB_TYPE_VENDOR, 0, 0, firmware, 20, USB_CTRL_SET_TIMEOUT)) < 0) { send_buf, 20, USB_CTRL_SET_TIMEOUT)) < 0) { BT_ERR("Can't change to loading configuration err"); return -EBUSY; goto error; } sent += 20; count -= 20; send_buf = kmalloc(BULK_SIZE, GFP_ATOMIC); if (!send_buf) { BT_ERR("Can't allocate memory chunk for firmware"); return -ENOMEM; } while (count) { size = min_t(uint, count, BULK_SIZE); pipe = usb_sndbulkpipe(data->udev, 0x02); memcpy(send_buf, firmware + sent, size); pipe = usb_sndbulkpipe(udev, 0x02); memcpy(send_buf, firmware->data + sent, size); err = usb_bulk_msg(data->udev, pipe, send_buf, size, err = usb_bulk_msg(udev, pipe, send_buf, size, &len, 3000); if (err || (len != size)) { Loading @@ -112,57 +106,28 @@ static int ath3k_probe(struct usb_interface *intf, { const struct firmware *firmware; struct usb_device *udev = interface_to_usbdev(intf); struct ath3k_data *data; int size; BT_DBG("intf %p id %p", intf, id); if (intf->cur_altsetting->desc.bInterfaceNumber != 0) return -ENODEV; data = kzalloc(sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; data->udev = udev; if (request_firmware(&firmware, "ath3k-1.fw", &udev->dev) < 0) { kfree(data); return -EIO; } size = max_t(uint, firmware->size, 4096); data->fw_data = kmalloc(size, GFP_KERNEL); if (!data->fw_data) { if (ath3k_load_firmware(udev, firmware)) { release_firmware(firmware); kfree(data); return -ENOMEM; } memcpy(data->fw_data, firmware->data, firmware->size); data->fw_size = firmware->size; data->fw_sent = 0; release_firmware(firmware); usb_set_intfdata(intf, data); if (ath3k_load_firmware(data, data->fw_data, data->fw_size)) { usb_set_intfdata(intf, NULL); kfree(data->fw_data); kfree(data); return -EIO; } release_firmware(firmware); return 0; } static void ath3k_disconnect(struct usb_interface *intf) { struct ath3k_data *data = usb_get_intfdata(intf); BT_DBG("ath3k_disconnect intf %p", intf); kfree(data->fw_data); kfree(data); } static struct usb_driver ath3k_driver = { Loading drivers/net/bnx2.c +4 −0 Original line number Diff line number Diff line Loading @@ -7553,6 +7553,10 @@ bnx2_set_flags(struct net_device *dev, u32 data) !(data & ETH_FLAG_RXVLAN)) return -EINVAL; /* TSO with VLAN tag won't work with current firmware */ if (!(data & ETH_FLAG_TXVLAN)) return -EINVAL; rc = ethtool_op_set_flags(dev, data, ETH_FLAG_RXHASH | ETH_FLAG_RXVLAN | ETH_FLAG_TXVLAN); if (rc) Loading Loading
Documentation/ABI/testing/sysfs-platform-at91 0 → 100644 +25 −0 Original line number Diff line number Diff line What: /sys/devices/platform/at91_can/net/<iface>/mb0_id Date: January 2011 KernelVersion: 2.6.38 Contact: Marc Kleine-Budde <kernel@pengutronix.de> Description: Value representing the can_id of mailbox 0. Default: 0x7ff (standard frame) Due to a chip bug (errata 50.2.6.3 & 50.3.5.3 in "AT91SAM9263 Preliminary 6249H-ATARM-27-Jul-09") the contents of mailbox 0 may be send under certain conditions (even if disabled or in rx mode). The workaround in the errata suggests not to use the mailbox and load it with an unused identifier. In order to use an extended can_id add the CAN_EFF_FLAG (0x80000000U) to the can_id. Example: - standard id 0x7ff: echo 0x7ff > /sys/class/net/can0/mb0_id - extended id 0x1fffffff: echo 0x9fffffff > /sys/class/net/can0/mb0_id
Documentation/networking/bonding.txt +71 −12 Original line number Diff line number Diff line Loading @@ -49,7 +49,8 @@ Table of Contents 3.3 Configuring Bonding Manually with Ifenslave 3.3.1 Configuring Multiple Bonds Manually 3.4 Configuring Bonding Manually via Sysfs 3.5 Overriding Configuration for Special Cases 3.5 Configuration with Interfaces Support 3.6 Overriding Configuration for Special Cases 4. Querying Bonding Configuration 4.1 Bonding Configuration Loading Loading @@ -161,8 +162,8 @@ onwards) do not have /usr/include/linux symbolically linked to the default kernel source include directory. SECOND IMPORTANT NOTE: If you plan to configure bonding using sysfs, you do not need to use ifenslave. If you plan to configure bonding using sysfs or using the /etc/network/interfaces file, you do not need to use ifenslave. 2. Bonding Driver Options ========================= Loading Loading @@ -779,22 +780,26 @@ resend_igmp You can configure bonding using either your distro's network initialization scripts, or manually using either ifenslave or the sysfs interface. Distros generally use one of two packages for the network initialization scripts: initscripts or sysconfig. Recent versions of these packages have support for bonding, while older sysfs interface. Distros generally use one of three packages for the network initialization scripts: initscripts, sysconfig or interfaces. Recent versions of these packages have support for bonding, while older versions do not. We will first describe the options for configuring bonding for distros using versions of initscripts and sysconfig with full or partial support for bonding, then provide information on enabling distros using versions of initscripts, sysconfig and interfaces with full or partial support for bonding, then provide information on enabling bonding without support from the network initialization scripts (i.e., older versions of initscripts or sysconfig). If you're unsure whether your distro uses sysconfig or initscripts, or don't know if it's new enough, have no fear. If you're unsure whether your distro uses sysconfig, initscripts or interfaces, or don't know if it's new enough, have no fear. Determining this is fairly straightforward. First, issue the command: First, look for a file called interfaces in /etc/network directory. If this file is present in your system, then your system use interfaces. See Configuration with Interfaces Support. Else, issue the command: $ rpm -qf /sbin/ifup Loading Loading @@ -1327,8 +1332,62 @@ echo 2000 > /sys/class/net/bond1/bonding/arp_interval echo +eth2 > /sys/class/net/bond1/bonding/slaves echo +eth3 > /sys/class/net/bond1/bonding/slaves 3.5 Overriding Configuration for Special Cases 3.5 Configuration with Interfaces Support ----------------------------------------- This section applies to distros which use /etc/network/interfaces file to describe network interface configuration, most notably Debian and it's derivatives. The ifup and ifdown commands on Debian don't support bonding out of the box. The ifenslave-2.6 package should be installed to provide bonding support. Once installed, this package will provide bond-* options to be used into /etc/network/interfaces. Note that ifenslave-2.6 package will load the bonding module and use the ifenslave command when appropriate. Example Configurations ---------------------- In /etc/network/interfaces, the following stanza will configure bond0, in active-backup mode, with eth0 and eth1 as slaves. auto bond0 iface bond0 inet dhcp bond-slaves eth0 eth1 bond-mode active-backup bond-miimon 100 bond-primary eth0 eth1 If the above configuration doesn't work, you might have a system using upstart for system startup. This is most notably true for recent Ubuntu versions. The following stanza in /etc/network/interfaces will produce the same result on those systems. auto bond0 iface bond0 inet dhcp bond-slaves none bond-mode active-backup bond-miimon 100 auto eth0 iface eth0 inet manual bond-master bond0 bond-primary eth0 eth1 auto eth1 iface eth1 inet manual bond-master bond0 bond-primary eth0 eth1 For a full list of bond-* supported options in /etc/network/interfaces and some more advanced examples tailored to you particular distros, see the files in /usr/share/doc/ifenslave-2.6. 3.6 Overriding Configuration for Special Cases ---------------------------------------------- When using the bonding driver, the physical port which transmits a frame is typically selected by the bonding driver, and is not relevant to the user or system administrator. The output port is simply selected using the policies of Loading
MAINTAINERS +0 −1 Original line number Diff line number Diff line Loading @@ -3327,7 +3327,6 @@ F: drivers/net/wimax/i2400m/ F: include/linux/wimax/i2400m.h INTEL WIRELESS WIFI LINK (iwlwifi) M: Reinette Chatre <reinette.chatre@intel.com> M: Wey-Yi Guy <wey-yi.w.guy@intel.com> M: Intel Linux Wireless <ilw@linux.intel.com> L: linux-wireless@vger.kernel.org Loading
drivers/bluetooth/ath3k.c +20 −55 Original line number Diff line number Diff line Loading @@ -47,46 +47,40 @@ MODULE_DEVICE_TABLE(usb, ath3k_table); #define USB_REQ_DFU_DNLOAD 1 #define BULK_SIZE 4096 struct ath3k_data { struct usb_device *udev; u8 *fw_data; u32 fw_size; u32 fw_sent; }; static int ath3k_load_firmware(struct ath3k_data *data, unsigned char *firmware, int count) static int ath3k_load_firmware(struct usb_device *udev, const struct firmware *firmware) { u8 *send_buf; int err, pipe, len, size, sent = 0; int count = firmware->size; BT_DBG("ath3k %p udev %p", data, data->udev); BT_DBG("udev %p", udev); pipe = usb_sndctrlpipe(data->udev, 0); pipe = usb_sndctrlpipe(udev, 0); if ((usb_control_msg(data->udev, pipe, send_buf = kmalloc(BULK_SIZE, GFP_ATOMIC); if (!send_buf) { BT_ERR("Can't allocate memory chunk for firmware"); return -ENOMEM; } memcpy(send_buf, firmware->data, 20); if ((err = usb_control_msg(udev, pipe, USB_REQ_DFU_DNLOAD, USB_TYPE_VENDOR, 0, 0, firmware, 20, USB_CTRL_SET_TIMEOUT)) < 0) { send_buf, 20, USB_CTRL_SET_TIMEOUT)) < 0) { BT_ERR("Can't change to loading configuration err"); return -EBUSY; goto error; } sent += 20; count -= 20; send_buf = kmalloc(BULK_SIZE, GFP_ATOMIC); if (!send_buf) { BT_ERR("Can't allocate memory chunk for firmware"); return -ENOMEM; } while (count) { size = min_t(uint, count, BULK_SIZE); pipe = usb_sndbulkpipe(data->udev, 0x02); memcpy(send_buf, firmware + sent, size); pipe = usb_sndbulkpipe(udev, 0x02); memcpy(send_buf, firmware->data + sent, size); err = usb_bulk_msg(data->udev, pipe, send_buf, size, err = usb_bulk_msg(udev, pipe, send_buf, size, &len, 3000); if (err || (len != size)) { Loading @@ -112,57 +106,28 @@ static int ath3k_probe(struct usb_interface *intf, { const struct firmware *firmware; struct usb_device *udev = interface_to_usbdev(intf); struct ath3k_data *data; int size; BT_DBG("intf %p id %p", intf, id); if (intf->cur_altsetting->desc.bInterfaceNumber != 0) return -ENODEV; data = kzalloc(sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; data->udev = udev; if (request_firmware(&firmware, "ath3k-1.fw", &udev->dev) < 0) { kfree(data); return -EIO; } size = max_t(uint, firmware->size, 4096); data->fw_data = kmalloc(size, GFP_KERNEL); if (!data->fw_data) { if (ath3k_load_firmware(udev, firmware)) { release_firmware(firmware); kfree(data); return -ENOMEM; } memcpy(data->fw_data, firmware->data, firmware->size); data->fw_size = firmware->size; data->fw_sent = 0; release_firmware(firmware); usb_set_intfdata(intf, data); if (ath3k_load_firmware(data, data->fw_data, data->fw_size)) { usb_set_intfdata(intf, NULL); kfree(data->fw_data); kfree(data); return -EIO; } release_firmware(firmware); return 0; } static void ath3k_disconnect(struct usb_interface *intf) { struct ath3k_data *data = usb_get_intfdata(intf); BT_DBG("ath3k_disconnect intf %p", intf); kfree(data->fw_data); kfree(data); } static struct usb_driver ath3k_driver = { Loading
drivers/net/bnx2.c +4 −0 Original line number Diff line number Diff line Loading @@ -7553,6 +7553,10 @@ bnx2_set_flags(struct net_device *dev, u32 data) !(data & ETH_FLAG_RXVLAN)) return -EINVAL; /* TSO with VLAN tag won't work with current firmware */ if (!(data & ETH_FLAG_TXVLAN)) return -EINVAL; rc = ethtool_op_set_flags(dev, data, ETH_FLAG_RXHASH | ETH_FLAG_RXVLAN | ETH_FLAG_TXVLAN); if (rc) Loading