aboutsummaryrefslogtreecommitdiff
path: root/scripts/basic/Makefile
diff options
context:
space:
mode:
authorJim Faulkner <jfaulkne@ccs.neu.edu>2012-05-01 21:58:08 -0400
committerMatt Turner <mattst88@gmail.com>2012-05-02 15:54:06 -0400
commit8fa196478b8fb30e59456252ab4b309985f67443 (patch)
tree7bedb3d862227bffdeb8c2a016abb3894b2493d5 /scripts/basic/Makefile
parentf8eafb5f1a7af1281fef93fd47c9bfe0d68c8652 (diff)
alpha: include module.h to fix modpost on Tsunami
Signed-off-by: Jim Faulkner <jfaulkne@ccs.neu.edu> Signed-off-by: Matt Turner <mattst88@gmail.com>
Diffstat (limited to 'scripts/basic/Makefile')
0 files changed, 0 insertions, 0 deletions
L_L, 0xffffffff); carl9170_regwrite(AR9170_MAC_REG_GROUP_HASH_TBL_H, 0xffffffff); /* disable PRETBTT interrupt */ carl9170_regwrite(AR9170_MAC_REG_PRETBTT, 0x0); carl9170_regwrite(AR9170_MAC_REG_BCN_PERIOD, 0x0); carl9170_regwrite_finish(); return carl9170_regwrite_result(); } static int carl9170_set_mac_reg(struct ar9170 *ar, const u32 reg, const u8 *mac) { static const u8 zero[ETH_ALEN] = { 0 }; if (!mac) mac = zero; carl9170_regwrite_begin(ar); carl9170_regwrite(reg, get_unaligned_le32(mac)); carl9170_regwrite(reg + 4, get_unaligned_le16(mac + 4)); carl9170_regwrite_finish(); return carl9170_regwrite_result(); } int carl9170_mod_virtual_mac(struct ar9170 *ar, const unsigned int id, const u8 *mac) { if (WARN_ON(id >= ar->fw.vif_num)) return -EINVAL; return carl9170_set_mac_reg(ar, AR9170_MAC_REG_ACK_TABLE + (id - 1) * 8, mac); } int carl9170_update_multicast(struct ar9170 *ar, const u64 mc_hash) { int err; carl9170_regwrite_begin(ar); carl9170_regwrite(AR9170_MAC_REG_GROUP_HASH_TBL_H, mc_hash >> 32); carl9170_regwrite(AR9170_MAC_REG_GROUP_HASH_TBL_L, mc_hash); carl9170_regwrite_finish(); err = carl9170_regwrite_result(); if (err) return err; ar->cur_mc_hash = mc_hash; return 0; } int carl9170_set_operating_mode(struct ar9170 *ar) { struct ieee80211_vif *vif; struct ath_common *common = &ar->common; u8 *mac_addr, *bssid; u32 cam_mode = AR9170_MAC_CAM_DEFAULTS; u32 enc_mode = AR9170_MAC_ENCRYPTION_DEFAULTS | AR9170_MAC_ENCRYPTION_MGMT_RX_SOFTWARE; u32 rx_ctrl = AR9170_MAC_RX_CTRL_DEAGG | AR9170_MAC_RX_CTRL_SHORT_FILTER; u32 sniffer = AR9170_MAC_SNIFFER_DEFAULTS; int err = 0; rcu_read_lock(); vif = carl9170_get_main_vif(ar); if (vif) { mac_addr = common->macaddr; bssid = common->curbssid; switch (vif->type) { case NL80211_IFTYPE_ADHOC: cam_mode |= AR9170_MAC_CAM_IBSS; break; case NL80211_IFTYPE_MESH_POINT: case NL80211_IFTYPE_AP: cam_mode |= AR9170_MAC_CAM_AP; /* iwlagn 802.11n STA Workaround */ rx_ctrl |= AR9170_MAC_RX_CTRL_PASS_TO_HOST; break; case NL80211_IFTYPE_WDS: cam_mode |= AR9170_MAC_CAM_AP_WDS; rx_ctrl |= AR9170_MAC_RX_CTRL_PASS_TO_HOST; break; case NL80211_IFTYPE_STATION: cam_mode |= AR9170_MAC_CAM_STA; rx_ctrl |= AR9170_MAC_RX_CTRL_PASS_TO_HOST; break; default: WARN(1, "Unsupported operation mode %x\n", vif->type); err = -EOPNOTSUPP; break; } } else { /* * Enable monitor mode * * rx_ctrl |= AR9170_MAC_RX_CTRL_ACK_IN_SNIFFER; * sniffer |= AR9170_MAC_SNIFFER_ENABLE_PROMISC; * * When the hardware is in SNIFFER_PROMISC mode, * it generates spurious ACKs for every incoming * frame. This confuses every peer in the * vicinity and the network throughput will suffer * badly. * * Hence, the hardware will be put into station * mode and just the rx filters are disabled. */ cam_mode |= AR9170_MAC_CAM_STA; rx_ctrl |= AR9170_MAC_RX_CTRL_PASS_TO_HOST; mac_addr = common->macaddr; bssid = NULL; } rcu_read_unlock(); if (err) return err; if (ar->rx_software_decryption) enc_mode |= AR9170_MAC_ENCRYPTION_RX_SOFTWARE; if (ar->sniffer_enabled) { enc_mode |= AR9170_MAC_ENCRYPTION_RX_SOFTWARE; } err = carl9170_set_mac_reg(ar, AR9170_MAC_REG_MAC_ADDR_L, mac_addr); if (err) return err; err = carl9170_set_mac_reg(ar, AR9170_MAC_REG_BSSID_L, bssid); if (err) return err; carl9170_regwrite_begin(ar); carl9170_regwrite(AR9170_MAC_REG_SNIFFER, sniffer); carl9170_regwrite(AR9170_MAC_REG_CAM_MODE, cam_mode); carl9170_regwrite(AR9170_MAC_REG_ENCRYPTION, enc_mode); carl9170_regwrite(AR9170_MAC_REG_RX_CONTROL, rx_ctrl); carl9170_regwrite_finish(); return carl9170_regwrite_result(); } int carl9170_set_hwretry_limit(struct ar9170 *ar, const unsigned int max_retry) { u32 tmp = min_t(u32, 0x33333, max_retry * 0x11111); return carl9170_write_reg(ar, AR9170_MAC_REG_RETRY_MAX, tmp); } int carl9170_set_beacon_timers(struct ar9170 *ar) { struct ieee80211_vif *vif; u32 v = 0; u32 pretbtt = 0; rcu_read_lock(); vif = carl9170_get_main_vif(ar); if (vif) { struct carl9170_vif_info *mvif; mvif = (void *) vif->drv_priv; if (mvif->enable_beacon && !WARN_ON(!ar->beacon_enabled)) { ar->global_beacon_int = vif->bss_conf.beacon_int / ar->beacon_enabled; SET_VAL(AR9170_MAC_BCN_DTIM, v, vif->bss_conf.dtim_period); switch (vif->type) { case NL80211_IFTYPE_MESH_POINT: case NL80211_IFTYPE_ADHOC: v |= AR9170_MAC_BCN_IBSS_MODE; break; case NL80211_IFTYPE_AP: v |= AR9170_MAC_BCN_AP_