aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945.c10
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.c7
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000.c8
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-6000.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h13
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h1
6 files changed, 40 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 9a0fb80023ab..fb08295417f0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -2954,6 +2954,15 @@ static struct iwl_lib_ops iwl3945_lib = {
2954 .post_associate = iwl3945_post_associate, 2954 .post_associate = iwl3945_post_associate,
2955}; 2955};
2956 2956
2957static struct iwl_station_mgmt_ops iwl3945_station_mgmt = {
2958 .add_station = iwl3945_add_station,
2959#if 0
2960 .remove_station = iwl3945_remove_station,
2961#endif
2962 .find_station = iwl3945_hw_find_station,
2963 .clear_station_table = iwl3945_clear_stations_table,
2964};
2965
2957static struct iwl_hcmd_utils_ops iwl3945_hcmd_utils = { 2966static struct iwl_hcmd_utils_ops iwl3945_hcmd_utils = {
2958 .get_hcmd_size = iwl3945_get_hcmd_size, 2967 .get_hcmd_size = iwl3945_get_hcmd_size,
2959 .build_addsta_hcmd = iwl3945_build_addsta_hcmd, 2968 .build_addsta_hcmd = iwl3945_build_addsta_hcmd,
@@ -2963,6 +2972,7 @@ static struct iwl_ops iwl3945_ops = {
2963 .lib = &iwl3945_lib, 2972 .lib = &iwl3945_lib,
2964 .hcmd = &iwl3945_hcmd, 2973 .hcmd = &iwl3945_hcmd,
2965 .utils = &iwl3945_hcmd_utils, 2974 .utils = &iwl3945_hcmd_utils,
2975 .smgmt = &iwl3945_station_mgmt,
2966}; 2976};
2967 2977
2968static struct iwl_cfg iwl3945_bg_cfg = { 2978static struct iwl_cfg iwl3945_bg_cfg = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index 053e42091124..e3d1e30e62b5 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -2268,6 +2268,12 @@ static void iwl4965_cancel_deferred_work(struct iwl_priv *priv)
2268 cancel_work_sync(&priv->txpower_work); 2268 cancel_work_sync(&priv->txpower_work);
2269} 2269}
2270 2270
2271static struct iwl_station_mgmt_ops iwl4965_station_mgmt = {
2272 .add_station_ht = iwl_add_station_flags,
2273 .remove_station = iwl_remove_station,
2274 .find_station = iwl_find_station,
2275 .clear_station_table = iwl_clear_stations_table,
2276};
2271 2277
2272static struct iwl_hcmd_ops iwl4965_hcmd = { 2278static struct iwl_hcmd_ops iwl4965_hcmd = {
2273 .rxon_assoc = iwl4965_send_rxon_assoc, 2279 .rxon_assoc = iwl4965_send_rxon_assoc,
@@ -2332,6 +2338,7 @@ static struct iwl_ops iwl4965_ops = {
2332 .lib = &iwl4965_lib, 2338 .lib = &iwl4965_lib,
2333 .hcmd = &iwl4965_hcmd, 2339 .hcmd = &iwl4965_hcmd,
2334 .utils = &iwl4965_hcmd_utils, 2340 .utils = &iwl4965_hcmd_utils,
2341 .smgmt = &iwl4965_station_mgmt,
2335}; 2342};
2336 2343
2337struct iwl_cfg iwl4965_agn_cfg = { 2344struct iwl_cfg iwl4965_agn_cfg = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index 410cba221610..1344943a5f36 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -1472,6 +1472,13 @@ int iwl5000_calc_rssi(struct iwl_priv *priv,
1472 return max_rssi - agc - IWL49_RSSI_OFFSET; 1472 return max_rssi - agc - IWL49_RSSI_OFFSET;
1473} 1473}
1474 1474
1475struct iwl_station_mgmt_ops iwl5000_station_mgmt = {
1476 .add_station_ht = iwl_add_station_flags,
1477 .remove_station = iwl_remove_station,
1478 .find_station = iwl_find_station,
1479 .clear_station_table = iwl_clear_stations_table,
1480};
1481
1475struct iwl_hcmd_ops iwl5000_hcmd = { 1482struct iwl_hcmd_ops iwl5000_hcmd = {
1476 .rxon_assoc = iwl5000_send_rxon_assoc, 1483 .rxon_assoc = iwl5000_send_rxon_assoc,
1477 .commit_rxon = iwl_commit_rxon, 1484 .commit_rxon = iwl_commit_rxon,
@@ -1535,6 +1542,7 @@ struct iwl_ops iwl5000_ops = {
1535 .lib = &iwl5000_lib, 1542 .lib = &iwl5000_lib,
1536 .hcmd = &iwl5000_hcmd, 1543 .hcmd = &iwl5000_hcmd,
1537 .utils = &iwl5000_hcmd_utils, 1544 .utils = &iwl5000_hcmd_utils,
1545 .smgmt = &iwl5000_station_mgmt,
1538}; 1546};
1539 1547
1540struct iwl_mod_params iwl50_mod_params = { 1548struct iwl_mod_params iwl50_mod_params = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index edfa5e149f71..ee271d7f6120 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -72,6 +72,7 @@ static struct iwl_ops iwl6000_ops = {
72 .lib = &iwl5000_lib, 72 .lib = &iwl5000_lib,
73 .hcmd = &iwl5000_hcmd, 73 .hcmd = &iwl5000_hcmd,
74 .utils = &iwl6000_hcmd_utils, 74 .utils = &iwl6000_hcmd_utils,
75 .smgmt = &iwl5000_station_mgmt,
75}; 76};
76 77
77struct iwl_cfg iwl6000_2ag_cfg = { 78struct iwl_cfg iwl6000_2ag_cfg = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index c7e05953cb75..8b7f5bd2c8e3 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -83,10 +83,22 @@ struct iwl_cmd;
83#define IWL_SKU_A 0x2 83#define IWL_SKU_A 0x2
84#define IWL_SKU_N 0x8 84#define IWL_SKU_N 0x8
85 85
86struct iwl_station_mgmt_ops {
87 u8 (*add_station_ht)(struct iwl_priv *priv, const u8 *addr,
88 int is_ap, u8 flags, struct ieee80211_sta_ht_cap *ht_info);
89 u8 (*add_station)(struct iwl_priv *priv, const u8 *addr,
90 int is_ap, u8 flags);
91 int (*remove_station)(struct iwl_priv *priv, const u8 *addr,
92 int is_ap);
93 u8 (*find_station)(struct iwl_priv *priv, const u8 *addr);
94 void (*clear_station_table)(struct iwl_priv *priv);
95};
96
86struct iwl_hcmd_ops { 97struct iwl_hcmd_ops {
87 int (*rxon_assoc)(struct iwl_priv *priv); 98 int (*rxon_assoc)(struct iwl_priv *priv);
88 int (*commit_rxon)(struct iwl_priv *priv); 99 int (*commit_rxon)(struct iwl_priv *priv);
89}; 100};
101
90struct iwl_hcmd_utils_ops { 102struct iwl_hcmd_utils_ops {
91 u16 (*get_hcmd_size)(u8 cmd_id, u16 len); 103 u16 (*get_hcmd_size)(u8 cmd_id, u16 len);
92 u16 (*build_addsta_hcmd)(const struct iwl_addsta_cmd *cmd, u8 *data); 104 u16 (*build_addsta_hcmd)(const struct iwl_addsta_cmd *cmd, u8 *data);
@@ -160,6 +172,7 @@ struct iwl_ops {
160 const struct iwl_lib_ops *lib; 172 const struct iwl_lib_ops *lib;
161 const struct iwl_hcmd_ops *hcmd; 173 const struct iwl_hcmd_ops *hcmd;
162 const struct iwl_hcmd_utils_ops *utils; 174 const struct iwl_hcmd_utils_ops *utils;
175 const struct iwl_station_mgmt_ops *smgmt;
163}; 176};
164 177
165struct iwl_mod_params { 178struct iwl_mod_params {
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index ec9a13846edd..59930f398f31 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -70,6 +70,7 @@ extern struct iwl_ops iwl5000_ops;
70extern struct iwl_lib_ops iwl5000_lib; 70extern struct iwl_lib_ops iwl5000_lib;
71extern struct iwl_hcmd_ops iwl5000_hcmd; 71extern struct iwl_hcmd_ops iwl5000_hcmd;
72extern struct iwl_hcmd_utils_ops iwl5000_hcmd_utils; 72extern struct iwl_hcmd_utils_ops iwl5000_hcmd_utils;
73extern struct iwl_station_mgmt_ops iwl5000_station_mgmt;
73 74
74/* shared functions from iwl-5000.c */ 75/* shared functions from iwl-5000.c */
75extern u16 iwl5000_get_hcmd_size(u8 cmd_id, u16 len); 76extern u16 iwl5000_get_hcmd_size(u8 cmd_id, u16 len);