22 Nov, 2006

1 commit


18 Sep, 2006

1 commit

  • This patch reduces the size of struct hpsb_host and also removes
    semaphores from ieee1394_transactions.c. On i386, struct hpsb_host
    shrinks from 10656 bytes to 6688 bytes. This is accomplished by
    - using a single wait_queue for hpsb_get_tlabel instead of many
    instances of semaphores,
    - using a single lock to serialize access to all tlabel pools (the
    protected code regions are small, i.e. lock contention very low),
    - omitting the sysfs attribute tlabels_allocations.

    Drawback: In the rare case that a process needs to sleep because all
    transaction labels for the node are temporarily exhausted, it is also
    woken up if a tlabel for a different node became free, checks for an
    available tlabel, and is put to sleep again. The check is not costly
    and the situation occurs extremely rarely. (Tlabels are typically
    only exhausted if there was no context switch to the khpsbpkt thread
    which recycles tlables.) Therefore the benefit of reduced tpool size
    outweighs this drawback.

    The sysfs attributes tlabels_free and tlabels_mask are not compiled
    anymore unless CONFIG_IEEE1394_VERBOSEDEBUG is set.

    The by far biggest member of struct hpsb_host, the struct csr_control
    csr (5272 bytes on i386), is now placed at the end of struct hpsb_host.

    Note, hpsb_get_tlabel calls the macro wait_event_interruptible with a
    condition argument which has a side effect (allocation of a tlabel and
    manipulation of the packet). This side effect happens only if the
    condition is true. The patch relies on wait_event_interruptible not
    evaluating the condition again after it became true.

    Signed-off-by: Stefan Richter

    Stefan Richter
     

04 Jul, 2006

3 commits


13 Jun, 2006

3 commits

  • Host adapter hardware imposes certain restrictions and features on
    address ranges. Instead of hard-wire such ranges into the ieee1394
    core or even into protocol drivers, let lowlevel drivers specify
    these ranges via struct hpsb_host.

    Patch "ohci1394: set address range properties" must be applied too,
    else hpsb_allocate_and_register_addrspace() won't work properly.

    Signed-off-by: Stefan Richter
    Signed-off-by: Ben Collins

    Ben Collins
     
  • Since broadcast transactions are already complete when the request has
    been sent, the same transaction label can be reused all over again, see
    IEEE 1394 7.3.2.5 and 6.2.4.3. Therefore we can reduce the footprint
    of struct hpsb_host by the size of one struct hpsb_tlabel_pool.

    Signed-off-by: Stefan Richter
    Signed-off-by: Ben Collins

    Ben Collins
     
  • Add support for the following types of hardware:
    + nodes that have a link speed < PHY speed
    + 1394b PHYs that are less than S800 capable
    + 1394b/1394a adapter cable between two 1394b PHYs
    Also, S1600 and S3200 are now supported if IEEE1394_SPEED_MAX is raised.

    A probing function is added to nodemgr's config ROM fetching routine
    which adjusts the allowable speed if an access problem was encountered.
    Pros and Cons of the approach:
    + minimum code footprint to support this less widely used hardware
    + nearly no overhead for unaffected hardware
    - ineffective before nodemgr began to read the ROM of affected nodes
    - ineffective if ieee1394 is loaded with disable_nodemgr=1
    The speed map CSRs which are published to the bus are not touched by the
    patch.

    Signed-off-by: Stefan Richter
    Cc: Hakan Ardo
    Cc: Calculex
    Cc: Robert J. Kosinski
    Signed-off-by: Ben Collins

    Ben Collins
     

02 Dec, 2005

2 commits


01 Oct, 2005

1 commit


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds