Commit f5fe1fda authored by Dan Williams's avatar Dan Williams Committed by John W. Linville

libertas: convert adhoc operations to direct commands

with fixes for v9 and later firmware too.
Signed-off-by: default avatarDan Williams <dcbw@redhat.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent d5db2dfa
This diff is collapsed.
...@@ -12,13 +12,9 @@ struct cmd_ds_command; ...@@ -12,13 +12,9 @@ struct cmd_ds_command;
int lbs_cmd_80211_authenticate(struct lbs_private *priv, int lbs_cmd_80211_authenticate(struct lbs_private *priv,
struct cmd_ds_command *cmd, struct cmd_ds_command *cmd,
void *pdata_buf); void *pdata_buf);
int lbs_cmd_80211_ad_hoc_join(struct lbs_private *priv,
struct cmd_ds_command *cmd, int lbs_adhoc_stop(struct lbs_private *priv);
void *pdata_buf);
int lbs_cmd_80211_ad_hoc_stop(struct cmd_ds_command *cmd);
int lbs_cmd_80211_ad_hoc_start(struct lbs_private *priv,
struct cmd_ds_command *cmd,
void *pdata_buf);
int lbs_cmd_80211_deauthenticate(struct lbs_private *priv, int lbs_cmd_80211_deauthenticate(struct lbs_private *priv,
u8 bssid[ETH_ALEN], u16 reason); u8 bssid[ETH_ALEN], u16 reason);
int lbs_cmd_80211_associate(struct lbs_private *priv, int lbs_cmd_80211_associate(struct lbs_private *priv,
...@@ -27,10 +23,7 @@ int lbs_cmd_80211_associate(struct lbs_private *priv, ...@@ -27,10 +23,7 @@ int lbs_cmd_80211_associate(struct lbs_private *priv,
int lbs_ret_80211_ad_hoc_start(struct lbs_private *priv, int lbs_ret_80211_ad_hoc_start(struct lbs_private *priv,
struct cmd_ds_command *resp); struct cmd_ds_command *resp);
int lbs_ret_80211_ad_hoc_stop(struct lbs_private *priv);
int lbs_ret_80211_associate(struct lbs_private *priv, int lbs_ret_80211_associate(struct lbs_private *priv,
struct cmd_ds_command *resp); struct cmd_ds_command *resp);
int lbs_stop_adhoc_network(struct lbs_private *priv);
#endif /* _LBS_ASSOC_H */ #endif /* _LBS_ASSOC_H */
...@@ -1419,10 +1419,6 @@ int lbs_prepare_and_send_command(struct lbs_private *priv, ...@@ -1419,10 +1419,6 @@ int lbs_prepare_and_send_command(struct lbs_private *priv,
ret = lbs_cmd_80211_associate(priv, cmdptr, pdata_buf); ret = lbs_cmd_80211_associate(priv, cmdptr, pdata_buf);
break; break;
case CMD_802_11_AD_HOC_START:
ret = lbs_cmd_80211_ad_hoc_start(priv, cmdptr, pdata_buf);
break;
case CMD_802_11_RESET: case CMD_802_11_RESET:
ret = lbs_cmd_802_11_reset(cmdptr, cmd_action); ret = lbs_cmd_802_11_reset(cmdptr, cmd_action);
break; break;
...@@ -1447,18 +1443,10 @@ int lbs_prepare_and_send_command(struct lbs_private *priv, ...@@ -1447,18 +1443,10 @@ int lbs_prepare_and_send_command(struct lbs_private *priv,
cmd_action, pdata_buf); cmd_action, pdata_buf);
break; break;
case CMD_802_11_AD_HOC_JOIN:
ret = lbs_cmd_80211_ad_hoc_join(priv, cmdptr, pdata_buf);
break;
case CMD_802_11_RSSI: case CMD_802_11_RSSI:
ret = lbs_cmd_802_11_rssi(priv, cmdptr); ret = lbs_cmd_802_11_rssi(priv, cmdptr);
break; break;
case CMD_802_11_AD_HOC_STOP:
ret = lbs_cmd_80211_ad_hoc_stop(cmdptr);
break;
case CMD_802_11_SET_AFC: case CMD_802_11_SET_AFC:
case CMD_802_11_GET_AFC: case CMD_802_11_GET_AFC:
......
...@@ -258,11 +258,6 @@ static inline int handle_cmd_response(struct lbs_private *priv, ...@@ -258,11 +258,6 @@ static inline int handle_cmd_response(struct lbs_private *priv,
ret = lbs_ret_80211_associate(priv, resp); ret = lbs_ret_80211_associate(priv, resp);
break; break;
case CMD_RET(CMD_802_11_AD_HOC_START):
case CMD_RET(CMD_802_11_AD_HOC_JOIN):
ret = lbs_ret_80211_ad_hoc_start(priv, resp);
break;
case CMD_RET(CMD_802_11_SNMP_MIB): case CMD_RET(CMD_802_11_SNMP_MIB):
ret = lbs_ret_802_11_snmp_mib(priv, resp); ret = lbs_ret_802_11_snmp_mib(priv, resp);
break; break;
...@@ -285,10 +280,6 @@ static inline int handle_cmd_response(struct lbs_private *priv, ...@@ -285,10 +280,6 @@ static inline int handle_cmd_response(struct lbs_private *priv,
ret = lbs_ret_802_11_rssi(priv, resp); ret = lbs_ret_802_11_rssi(priv, resp);
break; break;
case CMD_RET(CMD_802_11_AD_HOC_STOP):
ret = lbs_ret_80211_ad_hoc_stop(priv);
break;
case CMD_RET(CMD_802_11D_DOMAIN_INFO): case CMD_RET(CMD_802_11D_DOMAIN_INFO):
ret = lbs_ret_802_11d_domain_info(resp); ret = lbs_ret_802_11d_domain_info(resp);
break; break;
......
...@@ -257,11 +257,6 @@ struct cmd_ds_802_11_associate_rsp { ...@@ -257,11 +257,6 @@ struct cmd_ds_802_11_associate_rsp {
struct ieeetypes_assocrsp assocRsp; struct ieeetypes_assocrsp assocRsp;
}; };
struct cmd_ds_802_11_ad_hoc_result {
u8 pad[3];
u8 bssid[ETH_ALEN];
};
struct cmd_ds_802_11_set_wep { struct cmd_ds_802_11_set_wep {
struct cmd_header hdr; struct cmd_header hdr;
...@@ -508,10 +503,12 @@ struct cmd_ds_802_11_rate_adapt_rateset { ...@@ -508,10 +503,12 @@ struct cmd_ds_802_11_rate_adapt_rateset {
}; };
struct cmd_ds_802_11_ad_hoc_start { struct cmd_ds_802_11_ad_hoc_start {
struct cmd_header hdr;
u8 ssid[IW_ESSID_MAX_SIZE]; u8 ssid[IW_ESSID_MAX_SIZE];
u8 bsstype; u8 bsstype;
__le16 beaconperiod; __le16 beaconperiod;
u8 dtimperiod; u8 dtimperiod; /* Reserved on v9 and later */
union IEEEtypes_ssparamset ssparamset; union IEEEtypes_ssparamset ssparamset;
union ieeetypes_phyparamset phyparamset; union ieeetypes_phyparamset phyparamset;
__le16 probedelay; __le16 probedelay;
...@@ -520,9 +517,16 @@ struct cmd_ds_802_11_ad_hoc_start { ...@@ -520,9 +517,16 @@ struct cmd_ds_802_11_ad_hoc_start {
u8 tlv_memory_size_pad[100]; u8 tlv_memory_size_pad[100];
} __attribute__ ((packed)); } __attribute__ ((packed));
struct cmd_ds_802_11_ad_hoc_result {
struct cmd_header hdr;
u8 pad[3];
u8 bssid[ETH_ALEN];
};
struct adhoc_bssdesc { struct adhoc_bssdesc {
u8 bssid[6]; u8 bssid[ETH_ALEN];
u8 ssid[32]; u8 ssid[IW_ESSID_MAX_SIZE];
u8 type; u8 type;
__le16 beaconperiod; __le16 beaconperiod;
u8 dtimperiod; u8 dtimperiod;
...@@ -540,10 +544,15 @@ struct adhoc_bssdesc { ...@@ -540,10 +544,15 @@ struct adhoc_bssdesc {
} __attribute__ ((packed)); } __attribute__ ((packed));
struct cmd_ds_802_11_ad_hoc_join { struct cmd_ds_802_11_ad_hoc_join {
struct cmd_header hdr;
struct adhoc_bssdesc bss; struct adhoc_bssdesc bss;
__le16 failtimeout; __le16 failtimeout; /* Reserved on v9 and later */
__le16 probedelay; __le16 probedelay; /* Reserved on v9 and later */
} __attribute__ ((packed));
struct cmd_ds_802_11_ad_hoc_stop {
struct cmd_header hdr;
} __attribute__ ((packed)); } __attribute__ ((packed));
struct cmd_ds_802_11_enable_rsn { struct cmd_ds_802_11_enable_rsn {
...@@ -694,16 +703,13 @@ struct cmd_ds_command { ...@@ -694,16 +703,13 @@ struct cmd_ds_command {
union { union {
struct cmd_ds_802_11_ps_mode psmode; struct cmd_ds_802_11_ps_mode psmode;
struct cmd_ds_802_11_associate associate; struct cmd_ds_802_11_associate associate;
struct cmd_ds_802_11_ad_hoc_start ads;
struct cmd_ds_802_11_reset reset; struct cmd_ds_802_11_reset reset;
struct cmd_ds_802_11_ad_hoc_result result;
struct cmd_ds_802_11_authenticate auth; struct cmd_ds_802_11_authenticate auth;
struct cmd_ds_802_11_get_stat gstat; struct cmd_ds_802_11_get_stat gstat;
struct cmd_ds_802_3_get_stat gstat_8023; struct cmd_ds_802_3_get_stat gstat_8023;
struct cmd_ds_802_11_snmp_mib smib; struct cmd_ds_802_11_snmp_mib smib;
struct cmd_ds_802_11_rf_antenna rant; struct cmd_ds_802_11_rf_antenna rant;
struct cmd_ds_802_11_monitor_mode monitor; struct cmd_ds_802_11_monitor_mode monitor;
struct cmd_ds_802_11_ad_hoc_join adj;
struct cmd_ds_802_11_rssi rssi; struct cmd_ds_802_11_rssi rssi;
struct cmd_ds_802_11_rssi_rsp rssirsp; struct cmd_ds_802_11_rssi_rsp rssirsp;
struct cmd_ds_mac_reg_access macreg; struct cmd_ds_mac_reg_access macreg;
......
...@@ -295,7 +295,7 @@ static ssize_t lbs_rtap_set(struct device *dev, ...@@ -295,7 +295,7 @@ static ssize_t lbs_rtap_set(struct device *dev,
priv->curbssparams.bssid, priv->curbssparams.bssid,
WLAN_REASON_DEAUTH_LEAVING); WLAN_REASON_DEAUTH_LEAVING);
else if (priv->mode == IW_MODE_ADHOC) else if (priv->mode == IW_MODE_ADHOC)
lbs_stop_adhoc_network(priv); lbs_adhoc_stop(priv);
lbs_add_rtap(priv); lbs_add_rtap(priv);
} }
priv->monitormode = monitor_mode; priv->monitormode = monitor_mode;
......
...@@ -966,7 +966,7 @@ static int lbs_mesh_set_freq(struct net_device *dev, ...@@ -966,7 +966,7 @@ static int lbs_mesh_set_freq(struct net_device *dev,
priv->curbssparams.bssid, priv->curbssparams.bssid,
WLAN_REASON_DEAUTH_LEAVING); WLAN_REASON_DEAUTH_LEAVING);
else if (priv->mode == IW_MODE_ADHOC) else if (priv->mode == IW_MODE_ADHOC)
lbs_stop_adhoc_network(priv); lbs_adhoc_stop(priv);
} }
lbs_mesh_config(priv, CMD_ACT_MESH_CONFIG_START, fwrq->m); lbs_mesh_config(priv, CMD_ACT_MESH_CONFIG_START, fwrq->m);
lbs_update_channel(priv); lbs_update_channel(priv);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment