|
本帖最后由 NghDYq 于 2023-11-1 23:36 编辑
NAT允许的最大数量,你要是软件实现的NAT,在这里改
- #/etc/sysctl.conf
- net.netfilter.nf_conntrack_max = 1234
- net.nf_conntrack_max = 1234
复制代码 硬件实现的NAT跟路由器解决方案有关,你这种情况应该是mediatek_soc_hnat ppe num 为1。就是3w多个
你可以在源代码中观察到这个行为
- static int hnat_probe(struct platform_device *pdev)
- {
- int i;
- int err = 0;
- int index = 0;
- struct resource *res;
- const char *name;
- struct device_node *np;
- unsigned int val;
- struct property *prop;
- struct extdev_entry *ext_entry;
- const struct of_device_id *match;
- hnat_priv = devm_kzalloc(&pdev->dev, sizeof(struct mtk_hnat), GFP_KERNEL);
- if (!hnat_priv)
- return -ENOMEM;
- hnat_priv->foe_etry_num = DEF_ETRY_NUM;
- match = of_match_device(of_hnat_match, &pdev->dev);
- if (unlikely(!match))
- return -EINVAL;
- hnat_priv->data = (struct mtk_hnat_data *)match->data;
- hnat_priv->dev = &pdev->dev;
- np = hnat_priv->dev->of_node;
- err = of_property_read_string(np, "mtketh-wan", &name);
- if (err < 0)
- return -EINVAL;
- strncpy(hnat_priv->wan, (char *)name, IFNAMSIZ - 1);
- dev_info(&pdev->dev, "wan = %s\n", hnat_priv->wan);
- err = of_property_read_string(np, "mtketh-lan", &name);
- if (err < 0)
- strncpy(hnat_priv->lan, "eth0", IFNAMSIZ);
- else
- strncpy(hnat_priv->lan, (char *)name, IFNAMSIZ - 1);
- dev_info(&pdev->dev, "lan = %s\n", hnat_priv->lan);
- err = of_property_read_string(np, "mtketh-ppd", &name);
- if (err < 0)
- strncpy(hnat_priv->ppd, "eth0", IFNAMSIZ);
- else
- strncpy(hnat_priv->ppd, (char *)name, IFNAMSIZ - 1);
- dev_info(&pdev->dev, "ppd = %s\n", hnat_priv->ppd);
- /*get total gmac num in hnat*/
- err = of_property_read_u32_index(np, "mtketh-max-gmac", 0, &val);
- if (err < 0)
- return -EINVAL;
- hnat_priv->gmac_num = val;
- dev_info(&pdev->dev, "gmac num = %d\n", hnat_priv->gmac_num);
- err = of_property_read_u32_index(np, "mtkdsa-wan-port", 0, &val);
- if (err < 0) {
- hnat_priv->wan_dsa_port = NONE_DSA_PORT;
- } else {
- hnat_priv->wan_dsa_port = val;
- dev_info(&pdev->dev, "wan dsa port = %d\n", hnat_priv->wan_dsa_port);
- }
- err = of_property_read_u32_index(np, "mtketh-ppe-num", 0, &val);
- if (err < 0)
- hnat_priv->ppe_num = 1;
- else
- hnat_priv->ppe_num = val;
- dev_info(&pdev->dev, "ppe num = %d\n", hnat_priv->ppe_num); // -------------------------------------------------------------here----------------------------------------------------------
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!res)
- return -ENOENT;
- hnat_priv->fe_base = devm_ioremap_nocache(&pdev->dev, res->start,
- res->end - res->start + 1);
- if (!hnat_priv->fe_base)
- return -EADDRNOTAVAIL;
- #if defined(CONFIG_MEDIATEK_NETSYS_V2)
- hnat_priv->ppe_base[0] = hnat_priv->fe_base + 0x2200;
- if (CFG_PPE_NUM > 1)
- hnat_priv->ppe_base[1] = hnat_priv->fe_base + 0x2600;
- #else
- hnat_priv->ppe_base[0] = hnat_priv->fe_base + 0xe00;
- #endif
- hnat_priv->ipv6_en = true; /* enable ipv6 by default */
- hnat_priv->guest_en = true; /* enable guest wifi by default */
- err = hnat_init_debugfs(hnat_priv);
- if (err)
- return err;
- prop = of_find_property(np, "ext-devices", NULL);
- for (name = of_prop_next_string(prop, NULL); name;
- name = of_prop_next_string(prop, name), index++) {
- ext_entry = kzalloc(sizeof(*ext_entry), GFP_KERNEL);
- if (!ext_entry) {
- err = -ENOMEM;
- goto err_out1;
- }
- strncpy(ext_entry->name, (char *)name, IFNAMSIZ - 1);
- ext_if_add(ext_entry);
- }
- for (i = 0; i < MAX_EXT_DEVS && hnat_priv->ext_if[i]; i++) {
- ext_entry = hnat_priv->ext_if[i];
- dev_info(&pdev->dev, "ext devices = %s\n", ext_entry->name);
- }
- hnat_priv->lvid = 1;
- hnat_priv->wvid = 2;
- for (i = 0; i < CFG_PPE_NUM; i++) {
- err = hnat_start(i);
- if (err)
- goto err_out;
- }
- if (hnat_priv->data->whnat) {
- err = whnat_adjust_nf_hooks();
- if (err)
- goto err_out;
- }
- err = hnat_enable_hook();
- if (err)
- goto err_out;
- register_netdevice_notifier(&nf_hnat_netdevice_nb);
- register_netevent_notifier(&nf_hnat_netevent_nb);
- if (hnat_priv->data->mcast) {
- for (i = 0; i < CFG_PPE_NUM; i++)
- hnat_mcast_enable(i);
- }
- timer_setup(&hnat_priv->hnat_sma_build_entry_timer, hnat_sma_build_entry, 0);
- if (hnat_priv->data->version == MTK_HNAT_V3) {
- timer_setup(&hnat_priv->hnat_reset_timestamp_timer, hnat_reset_timestamp, 0);
- hnat_priv->hnat_reset_timestamp_timer.expires = jiffies;
- add_timer(&hnat_priv->hnat_reset_timestamp_timer);
- }
- if (IS_HQOS_MODE && IS_GMAC1_MODE)
- dev_add_pack(&mtk_pack_type);
- err = hnat_roaming_enable();
- if (err)
- pr_info("hnat roaming work fail\n");
- return 0;
- err_out:
- for (i = 0; i < CFG_PPE_NUM; i++)
- hnat_stop(i);
- err_out1:
- hnat_deinit_debugfs(hnat_priv);
- for (i = 0; i < MAX_EXT_DEVS && hnat_priv->ext_if[i]; i++) {
- ext_entry = hnat_priv->ext_if[i];
- ext_if_del(ext_entry);
- kfree(ext_entry);
- }
- return err;
- }
复制代码
|
|