#651443 Firmware for Adaptec Starfire missing in Squeeze

#651443#5
Date:
2011-12-08 16:26:08 UTC
From:
To:
The firmware files required when using an Adaptec Starfire-based network
card using the kernel driver starfire.ko are missing. They are in
neither the linux-image package, nor firmware-linux-free or
firmware-linux-nonfree.

Without the firmware the card is detected but attempting to bring it up
fails:

[  354.472460] starfire 0000:0b:04.0: firmware: requesting adaptec/starfire_rx.bin
[  354.475973] starfire: Failed to load firmware "adaptec/starfire_rx.bin"

Additionally I used apt-get source to on linux-source-2.6,
firmware-linux-free and firmware-linux-nonfree, and none of the source
packages contained the firmware source.

Finally I downloaded vanilla source of linux-2.6.32.27.tar.bz2 from
ftp.kernel.org, and the source for this firmware IS contained there.

#651443#10
Date:
2011-12-08 17:57:40 UTC
From:
To:
reassign 651443 src:firmware-nonfree 0.28+squeeze1
quit

Hi,

Peter Nelson wrote:

Hmm.

From WHENCE in the linux-firmware repository[1]:

| Driver: starfire - Adaptec Starfire/DuraLAN support
|
| File: adaptec/starfire_rx.bin
| File: adaptec/starfire_tx.bin
|
| Licence: Allegedly GPLv2, but no source visible.

Which means we do not have permission to distribute that version without
source.  However, at [2], I see:

| FreeBSD appears to have copied the proper copyright notices into their
| versions of the firmware:
| http://fxr.watson.org/fxr/source/dev/sf/starfire_rx.h
| http://fxr.watson.org/fxr/source/dev/sf/starfire_tx.h
|
| "(c)2001 Adaptec, Inc. By using this software you agree that it is
| licensed to you "AS IS" and that Adaptec makes no warranties,
| express or implied, regarding the Software.
| Any redistribution of this Software must include this disclaimer and
| copyright notice."

That doesn't actually say that redistribution is allowed, either. :/

FreeBSD's changelog for these files says

| Import AIC-6915 firmware for GFP from Adaptec.
| Special thanks to bruffer to send the firmware image to me.
|
| Submitted by:	gibbs via bruffer

which sounds legit to me.  What's the next step?

Thanks and hope that helps,
Jonathan

[1] git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
[2] http://bugs.debian.org/501152#20

#651443#23
Date:
2015-10-21 02:08:12 UTC
From:
To:
Note that these byte arrays aren't the same as the files in linux-
firmware.git.  I was able to shuffle the bytes into the order that
Linux expects like this:

def shuffle(b):
    r = []
    for i in range(0, len(b), 6):
        r.extend(b[i+2:i+6])
        r.extend([0, 0])
        r.extend(b[i:i+2])
    return r

The code then turned out to be slightly different.

The processor (GFP) appears to implement a custom architecture, but
amazingly it's documented in chapter 5 of
<http://download.adaptec.com/pdfs/user_guides/aic6915_pg.pdf>.  In
theory, someone could write an assembler and disassembler for the GFP
and then create a new preferred form for modification.
[...]

I think it's very strongly implicit, though.

Ben.