diff options
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/libertas/cmd.c | 15 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/dev.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/host.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/hostcmd.h | 6 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/if_usb.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/main.c | 4 |
6 files changed, 29 insertions, 0 deletions
diff --git a/drivers/net/wireless/libertas/cmd.c b/drivers/net/wireless/libertas/cmd.c index 72e8e27a6fb..98092b99535 100644 --- a/drivers/net/wireless/libertas/cmd.c +++ b/drivers/net/wireless/libertas/cmd.c | |||
@@ -901,6 +901,17 @@ static int wlan_cmd_mesh_access(wlan_private * priv, | |||
901 | return 0; | 901 | return 0; |
902 | } | 902 | } |
903 | 903 | ||
904 | static int wlan_cmd_set_boot2_ver(wlan_private * priv, | ||
905 | struct cmd_ds_command *cmd, | ||
906 | u16 cmd_action, void *pdata_buf) | ||
907 | { | ||
908 | struct cmd_ds_set_boot2_ver *boot2_ver = &cmd->params.boot2_ver; | ||
909 | cmd->command = cpu_to_le16(CMD_SET_BOOT2_VER); | ||
910 | cmd->size = cpu_to_le16(sizeof(struct cmd_ds_set_boot2_ver) + S_DS_GEN); | ||
911 | boot2_ver->version = priv->boot2_version; | ||
912 | return 0; | ||
913 | } | ||
914 | |||
904 | void libertas_queue_cmd(wlan_adapter * adapter, struct cmd_ctrl_node *cmdnode, u8 addtail) | 915 | void libertas_queue_cmd(wlan_adapter * adapter, struct cmd_ctrl_node *cmdnode, u8 addtail) |
905 | { | 916 | { |
906 | unsigned long flags; | 917 | unsigned long flags; |
@@ -1372,6 +1383,10 @@ int libertas_prepare_and_send_command(wlan_private * priv, | |||
1372 | ret = wlan_cmd_mesh_access(priv, cmdptr, cmd_action, pdata_buf); | 1383 | ret = wlan_cmd_mesh_access(priv, cmdptr, cmd_action, pdata_buf); |
1373 | break; | 1384 | break; |
1374 | 1385 | ||
1386 | case CMD_SET_BOOT2_VER: | ||
1387 | ret = wlan_cmd_set_boot2_ver(priv, cmdptr, cmd_action, pdata_buf); | ||
1388 | break; | ||
1389 | |||
1375 | case CMD_GET_TSF: | 1390 | case CMD_GET_TSF: |
1376 | cmdptr->command = cpu_to_le16(CMD_GET_TSF); | 1391 | cmdptr->command = cpu_to_le16(CMD_GET_TSF); |
1377 | cmdptr->size = cpu_to_le16(sizeof(struct cmd_ds_get_tsf) + | 1392 | cmdptr->size = cpu_to_le16(sizeof(struct cmd_ds_get_tsf) + |
diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h index 762c4792774..a3c94d7388a 100644 --- a/drivers/net/wireless/libertas/dev.h +++ b/drivers/net/wireless/libertas/dev.h | |||
@@ -104,6 +104,7 @@ struct _wlan_private { | |||
104 | int mesh_open; | 104 | int mesh_open; |
105 | int infra_open; | 105 | int infra_open; |
106 | int mesh_autostart_enabled; | 106 | int mesh_autostart_enabled; |
107 | __le16 boot2_version; | ||
107 | 108 | ||
108 | char name[DEV_NAME_LEN]; | 109 | char name[DEV_NAME_LEN]; |
109 | 110 | ||
diff --git a/drivers/net/wireless/libertas/host.h b/drivers/net/wireless/libertas/host.h index 4ccdbf9c473..68fa11b3a2d 100644 --- a/drivers/net/wireless/libertas/host.h +++ b/drivers/net/wireless/libertas/host.h | |||
@@ -114,6 +114,8 @@ | |||
114 | 114 | ||
115 | #define CMD_MESH_ACCESS 0x009b | 115 | #define CMD_MESH_ACCESS 0x009b |
116 | 116 | ||
117 | #define CMD_SET_BOOT2_VER 0x00a5 | ||
118 | |||
117 | /* For the IEEE Power Save */ | 119 | /* For the IEEE Power Save */ |
118 | #define CMD_SUBCMD_ENTER_PS 0x0030 | 120 | #define CMD_SUBCMD_ENTER_PS 0x0030 |
119 | #define CMD_SUBCMD_EXIT_PS 0x0031 | 121 | #define CMD_SUBCMD_EXIT_PS 0x0031 |
diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 52884eaf2ed..e1045dc02cc 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h | |||
@@ -410,6 +410,11 @@ struct cmd_ds_802_11_monitor_mode { | |||
410 | u16 mode; | 410 | u16 mode; |
411 | }; | 411 | }; |
412 | 412 | ||
413 | struct cmd_ds_set_boot2_ver { | ||
414 | u16 action; | ||
415 | u16 version; | ||
416 | }; | ||
417 | |||
413 | struct cmd_ds_802_11_ps_mode { | 418 | struct cmd_ds_802_11_ps_mode { |
414 | __le16 action; | 419 | __le16 action; |
415 | __le16 nullpktinterval; | 420 | __le16 nullpktinterval; |
@@ -660,6 +665,7 @@ struct cmd_ds_command { | |||
660 | struct cmd_ds_bt_access bt; | 665 | struct cmd_ds_bt_access bt; |
661 | struct cmd_ds_fwt_access fwt; | 666 | struct cmd_ds_fwt_access fwt; |
662 | struct cmd_ds_mesh_access mesh; | 667 | struct cmd_ds_mesh_access mesh; |
668 | struct cmd_ds_set_boot2_ver boot2_ver; | ||
663 | struct cmd_ds_get_tsf gettsf; | 669 | struct cmd_ds_get_tsf gettsf; |
664 | struct cmd_ds_802_11_subscribe_event subscribe_event; | 670 | struct cmd_ds_802_11_subscribe_event subscribe_event; |
665 | } params; | 671 | } params; |
diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c index d28802fb244..53d479688ff 100644 --- a/drivers/net/wireless/libertas/if_usb.c +++ b/drivers/net/wireless/libertas/if_usb.c | |||
@@ -219,6 +219,7 @@ static int if_usb_probe(struct usb_interface *intf, | |||
219 | priv->hw_host_to_card = if_usb_host_to_card; | 219 | priv->hw_host_to_card = if_usb_host_to_card; |
220 | priv->hw_get_int_status = if_usb_get_int_status; | 220 | priv->hw_get_int_status = if_usb_get_int_status; |
221 | priv->hw_read_event_cause = if_usb_read_event_cause; | 221 | priv->hw_read_event_cause = if_usb_read_event_cause; |
222 | priv->boot2_version = udev->descriptor.bcdDevice; | ||
222 | 223 | ||
223 | if (libertas_activate_card(priv)) | 224 | if (libertas_activate_card(priv)) |
224 | goto err_activate_card; | 225 | goto err_activate_card; |
diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c index bcd845060d4..e20cd4e9ffc 100644 --- a/drivers/net/wireless/libertas/main.c +++ b/drivers/net/wireless/libertas/main.c | |||
@@ -981,6 +981,10 @@ static int wlan_setup_station_hw(wlan_private * priv) | |||
981 | priv->mesh_autostart_enabled = 0; | 981 | priv->mesh_autostart_enabled = 0; |
982 | } | 982 | } |
983 | 983 | ||
984 | /* Set the boot2 version in firmware */ | ||
985 | ret = libertas_prepare_and_send_command(priv, CMD_SET_BOOT2_VER, | ||
986 | 0, CMD_OPTION_WAITFORRSP, 0, NULL); | ||
987 | |||
984 | ret = 0; | 988 | ret = 0; |
985 | done: | 989 | done: |
986 | lbs_deb_leave_args(LBS_DEB_FW, "ret %d", ret); | 990 | lbs_deb_leave_args(LBS_DEB_FW, "ret %d", ret); |