From 1007832103d016d1563fab71d4cf2b057a0bcceb Mon Sep 17 00:00:00 2001 From: Holger Schurig Date: Thu, 15 Nov 2007 18:05:47 -0500 Subject: libertas: move to uniform lbs_/LBS_ namespace This patch unifies the namespace of variables, functions defines and structures. It does: - rename libertas_XXX to lbs_XXX - rename LIBERTAS_XXX to lbs_XXX - rename wlan_XXX to lbs_XXX - rename WLAN_XXX to LBS_XXX (but only those that were defined in libertas-local *.h files, e.g. not defines from net/ieee80211.h) While passing, I fixed some checkpatch.pl errors too. Signed-off-by: Holger Schurig Acked-by: Dan Williams Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index e1045dc02cce..6477ce0839d7 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -2,8 +2,8 @@ * This file contains the function prototypes, data structure * and defines for all the host/station commands */ -#ifndef __HOSTCMD__H -#define __HOSTCMD__H +#ifndef _LBS_HOSTCMD_H +#define _LBS_HOSTCMD_H #include #include "11d.h" @@ -86,13 +86,13 @@ struct cmd_ctrl_node { /* Generic structure to hold all key types. */ struct enc_key { u16 len; - u16 flags; /* KEY_INFO_* from wlan_defs.h */ - u16 type; /* KEY_TYPE_* from wlan_defs.h */ + u16 flags; /* KEY_INFO_* from defs.h */ + u16 type; /* KEY_TYPE_* from defs.h */ u8 key[32]; }; -/* wlan_offset_value */ -struct wlan_offset_value { +/* lbs_offset_value */ +struct lbs_offset_value { u32 offset; u32 value; }; -- cgit v1.2.3 From 96287ac4f7b387acbe17e24b5e1bcbf3bc0e75cd Mon Sep 17 00:00:00 2001 From: Brajesh Dave Date: Tue, 20 Nov 2007 17:44:28 -0500 Subject: libertas: configurable beacon interval Requires firmware version 5.110.19.p0 or newer, available here: http://dev.laptop.org/pub/firmware/libertas/ Signed-off-by: Ashish Shukla Signed-off-by: Javier Cardona Signed-off-by: Dan Williams Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 6477ce0839d7..f4a265daff2c 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -332,6 +332,12 @@ struct cmd_ds_802_11_radio_control { __le16 control; }; +struct cmd_ds_802_11_beacon_control { + __le16 action; + __le16 beacon_enable; + __le16 beacon_period; +}; + struct cmd_ds_802_11_sleep_params { /* ACT_GET/ACT_SET */ __le16 action; @@ -668,6 +674,7 @@ struct cmd_ds_command { struct cmd_ds_set_boot2_ver boot2_ver; struct cmd_ds_get_tsf gettsf; struct cmd_ds_802_11_subscribe_event subscribe_event; + struct cmd_ds_802_11_beacon_control bcn_ctrl; } params; } __attribute__ ((packed)); -- cgit v1.2.3 From 3a1886491710c196656a005fcc693172f5bb4c8a Mon Sep 17 00:00:00 2001 From: Holger Schurig Date: Mon, 26 Nov 2007 10:07:14 +0100 Subject: libertas: rework event subscription This patch moves re-works the implementation of event subscription via debugfs. For this: * it tells cmd.c and cmdresp.c about CMD_802_11_SUBSCRIBE_EVENT * removes lots of low-level cmd stuff from debugfs.c * create unified functions to read/write snr, rssi, bcnmiss and failcount * introduces #define's for subscription event bitmask values * add a function to search for a specific element in an IE (a.k.a. TLV) * add a function to find out the size of the TLV. This is needed because lbs_prepare_and_send_command() has an argument for a data buffer, but not for it's lengths and TLVs can be, by definition, vary in size. * fix a bug where it was not possible to disable an event Signed-off-by: Holger Schurig Acked-by: Dan Williams Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index f4a265daff2c..614db6c74576 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -151,6 +151,13 @@ struct cmd_ds_802_11_reset { struct cmd_ds_802_11_subscribe_event { __le16 action; __le16 events; + + /* A TLV to the CMD_802_11_SUBSCRIBE_EVENT command can contain a + * number of TLVs. From the v5.1 manual, those TLVs would add up to + * 40 bytes. However, future firmware might add additional TLVs, so I + * bump this up a bit. + */ + u8 tlv[128]; }; /* -- cgit v1.2.3 From f5ece8fc8d3f5e36bda3554b74b0fbecb0a14309 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Sat, 1 Dec 2007 15:15:41 +0000 Subject: libertas: Remove cmd_oid from struct cmd_ctrl_node This is only needed for SNMP and key operations; it doesn't need to be preserved outside that context. Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 2 -- 1 file changed, 2 deletions(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 614db6c74576..c02914900755 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -69,8 +69,6 @@ struct cmd_ctrl_node { /* CMD link list */ struct list_head list; u32 status; - /* CMD ID */ - u32 cmd_oid; /*CMD wait option: wait for finish or no wait */ u16 wait_option; /* command parameter */ -- cgit v1.2.3 From 891f32a1c4fe5c57f15873fa1d9fff425b30ab4d Mon Sep 17 00:00:00 2001 From: Holger Schurig Date: Wed, 5 Dec 2007 17:57:56 +0100 Subject: libertas: remove cmd_ctrl_node->cmdflags There was no code that ever did set this flag. Signed-off-by: Holger Schurig Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 1 - 1 file changed, 1 deletion(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index c02914900755..217ae122fca9 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -75,7 +75,6 @@ struct cmd_ctrl_node { void *pdata_buf; /*command data */ u8 *bufvirtualaddr; - u16 cmdflags; /* wait queue */ u16 cmdwaitqwoken; wait_queue_head_t cmdwait_q; -- cgit v1.2.3 From c68b3bbdb596b5f82f1f0731f6fcb210735aff39 Mon Sep 17 00:00:00 2001 From: Holger Schurig Date: Wed, 5 Dec 2007 17:57:58 +0100 Subject: libertas: remove cmd_ctrl_node->status There was no code that ever did set this variable. Signed-off-by: Holger Schurig Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 1 - 1 file changed, 1 deletion(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 217ae122fca9..f096d995194a 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -68,7 +68,6 @@ struct rxpd { struct cmd_ctrl_node { /* CMD link list */ struct list_head list; - u32 status; /*CMD wait option: wait for finish or no wait */ u16 wait_option; /* command parameter */ -- cgit v1.2.3 From 675787e29fd97d08bf7e6253c89ab6de23bf7089 Mon Sep 17 00:00:00 2001 From: Holger Schurig Date: Wed, 5 Dec 2007 17:58:11 +0100 Subject: libertas: handy function to call firmware commands Using an arbitrary firmware command was actually very painful. One had to change big switch() statements in cmd.c, cmdresp.c, add structs to the big union in "struct cmd_ds_command" and add the define for the CMD_802_11_xxx to the proper place. With this function, this is now much easier. For now, it implements a blocking (a.k.a. CMD_OPTION_WAITFORRSP) way where one deals directly with command requests and response buffers. You can do everything in one place: Signed-off-by: Holger Schurig Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index f096d995194a..be69ae652923 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -66,13 +66,13 @@ struct rxpd { }; struct cmd_ctrl_node { - /* CMD link list */ struct list_head list; - /*CMD wait option: wait for finish or no wait */ + /* wait for finish or not */ u16 wait_option; - /* command parameter */ + /* command response */ void *pdata_buf; - /*command data */ + int *pdata_size; + /* command data */ u8 *bufvirtualaddr; /* wait queue */ u16 cmdwaitqwoken; @@ -100,9 +100,12 @@ struct cmd_ds_gen { __le16 size; __le16 seqnum; __le16 result; + void *cmdresp[0]; }; #define S_DS_GEN sizeof(struct cmd_ds_gen) + + /* * Define data structure for CMD_GET_HW_SPEC * This structure defines the response for the GET_HW_SPEC command -- cgit v1.2.3 From 1723047d6742cc172d5c0f1a5245deaee67ff331 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Fri, 7 Dec 2007 15:13:05 +0000 Subject: libertas: Switch to using a callback function pointer for commands Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 1 + 1 file changed, 1 insertion(+) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index be69ae652923..5ef65ae0de5a 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -72,6 +72,7 @@ struct cmd_ctrl_node { /* command response */ void *pdata_buf; int *pdata_size; + int (*callback)(uint16_t respcmd, struct cmd_ds_command *resp, struct lbs_private *priv); /* command data */ u8 *bufvirtualaddr; /* wait queue */ -- cgit v1.2.3 From c2df2efe96742b78454acdffe6d278ae334fc838 Mon Sep 17 00:00:00 2001 From: Holger Schurig Date: Fri, 7 Dec 2007 15:30:44 +0000 Subject: libertas: endianness fixes Recently I found that that sparse by default doesn't endianness checks. So I changed my compilation habit to be make modules C=1 SUBDIRS=drivers/net/wireless/libertas CHECKFLAGS="-D__CHECK_ENDIAN__" so that I get the little-endian checks from sparse as well. That showed up a good bunch of problems. Signed-off-by: Holger Schurig Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 5ef65ae0de5a..efdb720d9fe7 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -419,13 +419,13 @@ struct cmd_ds_802_11_rf_antenna { }; struct cmd_ds_802_11_monitor_mode { - u16 action; - u16 mode; + __le16 action; + __le16 mode; }; struct cmd_ds_set_boot2_ver { - u16 action; - u16 version; + __le16 action; + __le16 version; }; struct cmd_ds_802_11_ps_mode { -- cgit v1.2.3 From 448a51ae0684c146c9f9ba4e178ab2182512258f Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Sat, 8 Dec 2007 00:59:54 +0000 Subject: libertas: switch lbs_cmd() to take a callback function pointer All existing code which sends commands is set up to have some function called with the results, not to get data back. It's more versatile this way, and providing it with a callback function which involves memcpy() is hardly difficult. Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 1 - 1 file changed, 1 deletion(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index efdb720d9fe7..f1c1d3f106c8 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -71,7 +71,6 @@ struct cmd_ctrl_node { u16 wait_option; /* command response */ void *pdata_buf; - int *pdata_size; int (*callback)(uint16_t respcmd, struct cmd_ds_command *resp, struct lbs_private *priv); /* command data */ u8 *bufvirtualaddr; -- cgit v1.2.3 From 1309b55b4de18bbfe19c73225a5481d6cdc8a463 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Mon, 10 Dec 2007 13:36:10 -0500 Subject: libertas: add opaque extra argument to cmd callback function This will be useful for letting callbacks do stuff like copying the response into a buffer provided by the caller of lbs_cmd() Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index f1c1d3f106c8..ed502b74fa3c 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -71,7 +71,8 @@ struct cmd_ctrl_node { u16 wait_option; /* command response */ void *pdata_buf; - int (*callback)(uint16_t respcmd, struct cmd_ds_command *resp, struct lbs_private *priv); + int (*callback)(struct lbs_private *priv, unsigned long arg, struct cmd_ds_command *resp); + unsigned long callback_arg; /* command data */ u8 *bufvirtualaddr; /* wait queue */ -- cgit v1.2.3 From 7ad994dec7d36c319cb35cbf3a920d3bda96e6b0 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 11 Dec 2007 12:33:30 -0500 Subject: libertas: clean up direct command handling Move direct command handling through __lbs_cmd() over to using the header as the first member of the command structure, and only define the __lbs_cmd() callback in one place rather than 3. Convert boot2 version command to new usage. Signed-off-by: Dan Williams Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index ed502b74fa3c..93ac46a05c54 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -65,13 +65,20 @@ struct rxpd { u8 reserved[3]; }; +struct cmd_header { + __le16 command; + __le16 size; + __le16 seqnum; + __le16 result; +} __attribute__ ((packed)); + struct cmd_ctrl_node { struct list_head list; /* wait for finish or not */ u16 wait_option; /* command response */ void *pdata_buf; - int (*callback)(struct lbs_private *priv, unsigned long arg, struct cmd_ds_command *resp); + int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *); unsigned long callback_arg; /* command data */ u8 *bufvirtualaddr; @@ -424,6 +431,8 @@ struct cmd_ds_802_11_monitor_mode { }; struct cmd_ds_set_boot2_ver { + struct cmd_header hdr; + __le16 action; __le16 version; }; @@ -678,7 +687,6 @@ struct cmd_ds_command { struct cmd_ds_bt_access bt; struct cmd_ds_fwt_access fwt; struct cmd_ds_mesh_access mesh; - struct cmd_ds_set_boot2_ver boot2_ver; struct cmd_ds_get_tsf gettsf; struct cmd_ds_802_11_subscribe_event subscribe_event; struct cmd_ds_802_11_beacon_control bcn_ctrl; -- cgit v1.2.3 From 6e66f03ff78b23d845920739373b1561c546b13f Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 11 Dec 2007 12:42:16 -0500 Subject: libertas: convert GET_HW_SPEC to a direct command Signed-off-by: Dan Williams Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 93ac46a05c54..a87c2174bbf3 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -119,6 +119,8 @@ struct cmd_ds_gen { * This structure defines the response for the GET_HW_SPEC command */ struct cmd_ds_get_hw_spec { + struct cmd_header hdr; + /* HW Interface version number */ __le16 hwifversion; /* HW version number */ @@ -637,7 +639,6 @@ struct cmd_ds_command { /* command Body */ union { - struct cmd_ds_get_hw_spec hwspec; struct cmd_ds_802_11_ps_mode psmode; struct cmd_ds_802_11_scan scan; struct cmd_ds_802_11_scan_rsp scanresp; -- cgit v1.2.3 From ddac452680a5164bb47d61ea54f596ddaf3aea7d Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 11 Dec 2007 13:49:39 -0500 Subject: libertas: rename and re-type bufvirtualaddr to cmdbuf Make it a struct cmd_header, since that's what it is, and clean up the places that it's used. Signed-off-by: Dan Williams Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index a87c2174bbf3..e5e2106cd5ac 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -81,7 +81,7 @@ struct cmd_ctrl_node { int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *); unsigned long callback_arg; /* command data */ - u8 *bufvirtualaddr; + struct cmd_header *cmdbuf; /* wait queue */ u16 cmdwaitqwoken; wait_queue_head_t cmdwait_q; -- cgit v1.2.3 From 301eacbf30e33f461701df91cb250d3fc24c5fe5 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Tue, 11 Dec 2007 15:23:59 -0500 Subject: libertas: convert CMD_MESH_ACCESS to a direct command Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index e5e2106cd5ac..d9b151a28801 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -623,6 +623,8 @@ struct cmd_ds_fwt_access { } __attribute__ ((packed)); struct cmd_ds_mesh_access { + struct cmd_header hdr; + __le16 action; __le32 data[32]; /* last position reserved */ } __attribute__ ((packed)); @@ -687,7 +689,6 @@ struct cmd_ds_command { struct cmd_tx_rate_query txrate; struct cmd_ds_bt_access bt; struct cmd_ds_fwt_access fwt; - struct cmd_ds_mesh_access mesh; struct cmd_ds_get_tsf gettsf; struct cmd_ds_802_11_subscribe_event subscribe_event; struct cmd_ds_802_11_beacon_control bcn_ctrl; -- cgit v1.2.3 From 8e3c91bb70372da692a5fefae9f698c94bb1e641 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 11 Dec 2007 15:50:59 -0500 Subject: libertas: convert DATA_RATE to a direct command Signed-off-by: Dan Williams Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index d9b151a28801..d51010c47b5b 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -461,6 +461,8 @@ struct PS_CMD_ConfirmSleep { }; struct cmd_ds_802_11_data_rate { + struct cmd_header hdr; + __le16 action; __le16 reserved; u8 rates[MAX_RATES]; @@ -659,7 +661,6 @@ struct cmd_ds_command { struct cmd_ds_802_11_rf_tx_power txp; struct cmd_ds_802_11_rf_antenna rant; struct cmd_ds_802_11_monitor_mode monitor; - struct cmd_ds_802_11_data_rate drate; struct cmd_ds_802_11_rate_adapt_rateset rateset; struct cmd_ds_mac_multicast_adr madr; struct cmd_ds_802_11_ad_hoc_join adj; -- cgit v1.2.3 From 2dd4b26264d48f10e802cc9f2d75542be5a3c7fa Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 11 Dec 2007 16:54:15 -0500 Subject: libertas: convert RF_CHANNEL to a direct command Signed-off-by: Dan Williams Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index d51010c47b5b..7acb65116678 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -386,11 +386,13 @@ struct cmd_ds_802_11_inactivity_timeout { }; struct cmd_ds_802_11_rf_channel { + struct cmd_header hdr; + __le16 action; - __le16 currentchannel; - __le16 rftype; - __le16 reserved; - u8 channellist[32]; + __le16 channel; + __le16 rftype; /* unused */ + __le16 reserved; /* unused */ + u8 channellist[32]; /* unused */ }; struct cmd_ds_802_11_rssi { -- cgit v1.2.3 From 23a397ac821ab0aa263bda47131bb0628e49101a Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Tue, 11 Dec 2007 18:56:42 -0500 Subject: libertas: add lbs_mesh sysfs attribute for enabling mesh Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 7acb65116678..aab5d64f32d8 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -626,6 +626,18 @@ struct cmd_ds_fwt_access { u8 prec[ETH_ALEN]; } __attribute__ ((packed)); + +struct cmd_ds_mesh_config { + struct cmd_header hdr; + + __le16 action; + __le16 channel; + __le16 type; + __le16 length; + u8 data[128]; /* last position reserved */ +} __attribute__ ((packed)); + + struct cmd_ds_mesh_access { struct cmd_header hdr; -- cgit v1.2.3 From 6ce4fd2a3a84e64a27c42aaa7de6e0e85dee3573 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Wed, 12 Dec 2007 15:19:29 -0500 Subject: libertas: add lbs_host_sleep_cfg() command function Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index aab5d64f32d8..aa4cea040143 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -540,6 +540,13 @@ struct MrvlIEtype_keyParamSet { u8 key[32]; }; +struct cmd_ds_host_sleep { + struct cmd_header hdr; + __le32 criteria; + uint8_t gpio; + uint8_t gap; +} __attribute__ ((packed)); + struct cmd_ds_802_11_key_material { __le16 action; struct MrvlIEtype_keyParamSet keyParamSet[2]; -- cgit v1.2.3 From 8e5b6b2d32304f4d6a096a6dfae23d12dc6f9287 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Fri, 14 Dec 2007 23:08:13 -0500 Subject: libertas: kill unused wait_option field in struct cmd_ctrl_node Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 2 -- 1 file changed, 2 deletions(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index aa4cea040143..1b31250fdab2 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -74,8 +74,6 @@ struct cmd_header { struct cmd_ctrl_node { struct list_head list; - /* wait for finish or not */ - u16 wait_option; /* command response */ void *pdata_buf; int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *); -- cgit v1.2.3 From 75567670c66329a111c2b4f12d6c1fc02b3b14d2 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Sat, 15 Dec 2007 02:38:17 -0500 Subject: libertas: kill pdata_buf member of struct cmd_ctrl_node We can use the callback_arg for it; that's the way we're heading anyway... Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 1 - 1 file changed, 1 deletion(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 1b31250fdab2..719da737aaf0 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -75,7 +75,6 @@ struct cmd_header { struct cmd_ctrl_node { struct list_head list; /* command response */ - void *pdata_buf; int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *); unsigned long callback_arg; /* command data */ -- cgit v1.2.3 From ae125bf8278249b8c44168c5183f551c3ed28b84 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Sat, 15 Dec 2007 04:22:52 -0500 Subject: libertas: store command result in cmdnode instead of priv->cur_cmd_retcode ... at least for users of __lbs_cmd(). Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 1 + 1 file changed, 1 insertion(+) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 719da737aaf0..ea4d484b2ba1 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -74,6 +74,7 @@ struct cmd_header { struct cmd_ctrl_node { struct list_head list; + int result; /* command response */ int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *); unsigned long callback_arg; -- cgit v1.2.3 From c6ad3738c689c2e64af2b74c1f407c9323ba40dd Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Sun, 16 Dec 2007 21:43:40 -0500 Subject: libertas: add SLEEP_PERIOD and FW_WAKE_METHOD command definitions Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index ea4d484b2ba1..b38502f8ddd9 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -439,6 +439,20 @@ struct cmd_ds_set_boot2_ver { __le16 version; }; +struct cmd_ds_802_11_fw_wake_method { + struct cmd_header hdr; + + __le16 action; + __le16 method; +}; + +struct cmd_ds_802_11_sleep_period { + struct cmd_header hdr; + + __le16 action; + __le16 period; +}; + struct cmd_ds_802_11_ps_mode { __le16 action; __le16 nullpktinterval; -- cgit v1.2.3 From a7c458906542aacdda7289bb21f527a2dc4097ca Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Mon, 17 Dec 2007 22:43:48 -0500 Subject: libertas: convert RADIO_CONTROL to a direct command Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index b38502f8ddd9..8cc4d778e46a 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -342,6 +342,8 @@ struct cmd_ds_rf_reg_access { }; struct cmd_ds_802_11_radio_control { + struct cmd_header hdr; + __le16 action; __le16 control; }; @@ -697,8 +699,6 @@ struct cmd_ds_command { struct cmd_ds_802_11_rate_adapt_rateset rateset; struct cmd_ds_mac_multicast_adr madr; struct cmd_ds_802_11_ad_hoc_join adj; - struct cmd_ds_802_11_radio_control radio; - struct cmd_ds_802_11_rf_channel rfchannel; struct cmd_ds_802_11_rssi rssi; struct cmd_ds_802_11_rssi_rsp rssirsp; struct cmd_ds_802_11_disassociate dassociate; -- cgit v1.2.3 From 6e5cc4fb35c45a8f8478d25c4e89e8d9c543056e Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Mon, 17 Dec 2007 23:04:37 -0500 Subject: libertas: convert INACTIVITY_TIMEOUT to a direct command Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 8cc4d778e46a..2ad32bc2cf24 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -378,6 +378,8 @@ struct cmd_ds_802_11_sleep_params { }; struct cmd_ds_802_11_inactivity_timeout { + struct cmd_header hdr; + /* ACT_GET/ACT_SET */ __le16 action; @@ -714,7 +716,6 @@ struct cmd_ds_command { struct cmd_ds_802_11d_domain_info domaininforesp; struct cmd_ds_802_11_sleep_params sleep_params; - struct cmd_ds_802_11_inactivity_timeout inactivity_timeout; struct cmd_ds_802_11_tpc_cfg tpccfg; struct cmd_ds_802_11_pwr_cfg pwrcfg; struct cmd_ds_802_11_afc afc; -- cgit v1.2.3 From 3fbe104cecdb8c812976fdb0cc41be65491b85ee Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Mon, 17 Dec 2007 23:48:31 -0500 Subject: libertas: convert SLEEP_PARAMS to a direct command Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 2ad32bc2cf24..855c2d0df863 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -355,6 +355,8 @@ struct cmd_ds_802_11_beacon_control { }; struct cmd_ds_802_11_sleep_params { + struct cmd_header hdr; + /* ACT_GET/ACT_SET */ __le16 action; @@ -368,10 +370,10 @@ struct cmd_ds_802_11_sleep_params { __le16 stabletime; /* control periodic calibration */ - u8 calcontrol; + uint8_t calcontrol; /* control the use of external sleep clock */ - u8 externalsleepclk; + uint8_t externalsleepclk; /* reserved field, should be set to zero */ __le16 reserved; @@ -715,7 +717,6 @@ struct cmd_ds_command { struct cmd_ds_802_11d_domain_info domaininfo; struct cmd_ds_802_11d_domain_info domaininforesp; - struct cmd_ds_802_11_sleep_params sleep_params; struct cmd_ds_802_11_tpc_cfg tpccfg; struct cmd_ds_802_11_pwr_cfg pwrcfg; struct cmd_ds_802_11_afc afc; -- cgit v1.2.3 From f70dd4515a8ad9c9d59ebb8c1d1fa2c610fb4020 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Tue, 18 Dec 2007 00:18:05 -0500 Subject: libertas: convert SET_WEP to a direct command Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 855c2d0df863..6d76634f1e14 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -256,6 +256,8 @@ struct cmd_ds_802_11_ad_hoc_result { }; struct cmd_ds_802_11_set_wep { + struct cmd_header hdr; + /* ACT_ADD, ACT_REMOVE or ACT_ENABLE */ __le16 action; @@ -263,8 +265,8 @@ struct cmd_ds_802_11_set_wep { __le16 keyindex; /* 40, 128bit or TXWEP */ - u8 keytype[4]; - u8 keymaterial[4][16]; + uint8_t keytype[4]; + uint8_t keymaterial[4][16]; }; struct cmd_ds_802_3_get_stat { @@ -688,7 +690,6 @@ struct cmd_ds_command { struct cmd_ds_mac_control macctrl; struct cmd_ds_802_11_associate associate; struct cmd_ds_802_11_deauthenticate deauth; - struct cmd_ds_802_11_set_wep wep; struct cmd_ds_802_11_ad_hoc_start ads; struct cmd_ds_802_11_reset reset; struct cmd_ds_802_11_ad_hoc_result result; -- cgit v1.2.3 From 4f59abf190b15350167bec5382dda205030ac9d0 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Tue, 18 Dec 2007 00:47:17 -0500 Subject: libertas: convert ENABLE_RSN to a direct command Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 6d76634f1e14..fffec11d0655 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -536,6 +536,8 @@ struct cmd_ds_802_11_ad_hoc_join { } __attribute__ ((packed)); struct cmd_ds_802_11_enable_rsn { + struct cmd_header hdr; + __le16 action; __le16 enable; } __attribute__ ((packed)); @@ -708,7 +710,6 @@ struct cmd_ds_command { struct cmd_ds_802_11_rssi_rsp rssirsp; struct cmd_ds_802_11_disassociate dassociate; struct cmd_ds_802_11_mac_address macadd; - struct cmd_ds_802_11_enable_rsn enbrsn; struct cmd_ds_802_11_key_material keymaterial; struct cmd_ds_mac_reg_access macreg; struct cmd_ds_bbp_reg_access bbpreg; -- cgit v1.2.3 From 5844d12ea30bacae9224db6561a16e86ad31c6e5 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Tue, 18 Dec 2007 02:01:37 -0500 Subject: libertas: convert SUBSCRIBE_EVENT to a direct command Signed-off-by: David Woodhouse Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index fffec11d0655..be325eda6a4b 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -156,6 +156,8 @@ struct cmd_ds_802_11_reset { }; struct cmd_ds_802_11_subscribe_event { + struct cmd_header hdr; + __le16 action; __le16 events; @@ -164,7 +166,7 @@ struct cmd_ds_802_11_subscribe_event { * 40 bytes. However, future firmware might add additional TLVs, so I * bump this up a bit. */ - u8 tlv[128]; + uint8_t tlv[128]; }; /* @@ -728,7 +730,6 @@ struct cmd_ds_command { struct cmd_ds_bt_access bt; struct cmd_ds_fwt_access fwt; struct cmd_ds_get_tsf gettsf; - struct cmd_ds_802_11_subscribe_event subscribe_event; struct cmd_ds_802_11_beacon_control bcn_ctrl; } params; } __attribute__ ((packed)); -- cgit v1.2.3 From dac10a9f286c75cffa75c7ec8b05d566a6ece95e Mon Sep 17 00:00:00 2001 From: Holger Schurig Date: Wed, 16 Jan 2008 15:55:22 +0100 Subject: libertas: always show firmware release Always shows the firmware release. Also converts the firmware release into something that is easily comparable. Signed-off-by: Holger Schurig Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/hostcmd.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'drivers/net/wireless/libertas/hostcmd.h') diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index be325eda6a4b..d35b015b6657 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h @@ -136,8 +136,8 @@ struct cmd_ds_get_hw_spec { /* Number of antenna used */ __le16 nr_antenna; - /* FW release number, example 1,2,3,4 = 3.2.1p4 */ - u8 fwreleasenumber[4]; + /* FW release number, example 0x01030304 = 2.3.4p1 */ + __le32 fwrelease; /* Base Address of TxPD queue */ __le32 wcb_base; -- cgit v1.2.3