From: Ping-Ke Shih <pkshih@xxxxxxxxxxx> For certain regulations, frequency range is outdoor only, which flag should be NO-INDOOR, but db2fw.py doesn't allow this flag. As suggestion, only fill NO-INDOOR flag in db.txt, but ignore this rule in parsing to binary. Suggested-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> Link: https://lore.kernel.org/linux-wireless/5e433cd8d070682cb6ed31de3a2dd337e6f48b50.camel@xxxxxxxxxxxxxxxx/T/#t Signed-off-by: Ping-Ke Shih <pkshih@xxxxxxxxxxx> --- v4: - check NO-INDOOR after checking validity of all flags v3: - new introduction by v3 --- dbparse.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dbparse.py b/dbparse.py index cc5012bc05bd..29f422445563 100755 --- a/dbparse.py +++ b/dbparse.py @@ -121,6 +121,9 @@ class FlagError(Exception): def __init__(self, flag): self.flag = flag +class IgnoreRule(Exception): + pass + @total_ordering class Permission(object): def __init__(self, freqband, power, flags, wmmrule): @@ -135,6 +138,9 @@ class Permission(object): if not flag in flag_definitions: raise FlagError(flag) self.flags |= flag_definitions[flag] + # ignore rule with NO-INDOOR so that kernel doesn't need special deal. + if 'NO-INDOOR' in flags: + raise IgnoreRule() self.textflags = flags def _as_tuple(self): @@ -429,6 +435,8 @@ class DBParser(object): perm = Permission(b, p, flags, w) except FlagError as e: self._syntax_error("Invalid flag '%s'" % e.flag) + except IgnoreRule: + return for cname, c in self._current_countries.items(): if perm in c: self._warn('Rule "%s, %s" added to "%s" twice' % ( -- 2.25.1