[NET]: Introduce and use print_mac() and DECLARE_MAC_BUF()
[deliverable/linux.git] / drivers / net / wireless / libertas / cmdresp.c
index 197d0451784056a873ed5fe0a79725b0608112f8..fe70e30b1f3cfc6a94a6f8a309ff42bcca033c75 100644 (file)
@@ -60,23 +60,13 @@ void libertas_mac_event_disconnected(wlan_private * priv)
        memset(adapter->rawNF, 0x00, sizeof(adapter->rawNF));
        adapter->nextSNRNF = 0;
        adapter->numSNRNF = 0;
-       adapter->rxpd_rate = 0;
        lbs_deb_cmd("current SSID '%s', length %u\n",
                    escape_essid(adapter->curbssparams.ssid,
                                 adapter->curbssparams.ssid_len),
                    adapter->curbssparams.ssid_len);
-       lbs_deb_cmd("previous SSID '%s', length %u\n",
-                   escape_essid(adapter->prev_ssid, adapter->prev_ssid_len),
-                   adapter->prev_ssid_len);
 
        adapter->connect_status = LIBERTAS_DISCONNECTED;
 
-       /* Save previous SSID and BSSID for possible reassociation */
-       memcpy(&adapter->prev_ssid, &adapter->curbssparams.ssid,
-              IW_ESSID_MAX_SIZE);
-       adapter->prev_ssid_len = adapter->curbssparams.ssid_len;
-       memcpy(adapter->prev_bssid, adapter->curbssparams.bssid, ETH_ALEN);
-
        /* Clear out associated SSID and BSSID since connection is
         * no longer valid.
         */
