summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bcmdhd/bcmdhd_net_iface/Android.mk30
-rw-r--r--bcmdhd/bcmdhd_net_iface/bcmdhd_net_iface.c84
-rw-r--r--bcmdhd/config/android_dhcpcd.conf3
-rw-r--r--bcmdhd/firmware/bcm4324/fw_bcm4324.binbin491894 -> 490887 bytes
-rw-r--r--bcmdhd/firmware/bcm4329/fw_bcm4329.binbin242226 -> 246791 bytes
-rw-r--r--bcmdhd/firmware/bcm4329/fw_bcm4329_abg.binbin259327 -> 264140 bytes
-rw-r--r--bcmdhd/firmware/bcm4329/fw_bcm4329_apsta.binbin266967 -> 267027 bytes
-rw-r--r--bcmdhd/firmware/bcm4330/fw_bcm4330_abg.binbin221204 -> 221456 bytes
-rw-r--r--bcmdhd/firmware/bcm4330/fw_bcm4330_apsta_abg.binbin221204 -> 221456 bytes
-rw-r--r--bcmdhd/firmware/bcm4330/fw_bcm4330_apsta_bg.binbin209175 -> 209427 bytes
-rw-r--r--bcmdhd/firmware/bcm4330/fw_bcm4330_bg.binbin209175 -> 209427 bytes
-rw-r--r--bcmdhd/firmware/bcm4330/fw_bcm4330_p2p_abg.binbin221204 -> 221456 bytes
-rw-r--r--bcmdhd/firmware/bcm4330/fw_bcm4330_p2p_bg.binbin209175 -> 209427 bytes
-rw-r--r--bcmdhd/wpa_supplicant_8_lib/driver_cmd_nl80211.c4
14 files changed, 120 insertions, 1 deletions
diff --git a/bcmdhd/bcmdhd_net_iface/Android.mk b/bcmdhd/bcmdhd_net_iface/Android.mk
new file mode 100644
index 0000000..be22624
--- /dev/null
+++ b/bcmdhd/bcmdhd_net_iface/Android.mk
@@ -0,0 +1,30 @@
+#
+# Copyright (C) 2012 Google, inc.
+#
+# $Id: Android.mk,v 2.6 2009-05-07 18:25:15 hharte Exp $
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+
+#
+# lib_net_iface_cmd
+#
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := bcmdhd_net_iface.c
+LOCAL_MODULE := libnetcmdiface
+LOCAL_CFLAGS := -mabi=aapcs-linux
+LOCAL_MODULE_TAGS := optional
+LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
+include $(BUILD_SHARED_LIBRARY)
diff --git a/bcmdhd/bcmdhd_net_iface/bcmdhd_net_iface.c b/bcmdhd/bcmdhd_net_iface/bcmdhd_net_iface.c
new file mode 100644
index 0000000..9aed684
--- /dev/null
+++ b/bcmdhd/bcmdhd_net_iface/bcmdhd_net_iface.c
@@ -0,0 +1,84 @@
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <linux/in.h>
+#include <net/if.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include <cutils/log.h>
+#include <netutils/ifc.h>
+#include <private/android_filesystem_config.h>
+
+#define INTERFACE_MAX_BUFFER_SIZE 4096
+
+typedef struct android_wifi_priv_cmd {
+ char *buf;
+ int used_len;
+ int total_len;
+} android_wifi_priv_cmd;
+
+static struct net_if_snd_cmd_state {
+ int sock;
+ char cmd[INTERFACE_MAX_BUFFER_SIZE];
+ char ibuf[INTERFACE_MAX_BUFFER_SIZE];
+} state;
+
+int net_iface_send_command_init(void) {
+ state.sock = socket(AF_INET, SOCK_DGRAM, 0);
+ if (state.sock < 0) {
+ return -ENOTCONN;
+ } else {
+ return 0;
+ }
+}
+
+/*
+ * Arguments:
+ * argv[2] - wlan interface
+ * argv[3] - command
+ * argv[4] - argument
+ */
+int net_iface_send_command(int argc, char *argv[], char **rbuf) {
+ int ret, i;
+ size_t bc = 0;
+ struct ifreq ifr;
+ android_wifi_priv_cmd priv_cmd;
+
+ if (argc < 3) {
+ return -EINVAL;
+ }
+ for (i = 3; i < argc; i++) {
+ bc += snprintf(&state.cmd[bc], sizeof(state.cmd) - bc, "%s ", argv[i]);
+ if (bc >= sizeof(state.cmd)) {
+ return -ENOBUFS;
+ }
+ }
+ state.cmd[bc] = '\0';
+
+ memset(&ifr, 0, sizeof(ifr));
+ strncpy(ifr.ifr_name, argv[2], IFNAMSIZ);
+ strncpy(state.ibuf, state.cmd, INTERFACE_MAX_BUFFER_SIZE);
+
+ priv_cmd.buf = state.ibuf;
+ priv_cmd.used_len = INTERFACE_MAX_BUFFER_SIZE;
+ priv_cmd.total_len = INTERFACE_MAX_BUFFER_SIZE;
+
+ ifr.ifr_data = &priv_cmd;
+
+ if ((ret = ioctl(state.sock, SIOCDEVPRIVATE + 1, &ifr)) < 0) {
+ return ret;
+ }
+
+ if (rbuf)
+ *rbuf = state.ibuf;
+ else
+ ret = -EFAULT;
+
+ return ret;
+}
diff --git a/bcmdhd/config/android_dhcpcd.conf b/bcmdhd/config/android_dhcpcd.conf
index 54006c7..e6b4414 100644
--- a/bcmdhd/config/android_dhcpcd.conf
+++ b/bcmdhd/config/android_dhcpcd.conf
@@ -1,6 +1,9 @@
# dhcpcd configuration for Android Wi-Fi interface
# See dhcpcd.conf(5) for details.
+# Disable solicitation of IPv6 Router Advertisements
+noipv6rs
+
interface wlan0
# dhcpcd-run-hooks uses these options.
option subnet_mask, routers, domain_name_servers
diff --git a/bcmdhd/firmware/bcm4324/fw_bcm4324.bin b/bcmdhd/firmware/bcm4324/fw_bcm4324.bin
index 12c523d..0e62925 100644
--- a/bcmdhd/firmware/bcm4324/fw_bcm4324.bin
+++ b/bcmdhd/firmware/bcm4324/fw_bcm4324.bin
Binary files differ
diff --git a/bcmdhd/firmware/bcm4329/fw_bcm4329.bin b/bcmdhd/firmware/bcm4329/fw_bcm4329.bin
index ba9d41f..167a1c4 100644
--- a/bcmdhd/firmware/bcm4329/fw_bcm4329.bin
+++ b/bcmdhd/firmware/bcm4329/fw_bcm4329.bin
Binary files differ
diff --git a/bcmdhd/firmware/bcm4329/fw_bcm4329_abg.bin b/bcmdhd/firmware/bcm4329/fw_bcm4329_abg.bin
index be20bdb..f1cb13a 100644
--- a/bcmdhd/firmware/bcm4329/fw_bcm4329_abg.bin
+++ b/bcmdhd/firmware/bcm4329/fw_bcm4329_abg.bin
Binary files differ
diff --git a/bcmdhd/firmware/bcm4329/fw_bcm4329_apsta.bin b/bcmdhd/firmware/bcm4329/fw_bcm4329_apsta.bin
index b04e4e0..d58f474 100644
--- a/bcmdhd/firmware/bcm4329/fw_bcm4329_apsta.bin
+++ b/bcmdhd/firmware/bcm4329/fw_bcm4329_apsta.bin
Binary files differ
diff --git a/bcmdhd/firmware/bcm4330/fw_bcm4330_abg.bin b/bcmdhd/firmware/bcm4330/fw_bcm4330_abg.bin
index df129fd..03f1cea 100644
--- a/bcmdhd/firmware/bcm4330/fw_bcm4330_abg.bin
+++ b/bcmdhd/firmware/bcm4330/fw_bcm4330_abg.bin
Binary files differ
diff --git a/bcmdhd/firmware/bcm4330/fw_bcm4330_apsta_abg.bin b/bcmdhd/firmware/bcm4330/fw_bcm4330_apsta_abg.bin
index df129fd..03f1cea 100644
--- a/bcmdhd/firmware/bcm4330/fw_bcm4330_apsta_abg.bin
+++ b/bcmdhd/firmware/bcm4330/fw_bcm4330_apsta_abg.bin
Binary files differ
diff --git a/bcmdhd/firmware/bcm4330/fw_bcm4330_apsta_bg.bin b/bcmdhd/firmware/bcm4330/fw_bcm4330_apsta_bg.bin
index 149ca02..1603977 100644
--- a/bcmdhd/firmware/bcm4330/fw_bcm4330_apsta_bg.bin
+++ b/bcmdhd/firmware/bcm4330/fw_bcm4330_apsta_bg.bin
Binary files differ
diff --git a/bcmdhd/firmware/bcm4330/fw_bcm4330_bg.bin b/bcmdhd/firmware/bcm4330/fw_bcm4330_bg.bin
index 149ca02..1603977 100644
--- a/bcmdhd/firmware/bcm4330/fw_bcm4330_bg.bin
+++ b/bcmdhd/firmware/bcm4330/fw_bcm4330_bg.bin
Binary files differ
diff --git a/bcmdhd/firmware/bcm4330/fw_bcm4330_p2p_abg.bin b/bcmdhd/firmware/bcm4330/fw_bcm4330_p2p_abg.bin
index df129fd..03f1cea 100644
--- a/bcmdhd/firmware/bcm4330/fw_bcm4330_p2p_abg.bin
+++ b/bcmdhd/firmware/bcm4330/fw_bcm4330_p2p_abg.bin
Binary files differ
diff --git a/bcmdhd/firmware/bcm4330/fw_bcm4330_p2p_bg.bin b/bcmdhd/firmware/bcm4330/fw_bcm4330_p2p_bg.bin
index 149ca02..1603977 100644
--- a/bcmdhd/firmware/bcm4330/fw_bcm4330_p2p_bg.bin
+++ b/bcmdhd/firmware/bcm4330/fw_bcm4330_p2p_bg.bin
Binary files differ
diff --git a/bcmdhd/wpa_supplicant_8_lib/driver_cmd_nl80211.c b/bcmdhd/wpa_supplicant_8_lib/driver_cmd_nl80211.c
index eafb118..f7af801 100644
--- a/bcmdhd/wpa_supplicant_8_lib/driver_cmd_nl80211.c
+++ b/bcmdhd/wpa_supplicant_8_lib/driver_cmd_nl80211.c
@@ -277,7 +277,9 @@ int wpa_driver_nl80211_driver_cmd(void *priv, char *cmd, char *buf,
(os_strcasecmp(cmd, "RSSI") == 0) ||
(os_strcasecmp(cmd, "GETBAND") == 0) )
ret = strlen(buf);
-
+ else if (os_strcasecmp(cmd, "COUNTRY") == 0)
+ wpa_supplicant_event(drv->ctx,
+ EVENT_CHANNEL_LIST_CHANGED, NULL);
wpa_printf(MSG_DEBUG, "%s %s len = %d, %d", __func__, buf, ret, strlen(buf));
}
}