summaryrefslogtreecommitdiff
path: root/drivers/s390/net/qeth_main.c
AgeCommit message (Collapse)AuthorFilesLines
2008-03-17qeth: remove old qeth filesFrank Blaschka1-8956/+0
Remove all obsolete qeth files. Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2008-01-29[VLAN]: Turn VLAN_DEV_INFO into inline functionPatrick McHardy1-2/+2
Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
2008-01-29[NETNS]: Add netns parameter to inet_(dev_)add_type.Eric W. Biederman1-1/+1
The patch extends the inet_addr_type and inet_dev_addr_type with the network namespace pointer. That allows to access the different tables relatively to the network namespace. The modification of the signature function is reported in all the callers of the inet_addr_type using the pointer to the well known init_net. Acked-by: Benjamin Thery <benjamin.thery@bull.net> Acked-by: Daniel Lezcano <dlezcano@fr.ibm.com> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-10-20qeth: remove header_ops bugUrsula Braun1-1/+2
Remove qeth bug caused by commit: [NET]: Move hardware header operations out of netdevice. Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-10-11[QETH]: fix qeth_main.cAndrew Morton1-1/+2
drivers/s390/net/qeth_main.c: In function 'qeth_hard_header_parse': drivers/s390/net/qeth_main.c:6584: error: 'dev' undeclared (first use in this function) drivers/s390/net/qeth_main.c:6584: error: (Each undeclared identifier is reported only once drivers/s390/net/qeth_main.c:6584: error: for each function it appears in.) Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-10-11qeth: discard inbound packets with unknown header idUrsula Braun1-1/+6
Debugging statements are added for inbound packets with unknown header id. Those packets are discarded and no longer processed as osn-packets. Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-10-11qeth: avoid duplicate deletion of multicast addressesUrsula Braun1-2/+3
if qeth_set_multicast_list() is performed on 2 CPUs in parallel, card->ip_list may end corrupted. Solution: In function __qeth_delete_all_mc() remove card->ip_list entry before invoking qeth_deregister_addr_entry(). Thus a 2nd invocation of qeth_set_multicast_list() cannot try to remove the same entry twice. Signed-off-by Ursula Braun <braunu@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-10-11qeth: EDDP does not work on large MTUsFrank Blaschka1-1/+2
Fix filling the qdio buffers in EDDP mode. Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-10-11qeth: HiperSockets layer-3 interface drop non IPv4 or non IPv6 packetsKlaus D. Wacker1-2/+2
HiperSockets infrastructure (layer-3 mode) supports only IPv4 or IPv6 packets. Sending other packet types disturbs TCP/IP on z/VM, which issues messages about invalid packets. Qeth send routine will detect packet type on sending over a HiperSockets interface (in layer-3 mode) and drop non IP packets. The error and drop count of the interface is incremented. Signed-off-by: Klaus D. Wacker <kdwacker@de.ibm.com> Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-10-11[NET]: Move hardware header operations out of netdevice.Stephen Hemminger1-18/+26
Since hardware header operations are part of the protocol class not the device instance, make them into a separate object and save memory. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-10-11[NET]: Wrap hard_header_parseStephen Hemminger1-3/+3
Wrap the hard_header_parse function to simplify next step of header_ops conversion. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-10-11[NET]: Nuke SET_MODULE_OWNER macro.Ralf Baechle1-1/+0
It's been a useless no-op for long enough in 2.6 so I figured it's time to remove it. The number of people that could object because they're maintaining unified 2.4 and 2.6 drivers is probably rather small. [ Handled drivers added by netdev tree and some missed IRDA cases... -DaveM ] Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-08-31qeth: Drop ARP packages on HiperSockets interface with NOARP attribute.Klaus D. Wacker1-2/+8
A network interface can get ARP packets even when the interface has NOARP specified. In a HiperSockets environment this disturbs receiving systems when packets are sent on the multicast queue. (E.g. TCP/IP on z/VM issues messages reporting invalid data on the HiperSockets interface.) Qeth will no longer send ARP packets on HiperSockets interface when interface has the NOARP attribute. Signed-off-by: Klaus D. Wacker <kdwacker@de.ibm.com> Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-08-31qeth: provide specific message for OSA-adapters exclusively usedUrsula Braun1-9/+19
Exclusive usage of OSA-cards has been introduced. Even though Linux does not make use of it, qeth should be prepared to receive a bad RC for some initialization steps. A meaningful message is now given, if an OSA-device is set online, even though the OSA-adapter is already exclusively used by another host. Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-08-31qeth: crash during reboot after failing online settingUrsula Braun1-7/+13
Online setting of a qeth device may fail for instance because of: - out-of-memory condition when allocating qdio queues - IDX ACTIVATE problem - ... Such a device is still returned in a driver_for_each_device loop processed in qeth_reboot_event(), which calls qeth_clear_qdio_buffers(). Make sure qeth_clear_output_buffer() is called only, if the qdio queues have been successfully allocated during initialization of a qeth device. Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-08-31qeth: Announce tx checksumming for qeth devices in TSO/EDDP modeFrank Blaschka1-14/+68
TSO requires tx checksumming. For non GSO frames in TSO/EDDP mode we have to manually calculate the checksum. Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-08-31qeth: enforce a rate limit for inbound scatter gather messagesFrank Blaschka1-5/+8
under memory pressure scatter gather mode switching messages must be rate limited. Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-08-31qeth: ungrouping a device must not be interruptibleUrsula Braun1-3/+2
Problem: A recovery thread must not be active when device is removed. In qeth_remove_device() an interruptible wait operation is used to wait until a qeth recovery thread is finished. If a user really interrupts the ungroup operation of a qeth device while a recovery is running, cio and qeth are out of sync (device already removed from cio, but kept in qeth). A following module unload of qeth results in a kernel OOPS here. Solution: Do not allow interruption of ungroup operation to guarantee finishing of a potentially running qeth recovery thread. Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-07-17s390: add barriers to qeth driverFrank Blaschka1-0/+1
Add barrier to loop where atomic variable is evaluated. Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-07-17s390: scatter-gather for inbound traffic in qeth driverFrank Blaschka1-32/+150
For large incoming packets > PAGE_SIZE/2 qeth creates a fragmented skb by adding pointers to qdio pages to the fragment list of the skb. This avoids allocating big chunks of consecutive memory. Also copying data from the qdio buffer to the skb is economized. Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-06-21s390: Use ccw_device_get_id() in qeth/claw driversCornelia Huck1-9/+3
Use ccw_device_get_id() to get a device number instead of parsing the ccw device's bus id. Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-06-21s390: avoid inconsistent lock state in qethUrsula Braun1-4/+4
ipv6_regen_rndid in net/ipv6/addrconf.c makes use of "write_lock_bh" for its inet6_dev->lock. It may run in softirq-context. qeth makes use of "read_lock" for the same inet6_dev->lock. To avoid a potential deadlock situation, qeth should make use of "read_lock_bh" for its usages of inet6_dev->lock. Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-06-21s390: qeth driver does not recoverUrsula Braun1-6/+6
While first recovery continues, the card issues a STARTLAN command itself. In this case qeth schedules another recovery. This second recovery is cancelled because of an already running first recovery. Stop first recovery in case of 0xe080. Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-06-21s390: print correct level for HiperSockets devicesUrsula Braun1-9/+11
For real HiperSockets the EBCDIC-ASCII conversion is not necessary. This is only needed for z/VM GuestLAN devices. Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-05-09Fix occurrences of "the the "Michael Opdenacker1-1/+1
Signed-off-by: Michael Opdenacker <michael@free-electrons.com> Signed-off-by: Adrian Bunk <bunk@stusta.de>
2007-05-08s390: qeth driver hardware specs adaptionsPeter Tiedemann1-7/+19
s390: qeth driver hardware specs adaptions - according to the latest OSA hardware specification incorporate actual IPA command and return codes into qeth. - whitespaces removed from qeth_mpc.h Signed-off-by: Peter Tiedemann <ptiedem@de.ibm.com> Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-05-08s390: free skbs in finite amount of time in qethUrsula Braun1-6/+8
Free sent skbs in some finite amount of time. Affected are asynchronous queue of Hipersockets devices and the output queues of all eth-devices respectively. Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-05-08s390: qeth driver connection hangUrsula Braun1-2/+3
Frank Pavlic <fpavlic@de.ibm.com> Connection hangs when using EDDP mode because sk_protocol is NULL when skb has been copied via skb_copy. This results in dropping packets. Also keep MAC address after recovery of Virtual NICs so that traffic can flow again and duplicate statements in qeth_dev_set_route_store removed. Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-05-04[S390] qeth: New read configuration data.Cornelia Huck1-5/+72
Instead of the deprecated read_conf_data(), implement a new function qeth_read_conf_data(). Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2007-04-26[SK_BUFF]: Introduce skb_copy_to_linear_data{_offset}Arnaldo Carvalho de Melo1-4/+5
To clearly state the intent of copying to linear sk_buffs, _offset being a overly long variant but interesting for the sake of saving some bytes. Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
2007-04-26[SK_BUFF]: Introduce ipv6_hdr(), remove skb->nh.ipv6hArnaldo Carvalho de Melo1-1/+2
Now the skb->nh union has just one member, .raw, i.e. it is just like the skb->mac union, strange, no? I'm just leaving it like that till the transport layer is done with, when we'll rename skb->mac.raw to skb->mac_header (or ->mac_header_offset?), ditto for ->{h,nh}. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-04-26[SK_BUFF]: Introduce ip_hdr(), remove skb->nh.iphArnaldo Carvalho de Melo1-6/+9
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-04-26[SK_BUFF]: Introduce skb_network_header()Arnaldo Carvalho de Melo1-2/+4
For the places where we need a pointer to the network header, it is still legal to touch skb->nh.raw directly if just adding to, subtracting from or setting it to another layer header. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-04-26[SK_BUFF]: Introduce skb_set_mac_header()Arnaldo Carvalho de Melo1-2/+2
For the cases where we want to set skb->mac.raw to an offset from skb->data. Simple cases first, the memmove ones and specially pktgen will be left for later. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-04-26[SK_BUFF]: Introduce skb_reset_mac_header(skb)Arnaldo Carvalho de Melo1-2/+2
For the common, open coded 'skb->mac.raw = skb->data' operation, so that we can later turn skb->mac.raw into a offset, reducing the size of struct sk_buff in 64bit land while possibly keeping it as a pointer on 32bit. This one touches just the most simple case, next will handle the slightly more "complex" cases. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-04-26[QETH]: Use eth_hdr()Arnaldo Carvalho de Melo1-1/+1
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-04-26[TR]: Use tr_hdr() were appropriateArnaldo Carvalho de Melo1-1/+1
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-03-03[VLAN]: Avoid a 4-order allocation.Dan Aloni1-12/+13
This patch splits the vlan_group struct into a multi-allocated struct. On x86_64, the size of the original struct is a little more than 32KB, causing a 4-order allocation, which is prune to problems caused by buddy-system external fragmentation conditions. I couldn't just use vmalloc() because vfree() cannot be called in the softirq context of the RCU callback. Signed-off-by: Dan Aloni <da-x@monatomic.org> Acked-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: David S. Miller <davem@davemloft.net>
2007-02-05[S390] Avoid excessive inlining.Heiko Carstens1-46/+46
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2007-01-09s390: qeth driver fixes: atomic context fixupsFrank Blaschka1-96/+29
- qeth device functions were not callable in atomic context due to usage of wait_event_xxx operations in qeth. "schedule while atomic" message appeared and kernel dumped when removing slave from bond device. Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-01-09s390: qeth driver fixes: packet socketFrank Blaschka1-5/+53
- packet socket support is not complete. Recvfrom a packet socket does not fill the sockaddr_ll structure. device function hard_header_parse is not implemented. For layer 2 mode and layer 3 mode with fake_ll turned on, we have the information to fill sockaddr_ll. Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-01-09s390: qeth driver fixes: VLAN hdr, perf statsFrank Blaschka1-18/+3
From: Ursula Braun <braunu@de.ibm.com> - VLAN header reordering did not work on packets received through qeth interface in layer 2 mode. This caused dhcpcd not to work with VLAN devices. - set qeth performance statistics initally inactive Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-01-08qeth: fix uaccess handling and get rid of unused variableHeiko Carstens1-5/+8
[patch] qeth: fix uaccess handling and get rid of unused variable drivers/s390/net/qeth_main.c: In function `qeth_process_inbound_buffer': drivers/s390/net/qeth_main.c:2563: warning: unused variable `vlan_addr' include/asm/uaccess.h: In function `qeth_do_ioctl': drivers/s390/net/qeth_main.c:4847: warning: ignoring return value of `copy_to_user' drivers/s390/net/qeth_main.c:4849: warning: ignoring return value of `copy_to_user' drivers/s390/net/qeth_main.c:4996: warning: ignoring return value of `copy_to_user' Cc: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-12-07[PATCH] More work_struct induced breakage (s390)Al Viro1-3/+3
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-04[S390] non-unique constant/macro identifiers.Ursula Braun1-3/+3
Add some prefixes to constands defined in drivers/s390/net/qdio.h and drivers/s390/lcs.h to make it possible to include the three header files drivers/s390/net/qeth.h, drivers/s390/net/qdio.h and drivers/net/s390/lcs.h in one C file. This is required for the patch that generates the kerntypes.o file for use by lcrash. Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2006-09-29[IPV4]: inet_addr_type() annotationsAl Viro1-1/+1
argument and inferred net-endian variables in callers annotated. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
2006-09-17[PATCH] s390: qeth driver fixes [6/6]Frank Pavlic1-20/+39
[PATCH 9/9] s390: qeth driver fixes [6/6] From: Frank Pavlic <fpavlic@de.ibm.com> - Hipersockets has no IPV6 support, thus prevent issueing SETRTG_IPV6 control commands on Hipersockets devices. - fixed error handling in qeth_sysfs_(un)register Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-17[PATCH] s390: qeth driver fixes [5/6]Frank Pavlic1-29/+42
[PATCH 8/9] s390: qeth driver fixes [5/6] From: Frank Pavlic <fpavlic@de.ibm.com> fix kernel panic in qdio queue handling. qeth_qdio_clear_card() could be invoked by 2 CPUs simultaneously (for example reboot event and recovery). Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-17[PATCH] s390: qeth driver fixes [4/6]Frank Pavlic1-78/+69
[PATCH 7/9] s390: qeth driver fixes [4/6] From: Frank Pavlic <fpavlic@de.ibm.com> - fix kernel crash due to race, set card->state to SOFTSETUP after card and card->dev are initialized properly. - remove CONFIG_QETH_PERF_STATS, use sysfs attribute instead, as we want to have the ability to turn on/off the statistics at runtime. Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-17[PATCH] s390: qeth driver fixes [3/6]Frank Pavlic1-94/+99
[PATCH 6/9] s390: qeth driver fixes [3/6] From: Frank Pavlic <fpavlic@de.ibm.com> fixed kernel panic caused by qeth driver: Using a bonding device qeth driver will realloc headroom for every skb coming from the bond device. Once this happens qeth frees the original skb and set the skb pointer to the new realloced skb. Under heavy transmit workload (e.g.UDP streams) through bond network device the qdio output queue might get full. In this case we return with EBUSY from qeth_send_packet. Returning to qeth_hard_start_xmit routine the skb address on the stack still points to the old address, which has been freed before. Returning from qeth_hard_start_xmit with EBUSY results in requeuing the skb. In this case it corrupts the qdisc queue and results in kernel panic. Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>