]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/wireless/libertas/cmd.c
[PATCH] libertas: bump driver version
[linux-2.6-omap-h63xx.git] / drivers / net / wireless / libertas / cmd.c
index 276d981e7d3dcbc27cc69e0edcde57b97596c37c..98092b99535216e9174d097613ad66a5457c3807 100644 (file)
@@ -71,7 +71,7 @@ static int wlan_cmd_802_11_ps_mode(wlan_private * priv,
                psm->locallisteninterval = 0;
                psm->nullpktinterval = 0;
                psm->multipledtim =
-                   cpu_to_le16(priv->adapter->multipledtim);
+                   cpu_to_le16(MRVDRV_DEFAULT_MULTIPLE_DTIM);
                break;
 
        case CMD_SUBCMD_EXIT_PS:
@@ -181,15 +181,13 @@ static int wlan_cmd_802_11_set_wep(wlan_private * priv,
 
                        switch (pkey->len) {
                        case KEY_LEN_WEP_40:
-                               wep->keytype[i] =
-                                       cpu_to_le16(CMD_TYPE_WEP_40_BIT);
+                               wep->keytype[i] = (u8)CMD_TYPE_WEP_40_BIT;
                                memmove(&wep->keymaterial[i], pkey->key,
                                        pkey->len);
                                lbs_deb_cmd("SET_WEP: add key %d (40 bit)\n", i);
                                break;
                        case KEY_LEN_WEP_104:
-                               wep->keytype[i] =
-                                       cpu_to_le16(CMD_TYPE_WEP_104_BIT);
+                               wep->keytype[i] = (u8)CMD_TYPE_WEP_104_BIT;
                                memmove(&wep->keymaterial[i], pkey->key,
                                        pkey->len);
                                lbs_deb_cmd("SET_WEP: add key %d (104 bit)\n", i);
@@ -565,6 +563,26 @@ static int wlan_cmd_802_11_rf_tx_power(wlan_private * priv,
        return 0;
 }
 
+static int wlan_cmd_802_11_monitor_mode(wlan_private * priv,
+                                     struct cmd_ds_command *cmd,
+                                     u16 cmd_action, void *pdata_buf)
+{
+       struct cmd_ds_802_11_monitor_mode *monitor = &cmd->params.monitor;
+
+       cmd->command = cpu_to_le16(CMD_802_11_MONITOR_MODE);
+       cmd->size =
+           cpu_to_le16(sizeof(struct cmd_ds_802_11_monitor_mode) +
+                            S_DS_GEN);
+
+       monitor->action = cpu_to_le16(cmd_action);
+       if (cmd_action == CMD_ACT_SET) {
+               monitor->mode =
+                   cpu_to_le16((u16) (*(u32 *) pdata_buf));
+       }
+
+       return 0;
+}
+
 static int wlan_cmd_802_11_rate_adapt_rateset(wlan_private * priv,
                                              struct cmd_ds_command *cmd,
                                              u16 cmd_action)
@@ -883,6 +901,17 @@ static int wlan_cmd_mesh_access(wlan_private * priv,
        return 0;
 }
 
+static int wlan_cmd_set_boot2_ver(wlan_private * priv,
+                               struct cmd_ds_command *cmd,
+                               u16 cmd_action, void *pdata_buf)
+{
+       struct cmd_ds_set_boot2_ver *boot2_ver = &cmd->params.boot2_ver;
+       cmd->command = cpu_to_le16(CMD_SET_BOOT2_VER);
+       cmd->size = cpu_to_le16(sizeof(struct cmd_ds_set_boot2_ver) + S_DS_GEN);
+       boot2_ver->version = priv->boot2_version;
+       return 0;
+}
+
 void libertas_queue_cmd(wlan_adapter * adapter, struct cmd_ctrl_node *cmdnode, u8 addtail)
 {
        unsigned long flags;
@@ -940,7 +969,7 @@ static int DownloadcommandToStation(wlan_private * priv,
        unsigned long flags;
        struct cmd_ds_command *cmdptr;
        wlan_adapter *adapter = priv->adapter;
-       int ret = 0;
+       int ret = -1;
        u16 cmdsize;
        u16 command;
 
@@ -948,12 +977,6 @@ static int DownloadcommandToStation(wlan_private * priv,
 
        if (!adapter || !cmdnode) {
                lbs_deb_host("DNLD_CMD: adapter or cmdmode is NULL\n");
-               if (cmdnode) {
-                       spin_lock_irqsave(&adapter->driver_lock, flags);
-                       __libertas_cleanup_and_insert_cmd(priv, cmdnode);
-                       spin_unlock_irqrestore(&adapter->driver_lock, flags);
-               }
-               ret = -1;
                goto done;
        }
 
@@ -964,7 +987,6 @@ static int DownloadcommandToStation(wlan_private * priv,
                lbs_deb_host("DNLD_CMD: cmdptr is NULL or zero\n");
                __libertas_cleanup_and_insert_cmd(priv, cmdnode);
                spin_unlock_irqrestore(&adapter->driver_lock, flags);
-               ret = -1;
                goto done;
        }
 
@@ -990,7 +1012,6 @@ static int DownloadcommandToStation(wlan_private * priv,
                __libertas_cleanup_and_insert_cmd(priv, adapter->cur_cmd);
                adapter->cur_cmd = NULL;
                spin_unlock_irqrestore(&adapter->driver_lock, flags);
-               ret = -1;
                goto done;
        }
 
@@ -1239,6 +1260,11 @@ int libertas_prepare_and_send_command(wlan_private * priv,
                ret = wlan_cmd_mac_multicast_adr(priv, cmdptr, cmd_action);
                break;
 
+       case CMD_802_11_MONITOR_MODE:
+               ret = wlan_cmd_802_11_monitor_mode(priv, cmdptr,
+                                         cmd_action, pdata_buf);
+               break;
+
        case CMD_802_11_AD_HOC_JOIN:
                ret = libertas_cmd_80211_ad_hoc_join(priv, cmdptr, pdata_buf);
                break;
@@ -1357,6 +1383,10 @@ int libertas_prepare_and_send_command(wlan_private * priv,
                ret = wlan_cmd_mesh_access(priv, cmdptr, cmd_action, pdata_buf);
                break;
 
+       case CMD_SET_BOOT2_VER:
+               ret = wlan_cmd_set_boot2_ver(priv, cmdptr, cmd_action, pdata_buf);
+               break;
+
        case CMD_GET_TSF:
                cmdptr->command = cpu_to_le16(CMD_GET_TSF);
                cmdptr->size = cpu_to_le16(sizeof(struct cmd_ds_get_tsf) +