15 Oct, 2009

2 commits


05 Oct, 2009

1 commit


24 Sep, 2009

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:
    ieee1394: sbp2: remove a workaround for Momobay FX-3A
    firewire: sbp2: remove a workaround for Momobay FX-3A
    firewire: sbp2: fix status reception
    firewire: core: fix topology map response handler
    firewire: core: fix race with parallel PCI device probe
    firewire: core: header file cleanup
    firewire: ohci: fix Self ID Count register mask (safeguard against buffer overflow)
    ieee1394: raw1394: Do not leak memory on failed trylock.

    Linus Torvalds
     

16 Sep, 2009

1 commit


15 Sep, 2009

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1623 commits)
    netxen: update copyright
    netxen: fix tx timeout recovery
    netxen: fix file firmware leak
    netxen: improve pci memory access
    netxen: change firmware write size
    tg3: Fix return ring size breakage
    netxen: build fix for INET=n
    cdc-phonet: autoconfigure Phonet address
    Phonet: back-end for autoconfigured addresses
    Phonet: fix netlink address dump error handling
    ipv6: Add IFA_F_DADFAILED flag
    net: Add DEVTYPE support for Ethernet based devices
    mv643xx_eth.c: remove unused txq_set_wrr()
    ucc_geth: Fix hangs after switching from full to half duplex
    ucc_geth: Rearrange some code to avoid forward declarations
    phy/marvell: Make non-aneg speed/duplex forcing work for 88E1111 PHYs
    drivers/net/phy: introduce missing kfree
    drivers/net/wan: introduce missing kfree
    net: force bridge module(s) to be GPL
    Subject: [PATCH] appletalk: Fix skb leak when ipddp interface is not loaded
    ...

    Fixed up trivial conflicts:

    - arch/x86/include/asm/socket.h

    converted to in the x86 tree. The generic
    header has the same new #define's, so that works out fine.

    - drivers/net/tun.c

    fix conflict between 89f56d1e9 ("tun: reuse struct sock fields") that
    switched over to using 'tun->socket.sk' instead of the redundantly
    available (and thus removed) 'tun->sk', and 2b980dbd ("lsm: Add hooks
    to the TUN driver") which added a new 'tun->sk' use.

    Noted in 'next' by Stephen Rothwell.

    Linus Torvalds
     

12 Sep, 2009

6 commits

  • The inquiry delay does more harm than good in tests on a recent kernel.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Per SBP-2 clause 5.3, a target shall store 8...32 bytes of status
    information. Trailing zeros after the first 8 bytes don't need to be
    stored, they are implicit. Fix the status write handler to clear all
    unwritten status data.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • This register is 1 kBytes large. Adjust topology_map.length to prevent
    registration of other response handlers in this region and to make sure
    that we respond to requests to the upper half of the register.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • The config ROM buffer received from generate_config_rom is a globally
    shared static buffer. Extend the card_mutex protection in fw_add_card
    until after the config ROM was copied into the card driver's buffer.
    Otherwise, parallelized card driver probes may end up with ROM contents
    that were meant for a different card.

    firewire-ohci's card->driver->enable hook is safe to be called within
    the card_mutex. Furthermore, it is safe to reorder card_list update
    versus card enable, which simplifies the code a little.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • fw_card_get, fw_card_put, fw_card_release are currently not exported for
    use outside the firewire-core. Move their definitions/ declarations
    from the subsystem header file to the core header file.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • The selfIDSize field of Self ID Count is 9 bits wide, and we are only
    interested in the high 8 bits. Fix the mask accordingly. The
    previously too large mask didn't do damage though because the next few
    bits in the register are reserved and therefore zero with presently
    existing hardware.

    Also, check for the maximum possible self ID count of 252 (according to
    OHCI 1.1 clause 11.2 and IEEE 1394a-2000 clause 4.3.4.1, i.e. up to four
    self IDs of up to 63 nodes, even though IEEE 1394 up to edition 2008
    defines only up to three self IDs per node). More than 252 self IDs
    would only happen if the self ID receive DMA unit malfunctioned, which
    would likely be caught by other self ID buffer checks. However, check
    it early to be sure. More than 253 quadlets would overflow the Topology
    Map CSR.

    Reported-By: PaX Team
    Signed-off-by: Stefan Richter

    Stefan Richter
     

06 Sep, 2009

1 commit


05 Sep, 2009

4 commits

  • If a target writes invalid status (typically status of a command that
    already timed out), firewire-sbp2 attempts to put away an ORB that
    doesn't exist. https://bugzilla.redhat.com/show_bug.cgi?id=519772

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • In dual-buffer DMA mode, no video frames are ever received from R5C832
    by libdc1394. Fallback to packet-per-buffer DMA works reliably.
    http://thread.gmane.org/gmane.linux.kernel.firewire.devel/13393/focus=13476

    Reported-by: Jonathan Cameron
    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • An Agere FW643 OHCI 1.1 card works fine for video reception from one
    camera but fails early if receiving from two cameras. After a short
    while, no IR IRQ events occur and the context control register does not
    react anymore. This happens regardless whether both IR DMA contexts are
    dual-buffer or one is dual-buffer and the other packet-per-buffer.

    This can be worked around by disabling dual buffer DMA mode entirely.
    http://sourceforge.net/mailarchive/message.php?msg_name=4A7C0594.2020208%40gmail.com
    (Reported by Samuel Audet.)

    In another report (by Jonathan Cameron), an FW643 works OK with two
    cameras in dual buffer mode. Whether this is due to different chip
    revisions or different usage patterns (different video formats) is not
    yet clear. However, as far as the current capabilities of
    firewire-core's isochronous I/O interface are concerned, simply
    switching off dual-buffer on non-working and working FW643s alike is not
    a problem in practice. We only need to revisit this issue if we are
    going to enhance the interface, e.g. so that applications can explicitly
    choose modes.

    Reported-by: Samuel Audet
    Reported-by: Jonathan Cameron
    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • This fixes a regression due to post 2.6.30 commit "firewire: core: do
    not DMA-map stack addresses" 6fdc03709433ccc2005f0f593ae9d9dd04f7b485.

    As David Moore noted, a previously correct sizeof() expression became
    wrong since the commit changed its argument from an array to a pointer.
    This resulted in an oops in ohci_cancel_packet in the shared workqueue
    thread's context when an isochronous resource was to be freed.

    Reported-by: Jonathan Cameron
    Signed-off-by: Stefan Richter

    Stefan Richter
     

03 Sep, 2009

1 commit


02 Sep, 2009

1 commit


01 Sep, 2009

1 commit


07 Jul, 2009

1 commit


03 Jul, 2009

1 commit


26 Jun, 2009

1 commit

  • The DMA mapping API cannot map on-stack addresses, as explained in
    Documentation/DMA-mapping.txt. Convert the two cases of on-stack packet
    payload buffers in firewire-core (payload of lock requests in the bus
    manager work and in iso resource management) to slab-allocated memory.

    There are a number on-stack buffers for quadlet write or quadlet read
    requests in firewire-core and firewire-sbp2. These are harmless; they
    are copied to/ from card driver internal DMA buffers since quadlet
    payloads are inlined with packet headers.

    Signed-off-by: Stefan Richter

    Stefan Richter
     

23 Jun, 2009

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:
    firewire: new stack is no longer experimental
    firewire: net: better FIFO address range check and rcodes
    firewire: net: fix card driver reloading
    firewire: core: fix iso context shutdown on card removal
    firewire: core: fix DMA unmapping in iso buffer removal
    firewire: net: adjust net_device ops
    firewire: net: remove unused code
    firewire: net: allow for unordered unit discovery
    firewire: net: style changes
    firewire: net: add Kconfig item, rename driver
    firewire: add IPv4 support

    Linus Torvalds
     

21 Jun, 2009

1 commit

  • The new stack is now recommended over the old one if used for industrial
    video (IIDC/DCAM) or for storage devices (SBP-2) due to better
    performance, improved compatibility, added features, and security. It
    should also be functionally on par with and is more secure than the old
    ieee1394 stack in the use case of consumer video devices.

    IP-over-1394 support for the new stack is currently emerging, and a
    backend of the firedtv DVB driver to the new stack should be available
    soon.

    The one remaining area where the old stack is still required are audio
    devices, as the new stack is not yet able to support the FFADO FireWire
    audio framework.

    Signed-off-by: Stefan Richter

    Stefan Richter
     

17 Jun, 2009

5 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:
    firewire: core: use more outbound tlabels
    firewire: core: don't update Broadcast_Channel if RFC 2734 conditions aren't met
    firewire: core: prepare for non-core children of card devices
    firewire: core: include linux/uaccess.h instead of asm/uaccess.h
    firewire: add parent-of-unit accessor
    firewire: rename source files
    firewire: reorganize header files
    firewire: clean up includes
    firewire: ohci: access bus_seconds atomically
    firewire: also use vendor ID in root directory for driver matches
    firewire: share device ID table type with ieee1394
    firewire: core: add sysfs attribute for easier udev rules
    firewire: core: check for missing struct update at build time, not run time
    firewire: core: improve check for local node

    Linus Torvalds
     
  • The AR req handler should not check the generation; higher level code
    is the better place to handle bus generation changes. The target node
    ID just needs to be checked for not being the "all nodes" address; in
    this case don't handle the request and don't respond.

    Use Address_Error and Type_Error rcodes as appropriate.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Fix some problems from "firewire: net: allow for unordered unit
    discovery":
    - fwnet_remove was missing a list_del, causing fwnet_probe to crash if
    called after fwnet_remove, e.g. if firewire-ohci was unloaded and
    reloaded.
    - fwnet_probe should set its new_netdev flag only if it actually
    allocated a net_device.
    - Use dev_set_drvdata and dev_get_drvdata instead of deprecated direct
    access to device.driver_data.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • If isochronous contexts existed when firewire-ohci was unloaded, the
    core iso shutdown functions crashed with NULL dereferences, and buffers
    etc. weren't released.

    How the fix works: We first copy the card driver's iso shutdown hooks
    into the dummy driver, then fw_destroy_nodes notifies upper layers of
    devices going away, these should shut down (including their iso
    contexts), wait_for_completion(&card->done) will be triggered after
    upper layers gave up all fw_device references, after which the card
    driver's shutdown proceeds.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • dmap_unmap_page() shall use the same direction as dma_map_page().

    Signed-off-by: Stefan Richter

    Stefan Richter
     

16 Jun, 2009

1 commit

  • In the near future, the driver core is going to not allow direct access
    to the driver_data pointer in struct device. Instead, the functions
    dev_get_drvdata() and dev_set_drvdata() should be used. These functions
    have been around since the beginning, so are backwards compatible with
    all older kernel versions.

    Cc: linux1394-devel@lists.sourceforge.net
    Acked-by: Stefan Richter
    Cc: Kristian Hoegsberg
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

14 Jun, 2009

8 commits

  • The .ndo_tx_timeout callback is currently without function; delete it.
    Give .watchdog_timeo a proper time value; lower it to 2 seconds.

    Decrease the .tx_queue_len from 1000 (as in Ethernet card drivers) to 10
    because we have only 64 transaction labels available, and responders
    might have further limits of their AR req contexts.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Decouple the creation and destruction of the net_device from the order
    of discovery and removal of nodes with RFC 2734 unit directories since
    there is no reliable order. The net_device is now created when the
    first RFC 2734 unit on a card is discovered, and destroyed when the last
    RFC 2734 unit on a card went away. This includes all remote units as
    well as the local unit, which is therefore tracked as a peer now too.

    Also, locking around the list of peers is slightly extended to guard
    against peer removal. As a side effect, fwnet_peer.pdg_lock has become
    superfluous and is deleted.

    Peer data (max_rec, speed, node ID, generation) are updated more
    carefully.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Change names of types, variables, functions.
    Omit debug code.
    Use get_unaligned*, put_unaligned*.
    Annotate big endian data.
    Handle errors in __init.
    Change whitespace.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • The driver is now called firewire-net. It might implement the transport
    of other networking protocols in the future, notably IPv6 per RFC 3146.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Implement IPv4 over IEEE 1394 as per RFC 2734 for the newer firewire
    stack. This feature has only been present in the older ieee1394 stack
    via the eth1394 driver.

    Still to do:
    - fix ipv4_priv and ipv4_node lifetime logic
    - fix determination of speeds and max payloads
    - fix bus reset handling
    - fix unaligned memory accesses
    - fix coding style
    - further testing/ improvement of fragment reassembly
    - perhaps multicast support

    Signed-off-by: Jay Fenlason
    Signed-off-by: Stefan Richter (rebased, copyright note, changelog)

    Jay Fenlason
     
  • Tlabel is a 6 bits wide datum. Wrap it after 63 rather than 31 for more
    safety against transaction label exhaustion and potential responders'
    transaction layer bugs. (As noted by Guus Sliepen, this change requires
    an expansion of tlabel_mask to 64 bits.)

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • This extra check will avoid Broadcast_Channel register related traffic
    to many IIDC, SBP-2, and AV/C devices which aren't IRMC or have a
    max_rec < 8 (i.e. support < 512 bytes async payload). This avoids a
    little bit of traffic after bus reset and is even more careful with
    devices which don't implement this CSR.

    The assumption is that no other protocol than IP over 1394 uses the
    broadcast channel for streams.

    Signed-off-by: Stefan Richter

    Stefan Richter
     

07 Jun, 2009

1 commit