mac80211: allow drivers to set max MTU
authorWen Gong <wgong@codeaurora.org>
Fri, 6 Sep 2019 02:48:57 +0000 (10:48 +0800)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 11 Sep 2019 07:33:29 +0000 (09:33 +0200)
Make it possibly for drivers to adjust the default max_mtu
by storing it in the hardware struct and using that value
for all interfaces.

Signed-off-by: Wen Gong <wgong@codeaurora.org>
Link: https://lore.kernel.org/r/1567738137-31748-1-git-send-email-wgong@codeaurora.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/mac80211.h
net/mac80211/iface.c
net/mac80211/main.c

index 6781d4637557c0d75dc71ec538cd82c0c60af464..523c6a09e1c8c722a725b03f2ca0d09ff638afca 100644 (file)
@@ -2463,6 +2463,8 @@ enum ieee80211_hw_flags {
  *
  * @weight_multiplier: Driver specific airtime weight multiplier used while
  *     refilling deficit of each TXQ.
+ *
+ * @max_mtu: the max mtu could be set.
  */
 struct ieee80211_hw {
        struct ieee80211_conf conf;
@@ -2500,6 +2502,7 @@ struct ieee80211_hw {
        u8 max_nan_de_entries;
        u8 tx_sk_pacing_shift;
        u8 weight_multiplier;
+       u32 max_mtu;
 };
 
 static inline bool _ieee80211_hw_check(struct ieee80211_hw *hw,
index 8dc6580e17871c4f8095079b226d18e1a41d51a5..af8b09214786d0f3eefaa7837478b6b05c679d2d 100644 (file)
@@ -1876,7 +1876,7 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
 
                /* MTU range: 256 - 2304 */
                ndev->min_mtu = 256;
-               ndev->max_mtu = IEEE80211_MAX_DATA_LEN;
+               ndev->max_mtu = local->hw.max_mtu;
 
                ret = register_netdevice(ndev);
                if (ret) {
index 29b9d57df1a30875c98dc11d3022cd090c7c1e1e..aba094b4ccfc0918859186552b730dde74934c03 100644 (file)
@@ -639,6 +639,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_nm(size_t priv_data_len,
                                         IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH;
        local->hw.uapsd_queues = IEEE80211_DEFAULT_UAPSD_QUEUES;
        local->hw.uapsd_max_sp_len = IEEE80211_DEFAULT_MAX_SP_LEN;
+       local->hw.max_mtu = IEEE80211_MAX_DATA_LEN;
        local->user_power_level = IEEE80211_UNSET_POWER_LEVEL;
        wiphy->ht_capa_mod_mask = &mac80211_ht_capa_mod_mask;
        wiphy->vht_capa_mod_mask = &mac80211_vht_capa_mod_mask;