+static void set_rateinfo(lua_State *L, struct iwinfo_rate_entry *r, bool rx)
+{
+ lua_pushnumber(L, r->rate);
+ lua_setfield(L, -2, rx ? "rx_rate" : "tx_rate");
+
+ lua_pushboolean(L, r->is_ht);
+ lua_setfield(L, -2, rx ? "rx_ht" : "tx_ht");
+
+ lua_pushboolean(L, r->is_vht);
+ lua_setfield(L, -2, rx ? "rx_vht" : "tx_vht");
+
+ lua_pushnumber(L, r->mhz);
+ lua_setfield(L, -2, rx ? "rx_mhz" : "tx_mhz");
+
+ if (r->is_ht)
+ {
+ lua_pushboolean(L, r->is_40mhz);
+ lua_setfield(L, -2, rx ? "rx_40mhz" : "tx_40mhz");
+
+ lua_pushnumber(L, r->mcs);
+ lua_setfield(L, -2, rx ? "rx_mcs" : "tx_mcs");
+
+ lua_pushboolean(L, r->is_short_gi);
+ lua_setfield(L, -2, rx ? "rx_short_gi" : "tx_short_gi");
+ }
+ else if (r->is_vht)
+ {
+ lua_pushnumber(L, r->mcs);
+ lua_setfield(L, -2, rx ? "rx_mcs" : "tx_mcs");
+
+ lua_pushnumber(L, r->nss);
+ lua_setfield(L, -2, rx ? "rx_nss" : "tx_nss");
+
+ lua_pushboolean(L, r->is_short_gi);
+ lua_setfield(L, -2, rx ? "rx_short_gi" : "tx_short_gi");
+ }
+}
+