@@ -169,6 +159,7 @@ static int wlan_ret_get_hw_spec(wlan_private * priv,
        struct cmd_ds_get_hw_spec *hwspec = &resp->params.hwspec;
        wlan_adapter *adapter = priv->adapter;
        int ret = 0;
+       DECLARE_MAC_BUF(mac);
 
        lbs_deb_enter(LBS_DEB_CMD);
 
@@ -179,17 +170,20 @@ static int wlan_ret_get_hw_spec(wlan_private * priv,
        lbs_deb_cmd("GET_HW_SPEC: firmware release %u.%u.%up%u\n",
                    adapter->fwreleasenumber[2], adapter->fwreleasenumber[1],
                    adapter->fwreleasenumber[0], adapter->fwreleasenumber[3]);
-       lbs_deb_cmd("GET_HW_SPEC: MAC addr " MAC_FMT "\n",
-              MAC_ARG(hwspec->permanentaddr));
+       lbs_deb_cmd("GET_HW_SPEC: MAC addr %s\n",
+                   print_mac(mac, hwspec->permanentaddr));
        lbs_deb_cmd("GET_HW_SPEC: hardware interface 0x%x, hardware spec 0x%04x\n",
               hwspec->hwifversion, hwspec->version);
 
-       adapter->regioncode = le16_to_cpu(hwspec->regioncode);
+       /* Clamp region code to 8-bit since FW spec indicates that it should
+        * only ever be 8-bit, even though the field size is 16-bit.  Some firmware
+        * returns non-zero high 8 bits here.
+        */
+       adapter->regioncode = le16_to_cpu(hwspec->regioncode) & 0xFF;
 
        for (i = 0; i < MRVDRV_MAX_REGION_CODE; i++) {
                /* use the region code to search for the index */
                if (adapter->regioncode == libertas_region_code_to_index[i]) {
-                       adapter->regiontableindex = (u16) i;
                        break;
                }
        }
@@ -197,7 +191,6 @@ static int wlan_ret_get_hw_spec(wlan_private * priv,
        /* if it's unidentified region code, use the default (USA) */
        if (i >= MRVDRV_MAX_REGION_CODE) {
                adapter->regioncode = 0x10;
-               adapter->regiontableindex = 0;
                lbs_pr_info("unidentified region code; using the default (USA)\n");
        }
 
@@ -392,27 +385,6 @@ static int wlan_ret_802_11_rf_tx_power(wlan_private * priv,
        return 0;
 }
 
-static int wlan_ret_802_11_rf_antenna(wlan_private * priv,
-                                     struct cmd_ds_command *resp)
-{
-       struct cmd_ds_802_11_rf_antenna *pAntenna = &resp->params.rant;
-       wlan_adapter *adapter = priv->adapter;
-       u16 action = le16_to_cpu(pAntenna->action);
-
-       lbs_deb_enter(LBS_DEB_CMD);
-       if (action == CMD_ACT_GET_RX)
-               adapter->rxantennamode = le16_to_cpu(pAntenna->antennamode);
-
-       if (action == CMD_ACT_GET_TX)
-               adapter->txantennamode = le16_to_cpu(pAntenna->antennamode);
-
-       lbs_deb_cmd("RF_ANT_RESP: action 0x%x, mode 0x%04x\n",
-              action, le16_to_cpu(pAntenna->antennamode));
-
-       lbs_deb_leave(LBS_DEB_CMD);
-       return 0;
-}
-
 static int wlan_ret_802_11_rate_adapt_rateset(wlan_private * priv,
                                              struct cmd_ds_command *resp)
 {
@@ -629,9 +601,6 @@ static inline int handle_cmd_response(u16 respcmd,
                spin_unlock_irqrestore(&adapter->driver_lock, flags);
 
                break;
-       case CMD_RET(CMD_802_11_RF_ANTENNA):
-               ret = wlan_ret_802_11_rf_antenna(priv, resp);
-               break;
 
        case CMD_RET(CMD_MAC_MULTICAST_ADR):
        case CMD_RET(CMD_MAC_CONTROL):
@@ -735,9 +704,6 @@ static inline int handle_cmd_response(u16 respcmd,
                        memcpy(adapter->cur_cmd->pdata_buf, &resp->params.mesh,
                               sizeof(resp->params.mesh));
                break;
-       case CMD_RET(CMD_802_11_TX_RATE_QUERY):
-               priv->adapter->txrate = resp->params.txrate.txrate;
-               break;
        default:
                lbs_deb_host("CMD_RESP: unknown cmd response 0x%04x\n",
                            resp->command);
@@ -851,8 +817,8 @@ int libertas_process_rx_command(wlan_private * priv)
 
        if (adapter->cur_cmd->cmdflags & CMD_F_HOSTCMD) {
                /* Copy the response back to response buffer */
-               memcpy(adapter->cur_cmd->pdata_buf, resp, resp->size);
-
+               memcpy(adapter->cur_cmd->pdata_buf, resp,
+                      le16_to_cpu(resp->size));
                adapter->cur_cmd->cmdflags &= ~CMD_F_HOSTCMD;
        }
 
@@ -906,12 +872,12 @@ int libertas_process_event(wlan_private * priv)
        wlan_adapter *adapter = priv->adapter;
        u32 eventcause;
 
+       lbs_deb_enter(LBS_DEB_CMD);
+
        spin_lock_irq(&adapter->driver_lock);
        eventcause = adapter->eventcause;
        spin_unlock_irq(&adapter->driver_lock);
 
-       lbs_deb_enter(LBS_DEB_CMD);
-
        lbs_deb_cmd("event cause 0x%x\n", eventcause);
 
        switch (eventcause >> SBI_EVENT_CAUSE_SHIFT) {
@@ -1007,13 +973,18 @@ int libertas_process_event(wlan_private * priv)
                break;
 
        case MACREG_INT_CODE_MESH_AUTO_STARTED:
-               lbs_pr_alert("EVENT: MESH_AUTO_STARTED\n");
-               adapter->connect_status = LIBERTAS_CONNECTED ;
+               /* Ignore spurious autostart events if autostart is disabled */
+               if (!priv->mesh_autostart_enabled) {
+                       lbs_pr_info("EVENT: MESH_AUTO_STARTED (ignoring)\n");
+                       break;
+               }
+               lbs_pr_info("EVENT: MESH_AUTO_STARTED\n");
+               adapter->connect_status = LIBERTAS_CONNECTED;
                if (priv->mesh_open == 1) {
-                       netif_wake_queue(priv->mesh_dev) ;
-                       netif_carrier_on(priv->mesh_dev) ;
+                       netif_wake_queue(priv->mesh_dev);
+                       netif_carrier_on(priv->mesh_dev);
                }
-               adapter->mode = IW_MODE_ADHOC ;
+               adapter->mode = IW_MODE_ADHOC;
                schedule_work(&priv->sync_channel);
                break;
 
@@ -1027,6 +998,6 @@ int libertas_process_event(wlan_private * priv)
        adapter->eventcause = 0;
        spin_unlock_irq(&adapter->driver_lock);
 
-       lbs_deb_enter_args(LBS_DEB_CMD, "ret %d", ret);
+       lbs_deb_leave_args(LBS_DEB_CMD, "ret %d", ret);
        return ret;
 }
This page took 0.030546 seconds and 5 git commands to generate.