You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (99 commits) pkt_sched: Fix actions referencing bnx2x: fix logical op tcp: (whitespace only) fix confusing indentation pkt_sched: Fix qdisc config when link is down. [Bluetooth] Add full quirk implementation for btusb driver [Bluetooth] Removal of unnecessary ignore module parameter [Bluetooth] Add parameters to control BNEP header compression ath9k: Revamp wireless mode usage ath9k: More unused macros ath9k: Remove a few unused macros and fix indentation ath9k: Use mac80211's band macros and remove enum hal_freq_band ath9k: Remove redundant data structure ath9k_txq_info ath9k: Cleanup data structures related to HW capabilities ath9k: work around gcc ICEs ath9k: Add new Atheros IEEE 802.11n driver ath5k: remove Atheros 11n devices from supported list list.h: add list_cut_position() list.h: Add list_splice_tail() and list_splice_tail_init() p54: swap short slot time dcf values rt2x00: Block all unsupported modes ...
This commit is contained in:
@@ -69,12 +69,6 @@
|
||||
device to be used as both a tty interface and as a synchronous
|
||||
controller is a project for Linux post the 2.4 release
|
||||
</para>
|
||||
<para>
|
||||
The support code handles most common card configurations and
|
||||
supports running both Cisco HDLC and Synchronous PPP. With extra
|
||||
glue the frame relay and X.25 protocols can also be used with this
|
||||
driver.
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
<chapter id="Driver_Modes">
|
||||
@@ -179,35 +173,27 @@
|
||||
<para>
|
||||
If you wish to use the network interface facilities of the driver,
|
||||
then you need to attach a network device to each channel that is
|
||||
present and in use. In addition to use the SyncPPP and Cisco HDLC
|
||||
present and in use. In addition to use the generic HDLC
|
||||
you need to follow some additional plumbing rules. They may seem
|
||||
complex but a look at the example hostess_sv11 driver should
|
||||
reassure you.
|
||||
</para>
|
||||
<para>
|
||||
The network device used for each channel should be pointed to by
|
||||
the netdevice field of each channel. The dev-> priv field of the
|
||||
the netdevice field of each channel. The hdlc-> priv field of the
|
||||
network device points to your private data - you will need to be
|
||||
able to find your ppp device from this. In addition to use the
|
||||
sync ppp layer the private data must start with a void * pointer
|
||||
to the syncppp structures.
|
||||
able to find your private data from this.
|
||||
</para>
|
||||
<para>
|
||||
The way most drivers approach this particular problem is to
|
||||
create a structure holding the Z8530 device definition and
|
||||
put that and the syncppp pointer into the private field of
|
||||
the network device. The network device fields of the channels
|
||||
then point back to the network devices. The ppp_device can also
|
||||
be put in the private structure conveniently.
|
||||
put that into the private field of the network device. The
|
||||
network device fields of the channels then point back to the
|
||||
network devices.
|
||||
</para>
|
||||
<para>
|
||||
If you wish to use the synchronous ppp then you need to attach
|
||||
the syncppp layer to the network device. You should do this before
|
||||
you register the network device. The
|
||||
<function>sppp_attach</function> requires that the first void *
|
||||
pointer in your private data is pointing to an empty struct
|
||||
ppp_device. The function fills in the initial data for the
|
||||
ppp/hdlc layer.
|
||||
If you wish to use the generic HDLC then you need to register
|
||||
the HDLC device.
|
||||
</para>
|
||||
<para>
|
||||
Before you register your network device you will also need to
|
||||
@@ -314,10 +300,10 @@
|
||||
buffer in sk_buff format and queues it for transmission. The
|
||||
caller must provide the entire packet with the exception of the
|
||||
bitstuffing and CRC. This is normally done by the caller via
|
||||
the syncppp interface layer. It returns 0 if the buffer has been
|
||||
queued and non zero values for queue full. If the function accepts
|
||||
the buffer it becomes property of the Z8530 layer and the caller
|
||||
should not free it.
|
||||
the generic HDLC interface layer. It returns 0 if the buffer has been
|
||||
queued and non zero values for queue full. If the function accepts
|
||||
the buffer it becomes property of the Z8530 layer and the caller
|
||||
should not free it.
|
||||
</para>
|
||||
<para>
|
||||
The function <function>z8530_get_stats</function> returns a pointer
|
||||
|
||||
@@ -720,6 +720,15 @@ L: linux-wireless@vger.kernel.org
|
||||
L: ath5k-devel@lists.ath5k.org
|
||||
S: Maintained
|
||||
|
||||
ATHEROS ATH9K WIRELESS DRIVER
|
||||
P: Luis R. Rodriguez
|
||||
M: lrodriguez@atheros.com
|
||||
P: Jouni Malinen
|
||||
M: jmalinen@atheros.com
|
||||
L: linux-wireless@vger.kernel.org
|
||||
L: ath9k-devel@lists.ath9k.org
|
||||
S: Supported
|
||||
|
||||
ATI_REMOTE2 DRIVER
|
||||
P: Ville Syrjala
|
||||
M: syrjala@sci.fi
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#ifndef __ASM_SH_ETH_H__
|
||||
#define __ASM_SH_ETH_H__
|
||||
|
||||
enum {EDMAC_LITTLE_ENDIAN, EDMAC_BIG_ENDIAN};
|
||||
|
||||
struct sh_eth_plat_data {
|
||||
int phy;
|
||||
int edmac_endian;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -42,9 +42,7 @@
|
||||
#define BT_DBG(D...)
|
||||
#endif
|
||||
|
||||
#define VERSION "1.1"
|
||||
|
||||
static int ignore = 0;
|
||||
#define VERSION "1.2"
|
||||
|
||||
static struct usb_device_id bcm203x_table[] = {
|
||||
/* Broadcom Blutonium (BCM2033) */
|
||||
@@ -175,7 +173,7 @@ static int bcm203x_probe(struct usb_interface *intf, const struct usb_device_id
|
||||
|
||||
BT_DBG("intf %p id %p", intf, id);
|
||||
|
||||
if (ignore || (intf->cur_altsetting->desc.bInterfaceNumber != 0))
|
||||
if (intf->cur_altsetting->desc.bInterfaceNumber != 0)
|
||||
return -ENODEV;
|
||||
|
||||
data = kzalloc(sizeof(*data), GFP_KERNEL);
|
||||
@@ -300,9 +298,6 @@ static void __exit bcm203x_exit(void)
|
||||
module_init(bcm203x_init);
|
||||
module_exit(bcm203x_exit);
|
||||
|
||||
module_param(ignore, bool, 0644);
|
||||
MODULE_PARM_DESC(ignore, "Ignore devices from the matching table");
|
||||
|
||||
MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
|
||||
MODULE_DESCRIPTION("Broadcom Blutonium firmware driver ver " VERSION);
|
||||
MODULE_VERSION(VERSION);
|
||||
|
||||
@@ -43,9 +43,7 @@
|
||||
#define BT_DBG(D...)
|
||||
#endif
|
||||
|
||||
#define VERSION "1.1"
|
||||
|
||||
static int ignore = 0;
|
||||
#define VERSION "1.2"
|
||||
|
||||
static struct usb_driver bfusb_driver;
|
||||
|
||||
@@ -656,9 +654,6 @@ static int bfusb_probe(struct usb_interface *intf, const struct usb_device_id *i
|
||||
|
||||
BT_DBG("intf %p id %p", intf, id);
|
||||
|
||||
if (ignore)
|
||||
return -ENODEV;
|
||||
|
||||
/* Check number of endpoints */
|
||||
if (intf->cur_altsetting->desc.bNumEndpoints < 2)
|
||||
return -EIO;
|
||||
@@ -795,9 +790,6 @@ static void __exit bfusb_exit(void)
|
||||
module_init(bfusb_init);
|
||||
module_exit(bfusb_exit);
|
||||
|
||||
module_param(ignore, bool, 0644);
|
||||
MODULE_PARM_DESC(ignore, "Ignore devices from the matching table");
|
||||
|
||||
MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
|
||||
MODULE_DESCRIPTION("BlueFRITZ! USB driver ver " VERSION);
|
||||
MODULE_VERSION(VERSION);
|
||||
|
||||
@@ -40,9 +40,7 @@
|
||||
#define BT_DBG(D...)
|
||||
#endif
|
||||
|
||||
#define VERSION "0.9"
|
||||
|
||||
static int ignore = 0;
|
||||
#define VERSION "0.10"
|
||||
|
||||
static struct usb_device_id bpa10x_table[] = {
|
||||
/* Tektronix BPA 100/105 (Digianswer) */
|
||||
@@ -460,9 +458,6 @@ static int bpa10x_probe(struct usb_interface *intf, const struct usb_device_id *
|
||||
|
||||
BT_DBG("intf %p id %p", intf, id);
|
||||
|
||||
if (ignore)
|
||||
return -ENODEV;
|
||||
|
||||
if (intf->cur_altsetting->desc.bInterfaceNumber != 0)
|
||||
return -ENODEV;
|
||||
|
||||
@@ -546,9 +541,6 @@ static void __exit bpa10x_exit(void)
|
||||
module_init(bpa10x_init);
|
||||
module_exit(bpa10x_exit);
|
||||
|
||||
module_param(ignore, bool, 0644);
|
||||
MODULE_PARM_DESC(ignore, "Ignore devices from the matching table");
|
||||
|
||||
MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
|
||||
MODULE_DESCRIPTION("Digianswer Bluetooth USB driver ver " VERSION);
|
||||
MODULE_VERSION(VERSION);
|
||||
|
||||
+161
-2
@@ -41,18 +41,122 @@
|
||||
#define BT_DBG(D...)
|
||||
#endif
|
||||
|
||||
#define VERSION "0.1"
|
||||
#define VERSION "0.2"
|
||||
|
||||
static int ignore_dga;
|
||||
static int ignore_csr;
|
||||
static int ignore_sniffer;
|
||||
static int disable_scofix;
|
||||
static int force_scofix;
|
||||
static int reset;
|
||||
|
||||
static struct usb_driver btusb_driver;
|
||||
|
||||
#define BTUSB_IGNORE 0x01
|
||||
#define BTUSB_RESET 0x02
|
||||
#define BTUSB_DIGIANSWER 0x04
|
||||
#define BTUSB_CSR 0x08
|
||||
#define BTUSB_SNIFFER 0x10
|
||||
#define BTUSB_BCM92035 0x20
|
||||
#define BTUSB_BROKEN_ISOC 0x40
|
||||
#define BTUSB_WRONG_SCO_MTU 0x80
|
||||
|
||||
static struct usb_device_id btusb_table[] = {
|
||||
/* Generic Bluetooth USB device */
|
||||
{ USB_DEVICE_INFO(0xe0, 0x01, 0x01) },
|
||||
|
||||
/* AVM BlueFRITZ! USB v2.0 */
|
||||
{ USB_DEVICE(0x057c, 0x3800) },
|
||||
|
||||
/* Bluetooth Ultraport Module from IBM */
|
||||
{ USB_DEVICE(0x04bf, 0x030a) },
|
||||
|
||||
/* ALPS Modules with non-standard id */
|
||||
{ USB_DEVICE(0x044e, 0x3001) },
|
||||
{ USB_DEVICE(0x044e, 0x3002) },
|
||||
|
||||
/* Ericsson with non-standard id */
|
||||
{ USB_DEVICE(0x0bdb, 0x1002) },
|
||||
|
||||
/* Canyon CN-BTU1 with HID interfaces */
|
||||
{ USB_DEVICE(0x0c10, 0x0000), .driver_info = BTUSB_RESET },
|
||||
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
|
||||
MODULE_DEVICE_TABLE(usb, btusb_table);
|
||||
|
||||
static struct usb_device_id blacklist_table[] = {
|
||||
/* CSR BlueCore devices */
|
||||
{ USB_DEVICE(0x0a12, 0x0001), .driver_info = BTUSB_CSR },
|
||||
|
||||
/* Broadcom BCM2033 without firmware */
|
||||
{ USB_DEVICE(0x0a5c, 0x2033), .driver_info = BTUSB_IGNORE },
|
||||
|
||||
/* Broadcom BCM2035 */
|
||||
{ USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
{ USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
|
||||
/* Broadcom BCM2045 */
|
||||
{ USB_DEVICE(0x0a5c, 0x2039), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
{ USB_DEVICE(0x0a5c, 0x2101), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
|
||||
/* Broadcom BCM2046 */
|
||||
{ USB_DEVICE(0x0a5c, 0x2151), .driver_info = BTUSB_RESET },
|
||||
|
||||
/* IBM/Lenovo ThinkPad with Broadcom chip */
|
||||
{ USB_DEVICE(0x0a5c, 0x201e), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
{ USB_DEVICE(0x0a5c, 0x2110), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
|
||||
/* Targus ACB10US */
|
||||
{ USB_DEVICE(0x0a5c, 0x2100), .driver_info = BTUSB_RESET },
|
||||
|
||||
/* ANYCOM Bluetooth USB-200 and USB-250 */
|
||||
{ USB_DEVICE(0x0a5c, 0x2111), .driver_info = BTUSB_RESET },
|
||||
|
||||
/* HP laptop with Broadcom chip */
|
||||
{ USB_DEVICE(0x03f0, 0x171d), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
|
||||
/* Dell laptop with Broadcom chip */
|
||||
{ USB_DEVICE(0x413c, 0x8126), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
|
||||
/* Dell Wireless 370 */
|
||||
{ USB_DEVICE(0x413c, 0x8156), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
|
||||
/* Dell Wireless 410 */
|
||||
{ USB_DEVICE(0x413c, 0x8152), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
|
||||
/* Microsoft Wireless Transceiver for Bluetooth 2.0 */
|
||||
{ USB_DEVICE(0x045e, 0x009c), .driver_info = BTUSB_RESET },
|
||||
|
||||
/* Kensington Bluetooth USB adapter */
|
||||
{ USB_DEVICE(0x047d, 0x105d), .driver_info = BTUSB_RESET },
|
||||
{ USB_DEVICE(0x047d, 0x105e), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
|
||||
/* ISSC Bluetooth Adapter v3.1 */
|
||||
{ USB_DEVICE(0x1131, 0x1001), .driver_info = BTUSB_RESET },
|
||||
|
||||
/* RTX Telecom based adapters with buggy SCO support */
|
||||
{ USB_DEVICE(0x0400, 0x0807), .driver_info = BTUSB_BROKEN_ISOC },
|
||||
{ USB_DEVICE(0x0400, 0x080a), .driver_info = BTUSB_BROKEN_ISOC },
|
||||
|
||||
/* CONWISE Technology based adapters with buggy SCO support */
|
||||
{ USB_DEVICE(0x0e5e, 0x6622), .driver_info = BTUSB_BROKEN_ISOC },
|
||||
|
||||
/* Belkin F8T012 and F8T013 devices */
|
||||
{ USB_DEVICE(0x050d, 0x0012), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
{ USB_DEVICE(0x050d, 0x0013), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
|
||||
|
||||
/* Digianswer devices */
|
||||
{ USB_DEVICE(0x08fd, 0x0001), .driver_info = BTUSB_DIGIANSWER },
|
||||
{ USB_DEVICE(0x08fd, 0x0002), .driver_info = BTUSB_IGNORE },
|
||||
|
||||
/* CSR BlueCore Bluetooth Sniffer */
|
||||
{ USB_DEVICE(0x0a12, 0x0002), .driver_info = BTUSB_SNIFFER },
|
||||
|
||||
/* Frontline ComProbe Bluetooth Sniffer */
|
||||
{ USB_DEVICE(0x16d3, 0x0002), .driver_info = BTUSB_SNIFFER },
|
||||
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
|
||||
@@ -433,6 +537,7 @@ static int btusb_probe(struct usb_interface *intf,
|
||||
|
||||
BT_DBG("intf %p id %p", intf, id);
|
||||
|
||||
/* interface numbers are hardcoded in the spec */
|
||||
if (intf->cur_altsetting->desc.bInterfaceNumber != 0)
|
||||
return -ENODEV;
|
||||
|
||||
@@ -443,6 +548,18 @@ static int btusb_probe(struct usb_interface *intf,
|
||||
id = match;
|
||||
}
|
||||
|
||||
if (id->driver_info == BTUSB_IGNORE)
|
||||
return -ENODEV;
|
||||
|
||||
if (ignore_dga && id->driver_info & BTUSB_DIGIANSWER)
|
||||
return -ENODEV;
|
||||
|
||||
if (ignore_csr && id->driver_info & BTUSB_CSR)
|
||||
return -ENODEV;
|
||||
|
||||
if (ignore_sniffer && id->driver_info & BTUSB_SNIFFER)
|
||||
return -ENODEV;
|
||||
|
||||
data = kzalloc(sizeof(*data), GFP_KERNEL);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
@@ -503,7 +620,31 @@ static int btusb_probe(struct usb_interface *intf,
|
||||
|
||||
hdev->owner = THIS_MODULE;
|
||||
|
||||
set_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks);
|
||||
if (reset || id->driver_info & BTUSB_RESET)
|
||||
set_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks);
|
||||
|
||||
if (force_scofix || id->driver_info & BTUSB_WRONG_SCO_MTU) {
|
||||
if (!disable_scofix)
|
||||
set_bit(HCI_QUIRK_FIXUP_BUFFER_SIZE, &hdev->quirks);
|
||||
}
|
||||
|
||||
if (id->driver_info & BTUSB_SNIFFER) {
|
||||
struct usb_device *udev = interface_to_usbdev(intf);
|
||||
|
||||
if (le16_to_cpu(udev->descriptor.bcdDevice) > 0x997)
|
||||
set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);
|
||||
}
|
||||
|
||||
if (id->driver_info & BTUSB_BCM92035) {
|
||||
unsigned char cmd[] = { 0x3b, 0xfc, 0x01, 0x00 };
|
||||
struct sk_buff *skb;
|
||||
|
||||
skb = bt_skb_alloc(sizeof(cmd), GFP_KERNEL);
|
||||
if (skb) {
|
||||
memcpy(skb_put(skb, sizeof(cmd)), cmd, sizeof(cmd));
|
||||
skb_queue_tail(&hdev->driver_init, skb);
|
||||
}
|
||||
}
|
||||
|
||||
err = hci_register_dev(hdev);
|
||||
if (err < 0) {
|
||||
@@ -558,6 +699,24 @@ static void __exit btusb_exit(void)
|
||||
module_init(btusb_init);
|
||||
module_exit(btusb_exit);
|
||||
|
||||
module_param(ignore_dga, bool, 0644);
|
||||
MODULE_PARM_DESC(ignore_dga, "Ignore devices with id 08fd:0001");
|
||||
|
||||
module_param(ignore_csr, bool, 0644);
|
||||
MODULE_PARM_DESC(ignore_csr, "Ignore devices with id 0a12:0001");
|
||||
|
||||
module_param(ignore_sniffer, bool, 0644);
|
||||
MODULE_PARM_DESC(ignore_sniffer, "Ignore devices with id 0a12:0002");
|
||||
|
||||
module_param(disable_scofix, bool, 0644);
|
||||
MODULE_PARM_DESC(disable_scofix, "Disable fixup of wrong SCO buffer size");
|
||||
|
||||
module_param(force_scofix, bool, 0644);
|
||||
MODULE_PARM_DESC(force_scofix, "Force fixup of wrong SCO buffers size");
|
||||
|
||||
module_param(reset, bool, 0644);
|
||||
MODULE_PARM_DESC(reset, "Send HCI reset command on initialization");
|
||||
|
||||
MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
|
||||
MODULE_DESCRIPTION("Generic Bluetooth USB driver ver " VERSION);
|
||||
MODULE_VERSION(VERSION);
|
||||
|
||||
@@ -62,7 +62,6 @@
|
||||
#define URB_ZERO_PACKET 0
|
||||
#endif
|
||||
|
||||
static int ignore;
|
||||
static int ignore_dga;
|
||||
static int ignore_csr;
|
||||
static int ignore_sniffer;
|
||||
@@ -74,7 +73,7 @@ static int reset;
|
||||
static int isoc = 2;
|
||||
#endif
|
||||
|
||||
#define VERSION "2.9"
|
||||
#define VERSION "2.10"
|
||||
|
||||
static struct usb_driver hci_usb_driver;
|
||||
|
||||
@@ -801,7 +800,7 @@ static int hci_usb_probe(struct usb_interface *intf, const struct usb_device_id
|
||||
id = match;
|
||||
}
|
||||
|
||||
if (ignore || id->driver_info & HCI_IGNORE)
|
||||
if (id->driver_info & HCI_IGNORE)
|
||||
return -ENODEV;
|
||||
|
||||
if (ignore_dga && id->driver_info & HCI_DIGIANSWER)
|
||||
@@ -1108,9 +1107,6 @@ static void __exit hci_usb_exit(void)
|
||||
module_init(hci_usb_init);
|
||||
module_exit(hci_usb_exit);
|
||||
|
||||
module_param(ignore, bool, 0644);
|
||||
MODULE_PARM_DESC(ignore, "Ignore devices from the matching table");
|
||||
|
||||
module_param(ignore_dga, bool, 0644);
|
||||
MODULE_PARM_DESC(ignore_dga, "Ignore devices with id 08fd:0001");
|
||||
|
||||
|
||||
@@ -232,7 +232,6 @@ typedef struct _mgslpc_info {
|
||||
|
||||
/* SPPP/Cisco HDLC device parts */
|
||||
int netcount;
|
||||
int dosyncppp;
|
||||
spinlock_t netlock;
|
||||
|
||||
#if SYNCLINK_GENERIC_HDLC
|
||||
@@ -459,13 +458,11 @@ static int ttymajor=0;
|
||||
|
||||
static int debug_level = 0;
|
||||
static int maxframe[MAX_DEVICE_COUNT] = {0,};
|
||||
static int dosyncppp[MAX_DEVICE_COUNT] = {1,1,1,1};
|
||||
|
||||
module_param(break_on_load, bool, 0);
|
||||
module_param(ttymajor, int, 0);
|
||||
module_param(debug_level, int, 0);
|
||||
module_param_array(maxframe, int, NULL, 0);
|
||||
module_param_array(dosyncppp, int, NULL, 0);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
@@ -2915,7 +2912,6 @@ static void mgslpc_add_device(MGSLPC_INFO *info)
|
||||
if (info->line < MAX_DEVICE_COUNT) {
|
||||
if (maxframe[info->line])
|
||||
info->max_frame_size = maxframe[info->line];
|
||||
info->dosyncppp = dosyncppp[info->line];
|
||||
}
|
||||
|
||||
mgslpc_device_count++;
|
||||
|
||||
@@ -304,7 +304,6 @@ struct mgsl_struct {
|
||||
|
||||
/* generic HDLC device parts */
|
||||
int netcount;
|
||||
int dosyncppp;
|
||||
spinlock_t netlock;
|
||||
|
||||
#if SYNCLINK_GENERIC_HDLC
|
||||
@@ -868,7 +867,6 @@ static int irq[MAX_ISA_DEVICES];
|
||||
static int dma[MAX_ISA_DEVICES];
|
||||
static int debug_level;
|
||||
static int maxframe[MAX_TOTAL_DEVICES];
|
||||
static int dosyncppp[MAX_TOTAL_DEVICES];
|
||||
static int txdmabufs[MAX_TOTAL_DEVICES];
|
||||
static int txholdbufs[MAX_TOTAL_DEVICES];
|
||||
|
||||
@@ -879,7 +877,6 @@ module_param_array(irq, int, NULL, 0);
|
||||
module_param_array(dma, int, NULL, 0);
|
||||
module_param(debug_level, int, 0);
|
||||
module_param_array(maxframe, int, NULL, 0);
|
||||
module_param_array(dosyncppp, int, NULL, 0);
|
||||
module_param_array(txdmabufs, int, NULL, 0);
|
||||
module_param_array(txholdbufs, int, NULL, 0);
|
||||
|
||||
@@ -4258,7 +4255,6 @@ static void mgsl_add_device( struct mgsl_struct *info )
|
||||
if (info->line < MAX_TOTAL_DEVICES) {
|
||||
if (maxframe[info->line])
|
||||
info->max_frame_size = maxframe[info->line];
|
||||
info->dosyncppp = dosyncppp[info->line];
|
||||
|
||||
if (txdmabufs[info->line]) {
|
||||
info->num_tx_dma_buffers = txdmabufs[info->line];
|
||||
|
||||
@@ -128,17 +128,14 @@ static int slgt_device_count;
|
||||
static int ttymajor;
|
||||
static int debug_level;
|
||||
static int maxframe[MAX_DEVICES];
|
||||
static int dosyncppp[MAX_DEVICES];
|
||||
|
||||
module_param(ttymajor, int, 0);
|
||||
module_param(debug_level, int, 0);
|
||||
module_param_array(maxframe, int, NULL, 0);
|
||||
module_param_array(dosyncppp, int, NULL, 0);
|
||||
|
||||
MODULE_PARM_DESC(ttymajor, "TTY major device number override: 0=auto assigned");
|
||||
MODULE_PARM_DESC(debug_level, "Debug syslog output: 0=disabled, 1 to 5=increasing detail");
|
||||
MODULE_PARM_DESC(maxframe, "Maximum frame size used by device (4096 to 65535)");
|
||||
MODULE_PARM_DESC(dosyncppp, "Enable synchronous net device, 0=disable 1=enable");
|
||||
|
||||
/*
|
||||
* tty support and callbacks
|
||||
@@ -349,7 +346,6 @@ struct slgt_info {
|
||||
/* SPPP/Cisco HDLC device parts */
|
||||
|
||||
int netcount;
|
||||
int dosyncppp;
|
||||
spinlock_t netlock;
|
||||
#if SYNCLINK_GENERIC_HDLC
|
||||
struct net_device *netdev;
|
||||
@@ -3405,7 +3401,6 @@ static void add_device(struct slgt_info *info)
|
||||
if (info->line < MAX_DEVICES) {
|
||||
if (maxframe[info->line])
|
||||
info->max_frame_size = maxframe[info->line];
|
||||
info->dosyncppp = dosyncppp[info->line];
|
||||
}
|
||||
|
||||
slgt_device_count++;
|
||||
|
||||
@@ -270,7 +270,6 @@ typedef struct _synclinkmp_info {
|
||||
|
||||
/* SPPP/Cisco HDLC device parts */
|
||||
int netcount;
|
||||
int dosyncppp;
|
||||
spinlock_t netlock;
|
||||
|
||||
#if SYNCLINK_GENERIC_HDLC
|
||||
@@ -469,13 +468,11 @@ static int ttymajor = 0;
|
||||
*/
|
||||
static int debug_level = 0;
|
||||
static int maxframe[MAX_DEVICES] = {0,};
|
||||
static int dosyncppp[MAX_DEVICES] = {0,};
|
||||
|
||||
module_param(break_on_load, bool, 0);
|
||||
module_param(ttymajor, int, 0);
|
||||
module_param(debug_level, int, 0);
|
||||
module_param_array(maxframe, int, NULL, 0);
|
||||
module_param_array(dosyncppp, int, NULL, 0);
|
||||
|
||||
static char *driver_name = "SyncLink MultiPort driver";
|
||||
static char *driver_version = "$Revision: 4.38 $";
|
||||
@@ -3752,7 +3749,6 @@ static void add_device(SLMP_INFO *info)
|
||||
if (info->line < MAX_DEVICES) {
|
||||
if (maxframe[info->line])
|
||||
info->max_frame_size = maxframe[info->line];
|
||||
info->dosyncppp = dosyncppp[info->line];
|
||||
}
|
||||
|
||||
synclinkmp_device_count++;
|
||||
|
||||
@@ -551,7 +551,7 @@ static dma_cookie_t ioat1_tx_submit(struct dma_async_tx_descriptor *tx)
|
||||
/* write address into NextDescriptor field of last desc in chain */
|
||||
to_ioat_desc(ioat_chan->used_desc.prev)->hw->next =
|
||||
first->async_tx.phys;
|
||||
__list_splice(&new_chain, ioat_chan->used_desc.prev);
|
||||
list_splice_tail(&new_chain, &ioat_chan->used_desc);
|
||||
|
||||
ioat_chan->dmacount += desc_count;
|
||||
ioat_chan->pending += desc_count;
|
||||
|
||||
+1
-3
@@ -640,10 +640,8 @@ static int init586(struct net_device *dev)
|
||||
cfg_cmd->time_low = 0x00;
|
||||
cfg_cmd->time_high = 0xf2;
|
||||
cfg_cmd->promisc = 0;
|
||||
if (dev->flags & (IFF_ALLMULTI | IFF_PROMISC)) {
|
||||
if (dev->flags & (IFF_ALLMULTI | IFF_PROMISC))
|
||||
cfg_cmd->promisc = 1;
|
||||
dev->flags |= IFF_PROMISC;
|
||||
}
|
||||
cfg_cmd->carr_coll = 0x00;
|
||||
|
||||
p->scb->cbl_offset = make16(cfg_cmd);
|
||||
|
||||
+3
-6
@@ -1521,14 +1521,11 @@ static void do_mc32_set_multicast_list(struct net_device *dev, int retry)
|
||||
struct mc32_local *lp = netdev_priv(dev);
|
||||
u16 filt = (1<<2); /* Save Bad Packets, for stats purposes */
|
||||
|
||||
if (dev->flags&IFF_PROMISC)
|
||||
if ((dev->flags&IFF_PROMISC) ||
|
||||
(dev->flags&IFF_ALLMULTI) ||
|
||||
dev->mc_count > 10)
|
||||
/* Enable promiscuous mode */
|
||||
filt |= 1;
|
||||
else if((dev->flags&IFF_ALLMULTI) || dev->mc_count > 10)
|
||||
{
|
||||
dev->flags|=IFF_PROMISC;
|
||||
filt |= 1;
|
||||
}
|
||||
else if(dev->mc_count)
|
||||
{
|
||||
unsigned char block[62];
|
||||
|
||||
+8
-6
@@ -1692,12 +1692,14 @@ vortex_open(struct net_device *dev)
|
||||
vp->rx_ring[i].next = cpu_to_le32(vp->rx_ring_dma + sizeof(struct boom_rx_desc) * (i+1));
|
||||
vp->rx_ring[i].status = 0; /* Clear complete bit. */
|
||||
vp->rx_ring[i].length = cpu_to_le32(PKT_BUF_SZ | LAST_FRAG);
|
||||
skb = dev_alloc_skb(PKT_BUF_SZ);
|
||||
|
||||
skb = __netdev_alloc_skb(dev, PKT_BUF_SZ + NET_IP_ALIGN,
|
||||
GFP_KERNEL);
|
||||
vp->rx_skbuff[i] = skb;
|
||||
if (skb == NULL)
|
||||
break; /* Bad news! */
|
||||
skb->dev = dev; /* Mark as being used by this device. */
|
||||
skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */
|
||||
|
||||
skb_reserve(skb, NET_IP_ALIGN); /* Align IP on 16 byte boundaries */
|
||||
vp->rx_ring[i].addr = cpu_to_le32(pci_map_single(VORTEX_PCI(vp), skb->data, PKT_BUF_SZ, PCI_DMA_FROMDEVICE));
|
||||
}
|
||||
if (i != RX_RING_SIZE) {
|
||||
@@ -2538,7 +2540,7 @@ boomerang_rx(struct net_device *dev)
|
||||
struct sk_buff *skb;
|
||||
entry = vp->dirty_rx % RX_RING_SIZE;
|
||||
if (vp->rx_skbuff[entry] == NULL) {
|
||||
skb = dev_alloc_skb(PKT_BUF_SZ);
|
||||
skb = netdev_alloc_skb(dev, PKT_BUF_SZ + NET_IP_ALIGN);
|
||||
if (skb == NULL) {
|
||||
static unsigned long last_jif;
|
||||
if (time_after(jiffies, last_jif + 10 * HZ)) {
|
||||
@@ -2549,8 +2551,8 @@ boomerang_rx(struct net_device *dev)
|
||||
mod_timer(&vp->rx_oom_timer, RUN_AT(HZ * 1));
|
||||
break; /* Bad news! */
|
||||
}
|
||||
skb->dev = dev; /* Mark as being used by this device. */
|
||||
skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */
|
||||
|
||||
skb_reserve(skb, NET_IP_ALIGN);
|
||||
vp->rx_ring[entry].addr = cpu_to_le32(pci_map_single(VORTEX_PCI(vp), skb->data, PKT_BUF_SZ, PCI_DMA_FROMDEVICE));
|
||||
vp->rx_skbuff[entry] = skb;
|
||||
}
|
||||
|
||||
+5
-8
@@ -9,42 +9,39 @@ int ei_open(struct net_device *dev)
|
||||
{
|
||||
return __ei_open(dev);
|
||||
}
|
||||
EXPORT_SYMBOL(ei_open);
|
||||
|
||||
int ei_close(struct net_device *dev)
|
||||
{
|
||||
return __ei_close(dev);
|
||||
}
|
||||
EXPORT_SYMBOL(ei_close);
|
||||
|
||||
irqreturn_t ei_interrupt(int irq, void *dev_id)
|
||||
{
|
||||
return __ei_interrupt(irq, dev_id);
|
||||
}
|
||||
EXPORT_SYMBOL(ei_interrupt);
|
||||
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
void ei_poll(struct net_device *dev)
|
||||
{
|
||||
__ei_poll(dev);
|
||||
}
|
||||
EXPORT_SYMBOL(ei_poll);
|
||||
#endif
|
||||
|
||||
struct net_device *__alloc_ei_netdev(int size)
|
||||
{
|
||||
return ____alloc_ei_netdev(size);
|
||||
}
|
||||
EXPORT_SYMBOL(__alloc_ei_netdev);
|
||||
|
||||
void NS8390_init(struct net_device *dev, int startp)
|
||||
{
|
||||
__NS8390_init(dev, startp);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ei_open);
|
||||
EXPORT_SYMBOL(ei_close);
|
||||
EXPORT_SYMBOL(ei_interrupt);
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
EXPORT_SYMBOL(ei_poll);
|
||||
#endif
|
||||
EXPORT_SYMBOL(NS8390_init);
|
||||
EXPORT_SYMBOL(__alloc_ei_netdev);
|
||||
|
||||
#if defined(MODULE)
|
||||
|
||||
|
||||
+8
-11
@@ -4,9 +4,9 @@ static const char version[] =
|
||||
"8390p.c:v1.10cvs 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)\n";
|
||||
|
||||
#define ei_inb(_p) inb(_p)
|
||||
#define ei_outb(_v,_p) outb(_v,_p)
|
||||
#define ei_outb(_v, _p) outb(_v, _p)
|
||||
#define ei_inb_p(_p) inb_p(_p)
|
||||
#define ei_outb_p(_v,_p) outb_p(_v,_p)
|
||||
#define ei_outb_p(_v, _p) outb_p(_v, _p)
|
||||
|
||||
#include "lib8390.c"
|
||||
|
||||
@@ -14,42 +14,39 @@ int eip_open(struct net_device *dev)
|
||||
{
|
||||
return __ei_open(dev);
|
||||
}
|
||||
EXPORT_SYMBOL(eip_open);
|
||||
|
||||
int eip_close(struct net_device *dev)
|
||||
{
|
||||
return __ei_close(dev);
|
||||
}
|
||||
EXPORT_SYMBOL(eip_close);
|
||||
|
||||
irqreturn_t eip_interrupt(int irq, void *dev_id)
|
||||
{
|
||||
return __ei_interrupt(irq, dev_id);
|
||||
}
|
||||
EXPORT_SYMBOL(eip_interrupt);
|
||||
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
void eip_poll(struct net_device *dev)
|
||||
{
|
||||
__ei_poll(dev);
|
||||
}
|
||||
EXPORT_SYMBOL(eip_poll);
|
||||
#endif
|
||||
|
||||
struct net_device *__alloc_eip_netdev(int size)
|
||||
{
|
||||
return ____alloc_ei_netdev(size);
|
||||
}
|
||||
EXPORT_SYMBOL(__alloc_eip_netdev);
|
||||
|
||||
void NS8390p_init(struct net_device *dev, int startp)
|
||||
{
|
||||
return __NS8390_init(dev, startp);
|
||||
__NS8390_init(dev, startp);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(eip_open);
|
||||
EXPORT_SYMBOL(eip_close);
|
||||
EXPORT_SYMBOL(eip_interrupt);
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
EXPORT_SYMBOL(eip_poll);
|
||||
#endif
|
||||
EXPORT_SYMBOL(NS8390p_init);
|
||||
EXPORT_SYMBOL(__alloc_eip_netdev);
|
||||
|
||||
#if defined(MODULE)
|
||||
|
||||
|
||||
+3
-2
@@ -510,14 +510,15 @@ config STNIC
|
||||
config SH_ETH
|
||||
tristate "Renesas SuperH Ethernet support"
|
||||
depends on SUPERH && \
|
||||
(CPU_SUBTYPE_SH7710 || CPU_SUBTYPE_SH7712 || CPU_SUBTYPE_SH7763)
|
||||
(CPU_SUBTYPE_SH7710 || CPU_SUBTYPE_SH7712 || CPU_SUBTYPE_SH7763 || \
|
||||
CPU_SUBTYPE_SH7619)
|
||||
select CRC32
|
||||
select MII
|
||||
select MDIO_BITBANG
|
||||
select PHYLIB
|
||||
help
|
||||
Renesas SuperH Ethernet device driver.
|
||||
This driver support SH7710, SH7712 and SH7763.
|
||||
This driver support SH7710, SH7712, SH7763 and SH7619.
|
||||
|
||||
config SUNLANCE
|
||||
tristate "Sun LANCE support"
|
||||
|
||||
+11
-8
@@ -1790,6 +1790,17 @@ static void atl1_rx_checksum(struct atl1_adapter *adapter,
|
||||
{
|
||||
struct pci_dev *pdev = adapter->pdev;
|
||||
|
||||
/*
|
||||
* The L1 hardware contains a bug that erroneously sets the
|
||||
* PACKET_FLAG_ERR and ERR_FLAG_L4_CHKSUM bits whenever a
|
||||
* fragmented IP packet is received, even though the packet
|
||||
* is perfectly valid and its checksum is correct. There's
|
||||
* no way to distinguish between one of these good packets
|
||||
* and a packet that actually contains a TCP/UDP checksum
|
||||
* error, so all we can do is allow it to be handed up to
|
||||
* the higher layers and let it be sorted out there.
|
||||
*/
|
||||
|
||||
skb->ip_summed = CHECKSUM_NONE;
|
||||
|
||||
if (unlikely(rrd->pkt_flg & PACKET_FLAG_ERR)) {
|
||||
@@ -1816,14 +1827,6 @@ static void atl1_rx_checksum(struct atl1_adapter *adapter,
|
||||
return;
|
||||
}
|
||||
|
||||
/* IPv4, but hardware thinks its checksum is wrong */
|
||||
if (netif_msg_rx_err(adapter))
|
||||
dev_printk(KERN_DEBUG, &pdev->dev,
|
||||
"hw csum wrong, pkt_flag:%x, err_flag:%x\n",
|
||||
rrd->pkt_flg, rrd->err_flg);
|
||||
skb->ip_summed = CHECKSUM_COMPLETE;
|
||||
skb->csum = htons(rrd->xsz.xsum_sz.rx_chksum);
|
||||
adapter->hw_csum_err++;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user