diff -u bcmwl-6.30.223.30+bdcom/debian/dkms.conf.in bcmwl-6.30.223.30+bdcom/debian/dkms.conf.in --- bcmwl-6.30.223.30+bdcom/debian/dkms.conf.in +++ bcmwl-6.30.223.30+bdcom/debian/dkms.conf.in @@ -11,6 +11,7 @@ PATCH[3]="0006-add-support-for-linux-3.8.0.patch" PATCH[4]="0007-nl80211-move-scan-API-to-wdev.patch" PATCH[5]="0008-add-support-for-linux-3.9.0.patch" +PATCH[6]="0009-add-support-for-linux-3.10.0.patch" #PATCH_MATCH[3]="^3.[23456]" #PATCH_MATCH[4]="^3.[56]" AUTOINSTALL="yes" diff -u bcmwl-6.30.223.30+bdcom/debian/changelog bcmwl-6.30.223.30+bdcom/debian/changelog --- bcmwl-6.30.223.30+bdcom/debian/changelog +++ bcmwl-6.30.223.30+bdcom/debian/changelog @@ -1,11 +1,19 @@ -bcmwl (6.30.223.30+bdcom-0ubuntu1~eugenesan~precise2) precise; urgency=low +bcmwl (6.30.223.30+bdcom-0ubuntu2~eugenesan~precise1) precise; urgency=low - * Import from ppa:albertomilone/broadcom - * Add support for Linux 3.9.0 + * Backport from Saucy - -- Eugene San (eugenesan) Sat, 04 May 2013 07:56:57 +0300 + -- Eugene San (eugenesan) Thu, 27 Jun 2013 06:38:37 +0300 -bcmwl (6.30.223.30+bdcom-0ubuntu1~ppa1) precise; urgency=low +bcmwl (6.30.223.30+bdcom-0ubuntu2) precise; urgency=low + + * debian/dkms.conf.in, + debian/patches/0009-add-support-for-linux-3.10.0.patch: + - Add support for Linux 3.10. + Thanks to Maarten Lankhorst for the patch. + + -- Alberto Milone Tue, 18 Jun 2013 17:40:40 +0200 + +bcmwl (6.30.223.30+bdcom-0ubuntu1) precise; urgency=low * New upstream release. * debian/dkms.conf.in: @@ -13,17 +21,19 @@ * 0006-add-support-for-linux-3.8.0.patch, 0007-nl80211-move-scan-API-to-wdev.patch: - Refresh against new release. + * 0008-add-support-for-linux-3.9.0.patch: + - Add support for Linux 3.9 (LP: #1157880). - -- Alberto Milone Thu, 28 Mar 2013 11:44:29 +0100 + -- Alberto Milone Wed, 15 May 2013 13:11:43 +0200 -bcmwl (6.20.155.1+bdcom-0ubuntu6) precise; urgency=low +bcmwl (6.20.155.1+bdcom-0ubuntu6) raring; urgency=low * debian/control: - Drop all the dependencies on the linux-headers. -- Alberto Milone Thu, 17 Jan 2013 16:31:46 +0100 -bcmwl (6.20.155.1+bdcom-0ubuntu5) precise; urgency=low +bcmwl (6.20.155.1+bdcom-0ubuntu5) raring; urgency=low * 0007-nl80211-move-scan-API-to-wdev.patch: - Move scan API to wdev. This fixes an issue with @@ -32,7 +42,7 @@ -- Alberto Milone Thu, 10 Jan 2013 18:09:48 +0100 -bcmwl (6.20.155.1+bdcom-0ubuntu4) precise; urgency=low +bcmwl (6.20.155.1+bdcom-0ubuntu4) raring; urgency=low * 0006-add-support-for-linux-3.8.0.patch: - Make sure to pass the correct argument to wl_ch_to_chanspec @@ -40,14 +50,14 @@ -- Alberto Milone Wed, 09 Jan 2013 15:28:26 +0100 -bcmwl (6.20.155.1+bdcom-0ubuntu3) precise; urgency=low +bcmwl (6.20.155.1+bdcom-0ubuntu3) raring; urgency=low * 0006-add-support-for-linux-3.8.0.patch: - Add support for Linux 3.8 (LP: #1095751). -- Alberto Milone Tue, 08 Jan 2013 15:13:17 +0100 -bcmwl (6.20.155.1+bdcom-0ubuntu2) precise; urgency=low +bcmwl (6.20.155.1+bdcom-0ubuntu2) raring; urgency=low * Drop parsing of src/src/wl/sys/wl_linux.c, as the current upstream version dropped all useful vendor matches in its pci_device_id struct and now has @@ -58,7 +68,7 @@ -- Martin Pitt Thu, 13 Dec 2012 16:02:24 +0100 -bcmwl (6.20.155.1+bdcom-0ubuntu1) precise; urgency=low +bcmwl (6.20.155.1+bdcom-0ubuntu1) raring; urgency=low * New upstream release (LP: #923809): - Added 43142 support. @@ -69,7 +79,7 @@ -- Alberto Milone Tue, 11 Dec 2012 17:06:22 +0100 -bcmwl (5.100.82.112+bdcom-0ubuntu4) precise; urgency=low +bcmwl (5.100.82.112+bdcom-0ubuntu4) raring; urgency=low * debian/bcmwl-kernel-source.postinst: Silence the errors from rmmod about the modules not being loaded. This is fully expected, and just causes only in patch2: unchanged: --- bcmwl-6.30.223.30+bdcom.orig/debian/patches/0009-add-support-for-linux-3.10.0.patch +++ bcmwl-6.30.223.30+bdcom/debian/patches/0009-add-support-for-linux-3.10.0.patch @@ -0,0 +1,115 @@ +diff -ru build.3.9/src/wl/sys/wl_linux.c build/src/wl/sys/wl_linux.c +--- build.3.9/src/wl/sys/wl_linux.c 2013-06-18 13:48:04.109167642 +0000 ++++ build/src/wl/sys/wl_linux.c 2013-06-18 14:24:33.448198331 +0000 +@@ -3236,7 +3236,7 @@ + void + wl_tkip_printstats(wl_info_t *wl, bool group_key) + { +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 14) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 14) && LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) + char debug_buf[512]; + int idx; + if (wl->tkipmodops) { +@@ -3409,6 +3409,7 @@ + return 0; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) + static int + wl_proc_read(char *buffer, char **start, off_t offset, int length, int *eof, void *data) + { +@@ -3463,19 +3464,90 @@ + return length; + } + ++#else ++ ++static int ++wl_proc_read(struct seq_file *seq, void *offset) ++{ ++ wl_info_t * wl = (wl_info_t *)seq->private; ++ int bcmerror, to_user; ++ ++ WL_LOCK(wl); ++ bcmerror = wlc_ioctl(wl->wlc, WLC_GET_MONITOR, &to_user, sizeof(int), NULL); ++ WL_UNLOCK(wl); ++ ++ seq_printf(seq, "%d\n", to_user); ++ return bcmerror; ++} ++ ++static ssize_t wl_proc_write(struct file *file, const char __user *buff, ++ size_t length, loff_t *ppos) ++{ ++ struct seq_file *seq = file->private_data; ++ wl_info_t * wl = (wl_info_t *)seq->private; ++ int bcmerror, from_user = 0; ++ ++ if (length != 1) { ++ WL_ERROR(("%s: Invalid data length\n", __FUNCTION__)); ++ return -EIO; ++ } ++ ++ if (copy_from_user(&from_user, buff, 1)) { ++ WL_ERROR(("%s: copy from user failed\n", __FUNCTION__)); ++ return -EFAULT; ++ } ++ ++ if (from_user >= 0x30) ++ from_user -= 0x30; ++ ++ WL_LOCK(wl); ++ bcmerror = wlc_ioctl(wl->wlc, WLC_SET_MONITOR, &from_user, sizeof(int), NULL); ++ WL_UNLOCK(wl); ++ ++ if (bcmerror < 0) { ++ WL_ERROR(("%s: SET_MONITOR failed with %d\n", __FUNCTION__, bcmerror)); ++ return -EIO; ++ } ++ *ppos += length; ++ return length; ++} ++ ++static int wl_proc_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, wl_proc_read, PDE_DATA(inode)); ++} ++ ++static const struct file_operations wl_proc_fops = { ++ .owner = THIS_MODULE, ++ .open = wl_proc_open, ++ .read = seq_read, ++ .write = wl_proc_write, ++ .llseek = seq_lseek, ++ .release = single_release, ++}; ++#endif ++ + static int + wl_reg_proc_entry(wl_info_t *wl) + { + char tmp[32]; + sprintf(tmp, "%s%d", HYBRID_PROC, wl->pub->unit); +- if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) { ++ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) ++ wl->proc_entry = create_proc_entry(tmp, 0644, NULL); ++ if (wl->proc_entry) { ++ wl->proc_entry->read_proc = wl_proc_read; ++ wl->proc_entry->write_proc = wl_proc_write; ++ wl->proc_entry->data = wl; ++ } ++#else ++ wl->proc_entry = proc_create_data(tmp, 0644, NULL, &wl_proc_fops, wl); ++#endif ++ if (!wl->proc_entry) { + WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp)); + ASSERT(0); + return -1; + } +- wl->proc_entry->read_proc = wl_proc_read; +- wl->proc_entry->write_proc = wl_proc_write; +- wl->proc_entry->data = wl; + return 0; + } + #ifdef WLOFFLD