Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ea39d1a4 authored by Joerg Albert's avatar Joerg Albert Committed by John W. Linville
Browse files

ar9170: cleanup of bss_info_changed and beacon config



Add beacon control by BSS_CHANGED_BEACON_ENABLED and
bss_conf->enable_beacon from mac80211.

Signed-off-by: default avatarJoerg Albert <jal2@gmx.de>
Signed-off-by: default avatarChristian Lamparter <chunkeey@web.de>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent a0bf797f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -178,6 +178,7 @@ struct ar9170 {
	/* beaconing */
	struct sk_buff *beacon;
	struct work_struct beacon_work;
	bool enable_beacon;

	/* cryptographic engine */
	u64 usedkeys;
+13 −11
Original line number Diff line number Diff line
@@ -383,6 +383,7 @@ int ar9170_set_beacon_timers(struct ar9170 *ar)
	if (ar->vif) {
		v |= ar->vif->bss_conf.beacon_int;

		if (ar->enable_beacon) {
			switch (ar->vif->type) {
			case NL80211_IFTYPE_MESH_POINT:
			case NL80211_IFTYPE_ADHOC:
@@ -390,17 +391,18 @@ int ar9170_set_beacon_timers(struct ar9170 *ar)
				break;
			case NL80211_IFTYPE_AP:
				v |= BIT(24);
			pretbtt = (ar->vif->bss_conf.beacon_int - 6) << 16;
				pretbtt = (ar->vif->bss_conf.beacon_int - 6) <<
					  16;
				break;
			default:
			break;
			}
		}

		v |= ar->vif->bss_conf.dtim_period << 16;
	}

	ar9170_regwrite_begin(ar);

	ar9170_regwrite(AR9170_MAC_REG_PRETBTT, pretbtt);
	ar9170_regwrite(AR9170_MAC_REG_BCN_PERIOD, v);
	ar9170_regwrite_finish();
+7 −7
Original line number Diff line number Diff line
@@ -2148,11 +2148,17 @@ static void ar9170_op_bss_info_changed(struct ieee80211_hw *hw,
			goto out;
	}

	if (changed & (BSS_CHANGED_BEACON | BSS_CHANGED_BEACON_ENABLED)) {
	if (changed & BSS_CHANGED_BEACON_ENABLED)
		ar->enable_beacon = bss_conf->enable_beacon;

	if (changed & BSS_CHANGED_BEACON) {
		err = ar9170_update_beacon(ar);
		if (err)
			goto out;
	}

	if (changed & (BSS_CHANGED_BEACON_ENABLED | BSS_CHANGED_BEACON |
		       BSS_CHANGED_BEACON_INT)) {
		err = ar9170_set_beacon_timers(ar);
		if (err)
			goto out;
@@ -2165,12 +2171,6 @@ static void ar9170_op_bss_info_changed(struct ieee80211_hw *hw,
#endif /* CONFIG_AR9170_LEDS */
	}

	if (changed & BSS_CHANGED_BEACON_INT) {
		err = ar9170_set_beacon_timers(ar);
		if (err)
			goto out;
	}

	if (changed & BSS_CHANGED_HT) {
		/* TODO */
		err = 0;