I'd like to propose the following update for stable. I've tested on an etch laptop w/ built-in intel 3945 wireless and a server w/ a bnx2 nic under both etch and etchnhalf.
Index: debian/changelog =================================================================== --- debian/changelog (.../releases/firmware-nonfree/0.4etch1) (revision 11527) +++ debian/changelog (.../dists/etch/firmware-nonfree) (revision 11527) @@ -1,3 +1,13 @@ +firmware-nonfree (0.4+etchnhalf.1) UNRELEASED; urgency=low + + * Backport iwlwifi and bnx2 firmware from 0.11 release, only used + in etch by drivers in the etchnhalf kernel. + * Add initramfs hook support for bnx2 + * Correct path to initramfs.conf file in postinst which was preventing + initramfs updates for qlogic (and now bnx2) fw, closes: #432042 + + -- dann frazier <[EMAIL PROTECTED]> Wed, 04 Jun 2008 01:33:43 -0600 + firmware-nonfree (0.4etch1) stable; urgency=high * Build-depend on linux-support-2.6.18-6; closes: #468215. Index: debian/templates/postinst.initramfs-tools.in =================================================================== --- debian/templates/postinst.initramfs-tools.in (.../releases/firmware-nonfree/0.4etch1) (revision 11527) +++ debian/templates/postinst.initramfs-tools.in (.../dists/etch/firmware-nonfree) (revision 11527) @@ -4,7 +4,7 @@ case "$1" in configure) - if [ -x /usr/sbin/update-initramfs -a -e /etc/mkinitramfs/initramfs.conf ] ; then + if [ -x /usr/sbin/update-initramfs -a -e /etc/initramfs-tools/initramfs.conf ] ; then update-initramfs -u fi ;; Index: bnx2/LICENSE =================================================================== --- bnx2/LICENSE (.../releases/firmware-nonfree/0.4etch1) (revision 0) +++ bnx2/LICENSE (.../dists/etch/firmware-nonfree) (revision 11527) @@ -0,0 +1,7 @@ +This file contains firmware data derived from proprietary unpublished +source code, Copyright (c) 2004, 2005, 2006, 2007 Broadcom Corporation. + +Permission is hereby granted for the distribution of this firmware data +in hexadecimal or equivalent format, provided this copyright notice is +accompanying it. + Index: bnx2/fwcutter/bnx2_fwcutter_2.6.25.c =================================================================== --- bnx2/fwcutter/bnx2_fwcutter_2.6.25.c (.../releases/firmware-nonfree/0.4etch1) (revision 0) +++ bnx2/fwcutter/bnx2_fwcutter_2.6.25.c (.../dists/etch/firmware-nonfree) (revision 11527) @@ -0,0 +1,24 @@ +#include "bnx2_fwcutter.c" + +int main() +{ + write_firmware("bnx2-06-4.0.5.fw", + &bnx2_com_fw_06, + &bnx2_cp_fw_06, + &bnx2_rxp_fw_06, + &bnx2_tpat_fw_06, + &bnx2_txp_fw_06, + bnx2_rv2p_proc1, sizeof bnx2_rv2p_proc1, + bnx2_rv2p_proc2, sizeof bnx2_rv2p_proc2); + write_firmware("bnx2-09-4.0.5.fw", + &bnx2_com_fw_09, + &bnx2_cp_fw_09, + &bnx2_rxp_fw_09, + &bnx2_tpat_fw_09, + &bnx2_txp_fw_09, + bnx2_xi_rv2p_proc1, sizeof bnx2_xi_rv2p_proc2, + bnx2_xi_rv2p_proc2, sizeof bnx2_xi_rv2p_proc2); + + return EXIT_SUCCESS; +} + Index: bnx2/fwcutter/bnx2_fw_file.h =================================================================== --- bnx2/fwcutter/bnx2_fw_file.h (.../releases/firmware-nonfree/0.4etch1) (revision 0) +++ bnx2/fwcutter/bnx2_fw_file.h (.../dists/etch/firmware-nonfree) (revision 11527) @@ -0,0 +1,25 @@ +struct bnx2_fw_file_section { + uint32_t addr; + uint32_t len; + uint32_t offset; +}; + +struct bnx2_fw_file_entry { + uint32_t start_addr; + struct bnx2_fw_file_section text; + struct bnx2_fw_file_section data; + struct bnx2_fw_file_section sbss; + struct bnx2_fw_file_section bss; + struct bnx2_fw_file_section rodata; +}; + +struct bnx2_fw_file { + struct bnx2_fw_file_entry com; + struct bnx2_fw_file_entry cp; + struct bnx2_fw_file_entry rxp; + struct bnx2_fw_file_entry tpat; + struct bnx2_fw_file_entry txp; + struct bnx2_fw_file_section rv2p_proc1; + struct bnx2_fw_file_section rv2p_proc2; +}; + Index: bnx2/fwcutter/Makefile =================================================================== --- bnx2/fwcutter/Makefile (.../releases/firmware-nonfree/0.4etch1) (revision 0) +++ bnx2/fwcutter/Makefile (.../dists/etch/firmware-nonfree) (revision 11527) @@ -0,0 +1,15 @@ +ifndef KERNEL_SOURCE +$(error Please define KERNEL_SOURCE) +endif +ifndef KERNEL_VERSION +$(error Please define KERNEL_VERSION) +endif + +CFLAGS += -I$(KERNEL_SOURCE)/drivers/net +CFLAGS += --std=gnu99 +LDFLAGS += -lz + +all: bnx2_fwcutter_$(KERNEL_VERSION) + +bnx2_fwcutter_$(KERNEL_VERSION): bnx2_fwcutter_$(KERNEL_VERSION).c + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ Index: bnx2/fwcutter/bnx2_fwcutter.c =================================================================== --- bnx2/fwcutter/bnx2_fwcutter.c (.../releases/firmware-nonfree/0.4etch1) (revision 0) +++ bnx2/fwcutter/bnx2_fwcutter.c (.../dists/etch/firmware-nonfree) (revision 11527) @@ -0,0 +1,177 @@ +#include <assert.h> +#include <byteswap.h> +#include <endian.h> +#include <fcntl.h> +#include <sys/stat.h> +#include <sys/types.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <zlib.h> + +#include "bnx2_fw_file.h" + +struct fw_info { + const uint32_t ver_major; + const uint32_t ver_minor; + const uint32_t ver_fix; + + const uint32_t start_addr; + + /* Text section. */ + const uint32_t text_addr; + const uint32_t text_len; + const uint32_t text_index; + void *text; + const void *gz_text; + const uint32_t gz_text_len; + + /* Data section. */ + const uint32_t data_addr; + const uint32_t data_len; + const uint32_t data_index; + const uint32_t *data; + + /* SBSS section. */ + const uint32_t sbss_addr; + const uint32_t sbss_len; + const uint32_t sbss_index; + + /* BSS section. */ + const uint32_t bss_addr; + const uint32_t bss_len; + const uint32_t bss_index; + + /* Read-only section. */ + const uint32_t rodata_addr; + const uint32_t rodata_len; + const uint32_t rodata_index; + const uint32_t *rodata; +}; + +typedef uint8_t u8; +typedef uint32_t u32; + +#include "bnx2_fw.h" +#include "bnx2_fw2.h" + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define cpu_to_be32(x) bswap_32(x) +#elif __BYTE_ORDER == __BIG_ENDIAN +#define cpu_to_be32(x) (x) +#endif +#define le32_to_be32(x) bswap_32(x) + +void set_firmware_image_part(struct bnx2_fw_file_section *s, uint32_t addr, uint32_t len) +{ + s->addr = cpu_to_be32(addr); + s->len = cpu_to_be32(len); +} + +void write_firmware_flat(int fd, struct bnx2_fw_file_section *out, void *data, int len) +{ + off_t offset = lseek(fd, 0, SEEK_CUR); + + uint32_t buf[0x10000]; + struct z_stream_s strm; + memset(&strm, 0, sizeof strm); + + strm.next_in = (void *)data; + strm.avail_in = len; + strm.next_out = (void *)buf; + strm.avail_out = sizeof buf; + + int ret = inflateInit2(&strm, -MAX_WBITS); + assert(ret == Z_OK); + ret = inflate(&strm, Z_FINISH); + assert(ret == Z_STREAM_END); + unsigned int l = strm.total_out; + + out->len = cpu_to_be32(l); + out->offset = cpu_to_be32(offset); + + inflateEnd(&strm); + + for (unsigned int j = 0; j < (l / 4); j++) + buf[j] = le32_to_be32(buf[j]); + write(fd, buf, l); +} + +void write_firmware_image(int fd, struct bnx2_fw_file_entry *out, struct fw_info *fw) +{ + off_t offset = lseek(fd, 0, SEEK_CUR); + + out->start_addr = cpu_to_be32(fw->start_addr); + + set_firmware_image_part(&out->text, fw->text_addr, fw->text_len); + out->text.offset = cpu_to_be32(offset); + + uint32_t buf[0x10000]; + struct z_stream_s strm; + memset(&strm, 0, sizeof strm); + + strm.next_in = (void *)fw->gz_text; + strm.avail_in = fw->gz_text_len; + strm.next_out = (void *)buf; + strm.avail_out = sizeof buf; + + int ret = inflateInit2(&strm, -MAX_WBITS); + assert(ret == Z_OK); + ret = inflate(&strm, Z_FINISH); + assert(ret == Z_STREAM_END); + inflateEnd(&strm); + + for (unsigned int j = 0; j < (fw->text_len / 4); j++) + buf[j] = le32_to_be32(buf[j]); + offset += write(fd, buf, fw->text_len); + + if (fw->data_addr) + { + set_firmware_image_part(&out->data, fw->data_addr, fw->data_len); + out->data.offset = cpu_to_be32(offset); + for (unsigned int j = 0; j < (fw->data_len / 4); j++) + buf[j] = cpu_to_be32(fw->data[j]); + offset += write(fd, buf, fw->data_len); + } + + if (fw->sbss_len) + set_firmware_image_part(&out->sbss, fw->sbss_addr, fw->sbss_len); + + if (fw->bss_len) + set_firmware_image_part(&out->bss, fw->bss_addr, fw->bss_len); + + if (fw->rodata_addr) + { + set_firmware_image_part(&out->rodata, fw->rodata_addr, fw->rodata_len); + out->rodata.offset = cpu_to_be32(offset); + for (unsigned int j = 0; j < (fw->rodata_len / 4); j++) + buf[j] = cpu_to_be32(fw->rodata[j]); + offset += write(fd, buf, fw->rodata_len); + } +} + +void write_firmware(const char *filename, struct fw_info *com_fw, struct fw_info *cp_fw, struct fw_info *rxp_fw, struct fw_info *tpat_fw, struct fw_info *txp_fw, void *rv2p_proc1, int rv2p_proc1_len, void *rv2p_proc2, int rv2p_proc2_len) +{ + struct bnx2_fw_file out; + memset(&out, 0, sizeof out); + + int fd = open(filename, O_WRONLY | O_CREAT, 0666); + + lseek(fd, sizeof out, SEEK_SET); + + write_firmware_image(fd, &out.com, com_fw); + write_firmware_image(fd, &out.cp, cp_fw); + write_firmware_image(fd, &out.rxp, rxp_fw); + write_firmware_image(fd, &out.tpat, tpat_fw); + write_firmware_image(fd, &out.txp, txp_fw); + write_firmware_flat(fd, &out.rv2p_proc1, rv2p_proc1, rv2p_proc1_len); + write_firmware_flat(fd, &out.rv2p_proc2, rv2p_proc2, rv2p_proc2_len); + + lseek(fd, 0, SEEK_SET); + + write(fd, &out, sizeof out); + + close(fd); +} + Index: bnx2/bnx2-06-4.0.5.fw =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: bnx2/bnx2-06-4.0.5.fw ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Index: bnx2/bnx2-09-4.0.5.fw =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: bnx2/bnx2-09-4.0.5.fw ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Index: bnx2/defines =================================================================== --- bnx2/defines (.../releases/firmware-nonfree/0.4etch1) (revision 0) +++ bnx2/defines (.../dists/etch/firmware-nonfree) (revision 11527) @@ -0,0 +1,16 @@ +[base] +desc: Broadcom NetXtremeII +files: + bnx2-06-4.0.5.fw + bnx2-09-4.0.5.fw +longdesc: Broadcom NetXtremeII network adapters +support: initramfs-tools +uri: http://ftp.debian.org/debian/pool/non-free/f/firmware-nonfree + +[bnx2-06-4.0.5.fw_base] +desc: Broadcom NetXtremeII 5706 firmware +version: Linux 2.6.25 + +[bnx2-09-4.0.5.fw_base] +desc: Broadcom NetXtremeII 5709 firmware +version: Linux 2.6.25 Index: iwlwifi/LICENSE =================================================================== --- iwlwifi/LICENSE (.../releases/firmware-nonfree/0.4etch1) (revision 0) +++ iwlwifi/LICENSE (.../dists/etch/firmware-nonfree) (revision 11527) @@ -0,0 +1,39 @@ +Copyright (c) 2006, Intel Corporation. +All rights reserved. + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +* Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. +* Neither the name of Intel Corporation nor the names of its suppliers + may be used to endorse or promote products derived from this software + without specific prior written permission. +* No reverse engineering, decompilation, or disassembly of this software + is permitted. + +Limited patent license. Intel Corporation grants a world-wide, +royalty-free, non-exclusive license under patents it now or hereafter +owns or controls to make, have made, use, import, offer to sell and +sell ("Utilize") this software, but solely to the extent that any +such patent is necessary to Utilize the software alone, or in +combination with an operating system licensed under an approved Open +Source license as listed by the Open Source Initiative at +http://opensource.org/licenses. The patent license shall not apply to +any other combinations which include this software. No hardware per +se is licensed hereunder. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. Index: iwlwifi/iwlwifi-3945-1.ucode =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: iwlwifi/iwlwifi-3945-1.ucode ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Index: iwlwifi/iwlwifi-4965-1.ucode =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: iwlwifi/iwlwifi-4965-1.ucode ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Index: iwlwifi/update.sh =================================================================== --- iwlwifi/update.sh (.../releases/firmware-nonfree/0.4etch1) (revision 0) +++ iwlwifi/update.sh (.../dists/etch/firmware-nonfree) (revision 11527) @@ -0,0 +1,14 @@ +#!/bin/sh + +version="$1" +url="$2" + +mkdir update +curl -o update/ucode.tgz "$url" + +tar -C update -xzf update/ucode.tgz +file="$(tar -tzf update/ucode.tgz | grep -e "\.ucode$")" +file_real="${file#*/}" +mv update/"$file" "$file_real"-"$version" + +rm update -rf Property changes on: iwlwifi/update.sh ___________________________________________________________________ Name: svn:executable + * Index: iwlwifi/defines =================================================================== --- iwlwifi/defines (.../releases/firmware-nonfree/0.4etch1) (revision 0) +++ iwlwifi/defines (.../dists/etch/firmware-nonfree) (revision 11527) @@ -0,0 +1,13 @@ +[base] +desc: Intel Wireless 3945 and 4965 +files: + iwlwifi-3945-1.ucode + iwlwifi-4965-1.ucode +longdesc: Intel Wireless 3945 and 4965 cards +uri: http://intellinuxwireless.org/?p=iwlwifi&n=downloads + +[iwlwifi-3945-1.ucode_base] +desc: Intel Wireless 3945 firmware + +[iwlwifi-4965-1.ucode_base] +desc: Intel Wireless 4965 firmware Index: defines =================================================================== --- defines (.../releases/firmware-nonfree/0.4etch1) (revision 11527) +++ defines (.../dists/etch/firmware-nonfree) (revision 11527) @@ -1,4 +1,6 @@ [base] packages: + bnx2 + iwlwifi ipw3945 qlogic -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]