diff options
author | eccopark@broadcom.com <eccopark@broadcom.com> | 2015-03-25 17:21:26 -0700 |
---|---|---|
committer | eccopark@broadcom.com <eccopark@broadcom.com> | 2015-03-27 10:55:38 -0700 |
commit | 3fabb28c4b19ea110aee0fde881c7dc315980b16 (patch) | |
tree | 30e3ae23ca9cb189a533ba28493b7f13256c0202 | |
parent | 3e778d3b8acf9ec3ce76d32255ae2b1aec3ac7d1 (diff) | |
download | hardware_libhardware_legacy-3fabb28c4b19ea110aee0fde881c7dc315980b16.zip hardware_libhardware_legacy-3fabb28c4b19ea110aee0fde881c7dc315980b16.tar.gz hardware_libhardware_legacy-3fabb28c4b19ea110aee0fde881c7dc315980b16.tar.bz2 |
net: wireless change the header of Logger
1) add the request_id in wifi_get_logger_supported_feature_set
2) Change the wifi_get_firmware_memory_dump API
1) Normally the size of firmware dump is 700KB.
Thus, Driver cannot send the data in one time because of limitation of skb length.
In order to send such big data from kernel Driver,
we need to send data using event continuously until we send the memory dump completely.
In the event handler of hal, it will allocate the
big buffer to store the data.
Once event handler copy the data completely, event handler
will call the function callback(on_firmware_memory_dump).
So, upper layer has to free the buffer after handling the buffer.
Change-Id: If80b03ec8bd9349d952743e17a001c04096aac95
Signed-off-by: eccopark@broadcom.com <eccopark@broadcom.com>
-rw-r--r-- | include/hardware_legacy/wifi_logger.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/include/hardware_legacy/wifi_logger.h b/include/hardware_legacy/wifi_logger.h index daa099e..fb4edbb 100644 --- a/include/hardware_legacy/wifi_logger.h +++ b/include/hardware_legacy/wifi_logger.h @@ -195,7 +195,7 @@ enum { };
typedef struct {
- u16 entry_size; // the size of payload excluding the header.
+ u16 entry_size; // the size of payload excluding the header.
u8 flags;
u8 type; // Entry type
u64 timestamp; //present if has_timestamp bit is set.
@@ -272,9 +272,15 @@ wifi_error wifi_start_logging(wifi_request_id id, wifi_interface_handle iface, u wifi_error wifi_get_ring_buffers_status(wifi_request_id id,
wifi_interface_handle iface, u32 *num_rings, wifi_ring_buffer_status **status);
+/* Upper layer has to free the memory indicated by buffer pointer */
+typedef struct {
+ void (*on_firmware_memory_dump) (wifi_request_id id, char *buffer, int buffer_size);
+} wifi_firmware_memory_dump_handler;
+
+
/* api to collect a firmware memory dump for a given iface */
wifi_error wifi_get_firmware_memory_dump(wifi_request_id id,
- wifi_interface_handle iface, char **buffer, int *buffer_size);
+ wifi_interface_handle iface, wifi_firmware_memory_dump_handler handler);
/* api to collect a firmware version string */
wifi_error wifi_get_firmware_version(wifi_request_id id,
@@ -295,7 +301,7 @@ enum { WIFI_LOGGER_VERBOSE_SUPPORTED = (1 << (5)), // verbose log of FW
WIFI_LOGGER_WATCHDOG_TIMER_SUPPORTED = (1 << (6)) // monitor the health of FW
};
-wifi_error wifi_get_logger_supported_feature_set(wifi_interface_handle handle, unsigned int *support);
+wifi_error wifi_get_logger_supported_feature_set(wifi_request_id id, wifi_interface_handle iface, unsigned int *support);
#ifdef __cplusplus
|