• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/src/shared/

Lines Matching defs:fwder

94 static int _fwder_bypass_fn(fwder_t * fwder, struct sk_buff * skbs, int skb_cnt,
106 static void _fwder_dump(struct bcmstrbuf *b, const fwder_t * fwder);
640 /* fwder enum to string conversions for debug dump: fwder_dir(), fwder_mode() */
653 /** Default dummy xmit handler bound to the fwder. */
655 _fwder_bypass_fn(fwder_t * fwder, struct sk_buff * skbs, int skb_cnt,
658 ASSERT(fwder != FWDER_NULL);
660 FWDER_PTRACE(("%s fwder<%p:%s> error skbs<%p> skb_cnt<%d> rx_dev<%p:%s>\n",
661 __FUNCTION__, fwder, __SSTR(fwder, name), skbs, skb_cnt,
664 FWDER_STATS_ADD(fwder->dropped, skb_cnt);
674 int unit; /* fwder unit assigned from FWDER_CPUMAP_NVAR nvram settings */
865 /** Static declaration of fwder objects per cpu, accessed via per_cpu, */
866 DEFINE_PER_CPU(struct fwder, fwder_upstream_g) = _FWDER_INI_(upstream);
867 DEFINE_PER_CPU(struct fwder, fwder_dnstream_g) = _FWDER_INI_(dnstream);
870 #define FWDER_GET(fwder, funit) &per_cpu((fwder), (funit))
891 /** Static declaration of a set of upstream fwder indexed by GMAC/radio unit. */
897 /** Static declaration of a set of dnstream fwder indexed by GMAC/radio unit. */
904 #define FWDER_GET(fwder, funit) &fwder[funit]
912 /** Used to instantiate a pool of virtual fwder if per fwder.
913 * When multiple WLAN interfaces bind to a fwder, a list of all actively bound
914 * WLAN interfaces is maintained in the upstream fwder. This list will be used
937 fwder_t * fwder;
940 fwder = FWDER_GET(fwder_upstream_g, funit);
942 fwder = FWDER_GET(fwder_dnstream_g, funit);
944 /* fwder's unit may not be set yet. */
945 return fwder;
951 fwder_t * fwder = ___fwder_self(dir, funit);
952 FWDER_ASSERT(fwder->unit == funit);
953 return fwder;
964 /** Fetch the fwder if object, give a unit and subunit. */
979 fwder_t * fwder;
984 FWDER_TRACE(("%s: WOFA dictionary, fwder_if pool, fwder, cpumap\n",
1014 /* Initialize the fwder instances */
1017 fwder = ___fwder_self(dir, funit);
1018 fwder->mate = ___fwder_self((dir + 1) % FWDER_MAX_DIR, funit);
1020 fwder->bypass_fn = _fwder_bypass_fn;
1022 fwder->devs_cnt = 0;
1023 fwder->dev_def = FWDER_NET_DEVICE_NULL;
1024 dll_init(&fwder->devs_dll);
1026 fwder->wofa = _fwder_wofa[funit];
1028 FWDER_STATS_CLR(fwder->transmit);
1029 FWDER_STATS_CLR(fwder->dropped);
1030 FWDER_STATS_CLR(fwder->flooded);
1032 fwder->mode = FWDER_NIC_MODE;
1033 fwder->dataoff = 0;
1034 fwder->unit = funit;
1063 fwder_t * fwder;
1071 fwder = __fwder_self(FWDER_UPSTREAM, funit);
1072 _fwder_wofa_fini(fwder->wofa);
1073 fwder->mate->wofa = fwder->wofa = FWDER_WOFA_NULL;
1109 /* Use the unit # and direction to fetch the fwder and mate's fwder */
1125 /* Return the mate's fwder */
1179 __fwder_sync_devs_cnt(self); /* sync upstream fwder devs_cnt */
1197 /** Given an upstream fwder handle, register a default interface
1198 * to mate downstream fwder. Deregister bu using a NULL net_device.
1201 fwder_register(fwder_t * fwder, struct net_device * dev)
1203 FWDER_TRACE(("%s fwder<%p> dev<%p:%s>\n", __FUNCTION__,
1204 fwder, dev, __SSTR(dev, name)));
1206 if (fwder == FWDER_NULL)
1209 ASSERT(fwder == __fwder_self(FWDER_UPSTREAM, fwder->unit));
1211 /* register with downstream fwder */
1212 fwder->mate->dev_def = dev;
1217 /** Given a downstream fwder handle, fetch the default registered device. */
1219 fwder_default(fwder_t * fwder)
1221 if (fwder == FWDER_NULL)
1224 ASSERT(fwder == __fwder_self(FWDER_DNSTREAM, fwder->unit));
1226 return fwder->dev_def;
1252 /* Primary did not attach a fwder */
1267 /* Fetch the fwder and the fwder_if */
1311 __fwder_sync_devs_cnt(self); /* sync upstream fwder devs_cnt */
1322 fwder_reassoc(fwder_t * fwder, uint16 * symbol, wofa_t wofa)
1325 if (fwder == FWDER_NULL)
1328 FWDER_TRACE(("%s fwder<%p,%s> " __EFMT "wofa<0x%08x>\n", __FUNCTION__,
1329 fwder, __SSTR(fwder, name), __EVAL((uint8*)symbol), (uint)wofa));
1330 FWDER_ASSERT(fwder->wofa == fwder->mate->wofa);
1333 err = __fwder_wofa_add(fwder->wofa, symbol, wofa);
1340 fwder_deassoc(fwder_t * fwder, uint16 * symbol, wofa_t wofa)
1343 if (fwder == FWDER_NULL)
1346 FWDER_TRACE(("%s fwder<%p,%s> " __EFMT "wofa<0x%08x>\n", __FUNCTION__,
1347 fwder, __SSTR(fwder, name), __EVAL((uint8*)symbol), (uint)wofa));
1349 FWDER_ASSERT(fwder->wofa == fwder->mate->wofa);
1351 err = __fwder_wofa_del(fwder->wofa, symbol, wofa);
1358 fwder_flush(fwder_t * fwder, wofa_t wofa)
1361 if ((fwder == FWDER_NULL) || (wofa == FWDER_WOFA_INVALID))
1364 FWDER_TRACE(("%s fwder<%p,%s> wofa<0x%08x>\n", __FUNCTION__,
1365 fwder, __SSTR(fwder, name), (uint)wofa));
1366 FWDER_ASSERT(fwder->wofa == fwder->mate->wofa);
1368 err = __fwder_wofa_clr(fwder->wofa, wofa);
1375 fwder_lookup(fwder_t * fwder, uint16 * symbol, const int port)
1378 FWDER_ASSERT(fwder != FWDER_NULL);
1379 FWDER_PTRACE(("%s fwder<%p,%s> " __EFMT "port<%d>\n", __FUNCTION__,
1380 fwder, __SSTR(fwder, name), __EVAL((uint8*)symbol), port));
1382 wofa = __fwder_wofa_lkup(fwder->wofa, symbol, port);
1388 fwder_flood(fwder_t * fwder, struct sk_buff * skb, void * osh, bool clone,
1396 FWDER_PTRACE(("%s fwder<%p,%s> skb<0x%p>, osh<%p>\n", __FUNCTION__,
1397 fwder, __SSTR(fwder, name), skb, osh));
1400 list = &fwder->devs_dll;
1404 dev = ((fwder_if_t *)item)->dev; /* fetch fwder interface's netdevice */
1422 FWDER_STATS_ADD(fwder->flooded, 1);
1435 fwder_fixup(fwder_t * fwder, struct sk_buff * skb)
1437 FWDER_PTRACE(("%s fwder<%p,%s> skb<%p>\n", __FUNCTION__,
1438 fwder, __SSTR(fwder, name), skb));
1440 __skb_pull(skb, fwder->dataoff);
1446 PKTCLRFWDERBUF(fwder->osh, skb); /* redundant, but safe */
1451 fwder_discard(fwder_t * fwder, struct sk_buff * skb)
1453 FWDER_PTRACE(("%s fwder<%p,%s> skb<%p>\n", __FUNCTION__,
1454 fwder, __SSTR(fwder, name), skb));
1455 PKTFRMFWDER(fwder->osh, skb, 1);
1456 PKTFREE(fwder->osh, skb, FALSE);
1477 _fwder_dump(struct bcmstrbuf *b, const fwder_t * fwder)
1479 if (fwder == FWDER_NULL)
1486 "\tdevs_cnt<%u> dev<%p:%s> bypass<%p:%pS>\n", fwder,
1487 __SSTR(fwder, name), fwder->unit, fwder->mate,
1488 __SSTR(fwder->mate, name), __fwder_mode(fwder->mode),
1490 fwder->transmit, fwder->dropped, fwder->flooded,
1492 fwder->devs_cnt, fwder->dev_def, __SSTR(fwder->dev_def, name),
1493 fwder->bypass_fn, fwder->bypass_fn);
1522 fwder_t * fwder;
1539 fwder = FWDER_GET(fwder_upstream_g, unit);
1540 _fwder_dump(b, fwder); /* dump upstream forwarder */
1541 _fwder_dump(b, fwder->mate); /* dump mate downstream forwarder */
1542 _fwder_devs_dump(b, &fwder->devs_dll); /* dump bound interfaces */
1543 _fwder_wofa_dump(b, fwder->wofa); /* dump WOFA ARL */