On 01/04/2019 15:14, John Crispin wrote:
@@ -5185,6 +5214,23 @@ static int ath10k_add_interface(struct ieee80211_hw *hw,
break;
}
+ switch (vif->type) {
+ case NL80211_IFTYPE_AP:
+ hw_encap = 1;
+ break;
+ case NL80211_IFTYPE_STATION:
+// if (!sdata->u.mgd.use_4addr)
+ hw_encap = 1;
+ break;
+ case NL80211_IFTYPE_AP_VLAN:
+// if (!sdata->wdev.use_4addr)
+ hw_encap = 1;
+ break;
+ default:
+ break;
+ }
+ ieee80211_set_hw_80211_encap(vif, ar->ethernetmode & hw_encap);
+
/* Using vdev_id as queue number will make it very easy to do per-vif
* tx queue locking. This shouldn't wrap due to interface combinations
* but do a modulo for correctness sake and prevent using offchannel tx
Hi
I am not sure what the best way to handle the 4addr mode is. sdata is
part of the subsystem and is not exposed to the drivers.Calling
ieee80211_set_hw_80211_encap() from within the driver looked best to me
at first glance and would avoid adding an extra op call to figure out if
the if encap is supported. Any pointers on what the preferred solution
would look like are welcome.
John