summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerry Chen <terry-ht.chen@broadcom.corp-partner.google.com>2020-04-21 15:06:07 +0800
committerAhmed ElArabawy <arabawy@google.com>2020-05-01 00:37:03 +0000
commitb739e60e12385dc4e9cab88aa688aacd15274cfb (patch)
tree2b65a51ea4458a970cb0808f260d5a20fe535323
parent4594691db7c8e5ac3ef346bba7416020379bde27 (diff)
downloadwlan-b739e60e12385dc4e9cab88aa688aacd15274cfb.tar.gz
Wifi: Set event socket pid to brcm driver
Set event socket pid to driver, then driver send unicast GOOGLE_DEBUG_RING_EVENT only to wifi hal Bug: 151049090 Test: build pass, verify done. Change-Id: I10a5d4012e9cfe10b5925fda585a144e49bf2196
-rwxr-xr-xbcmdhd/wifi_hal/wifi_logger.cpp41
1 files changed, 38 insertions, 3 deletions
diff --git a/bcmdhd/wifi_hal/wifi_logger.cpp b/bcmdhd/wifi_hal/wifi_logger.cpp
index e8c6a4a..1ab37d5 100755
--- a/bcmdhd/wifi_hal/wifi_logger.cpp
+++ b/bcmdhd/wifi_hal/wifi_logger.cpp
@@ -33,6 +33,8 @@
#include <netlink/socket.h>
#include <netlink-private/object-api.h>
#include <netlink-private/types.h>
+#include <unistd.h>
+
#include "nl80211_copy.h"
#include "sync.h"
@@ -45,6 +47,7 @@
#include "common.h"
#include "cpp_bindings.h"
#include "brcm_version.h"
+#define WIFI_HAL_EVENT_SOCK_PORT 645
#define ARRAYSIZE(a) (u8)(sizeof(a) / sizeof(a[0]))
typedef enum {
@@ -65,7 +68,8 @@ typedef enum {
LOGGER_DEBUG_GET_DUMP,
LOGGER_FILE_DUMP_DONE_IND,
LOGGER_SET_HAL_START,
- LOGGER_HAL_STOP
+ LOGGER_HAL_STOP,
+ LOGGER_SET_HAL_PID
} DEBUG_SUB_COMMAND;
typedef enum {
@@ -115,7 +119,8 @@ typedef enum {
typedef enum {
SET_HAL_START_ATTRIBUTE_DEINIT = 0x0001,
- SET_HAL_START_ATTRIBUTE_PRE_INIT = 0x0002
+ SET_HAL_START_ATTRIBUTE_PRE_INIT = 0x0002,
+ SET_HAL_START_ATTRIBUTE_EVENT_SOCK_PID = 0x0003
} SET_HAL_START_ATTRIBUTE;
#define HAL_START_REQUEST_ID 2
@@ -556,8 +561,38 @@ public:
int start() {
ALOGV("Register loghandler");
+ int result;
+ uint32_t event_sock_pid = getpid() + (WIFI_HAL_EVENT_SOCK_PORT << 22);
registerVendorHandler(GOOGLE_OUI, GOOGLE_DEBUG_RING_EVENT);
- return WIFI_SUCCESS;
+
+ WifiRequest request(familyId(), ifaceId());
+
+ /* set hal event socket port to driver */
+ result = request.create(GOOGLE_OUI, LOGGER_SET_HAL_PID);
+ if (result != WIFI_SUCCESS) {
+ ALOGV("Failed to set Hal preInit; result = %d", result);
+ return result;
+ }
+ nlattr *data = request.attr_start(NL80211_ATTR_VENDOR_DATA);
+ result = request.put_u32(SET_HAL_START_ATTRIBUTE_EVENT_SOCK_PID, event_sock_pid);
+ if (result != WIFI_SUCCESS) {
+ ALOGV("Hal preInit Failed to put pic = %d", result);
+ return result;
+ }
+
+ if (result != WIFI_SUCCESS) {
+ ALOGV("Hal preInit Failed to put pid= %d", result);
+ return result;
+ }
+
+ request.attr_end(data);
+
+ result = requestResponse(request);
+ if (result != WIFI_SUCCESS) {
+ ALOGE("Failed to register set Hal preInit; result = %d", result);
+ return result;
+ }
+ return result;
}
virtual int cancel() {