Commit Graph

104 Commits

Author SHA1 Message Date
623973dc1f Backport https://gerrit.fd.io/r/c/vpp/+/36961 2022-10-04 13:11:53 +00:00
a0ad5cc5cf Merge Gerrit 36176 from upstream 2022-06-03 20:33:48 +00:00
786530701d Backport https://gerrit.fd.io/r/c/vpp/+/35719 2022-03-31 23:23:36 +00:00
0bc3e01c9b Backport https://gerrit.fd.io/r/c/vpp/+/35528 2022-03-08 14:45:35 +00:00
a68a6e89e5 Backport https://gerrit.fd.io/r/c/vpp/+/35519 2022-03-08 13:55:28 +00:00
e6e6c11c78 Only signal NL_EVENT_READ once per read cycle, not once per netlink message - from https://gerrit.fd.io/r/c/vpp/+/35525 2022-03-08 13:50:37 +00:00
a27fdb9911 Backport https://gerrit.fd.io/r/c/vpp/+/35523 2022-03-08 13:42:56 +00:00
554988ebf6 Fix API errors - convert int32 to host order and null terminate vectors in the response 2022-03-08 10:08:59 +00:00
f9441c5e03 bugfix - return in host order 2022-02-27 23:05:34 +00:00
8a1c031ea9 backport https://gerrit.fd.io/r/c/vpp/+/35411 2022-02-22 20:42:11 +00:00
5f3eb62be9 Reduce resource usage on virtio polling, also avoid potential (undiagnosed) dataplane lockup when running multiple threads: just poll with one RX queue per TAP 2022-02-20 19:19:58 +00:00
ccd4b393e9 Roll back carrier set
-- it works fine for phy's that are carrier-up, but crashes if they are
   carrier-down.

0: /home/pim/src/vpp/src/vnet/interface_funcs.h:46 (vnet_get_hw_interface) assertion `! pool_is_free (vnm->interface_main.hw_interfaces, _e)' fails

    at /home/pim/src/vpp/src/vppinfra/error.c:143
    ns=0x7fff98774e80 "dataplane", host_sw_if_indexp=0x0) at /home/pim/src/vpp/src/plugins/lcpng/lcpng_interface.c:998
    at /home/pim/src/vpp/src/plugins/lcpng/lcpng_if_cli.c:96
    parent_command_index=371) at /home/pim/src/vpp/src/vlib/cli.c:591
    parent_command_index=0) at /home/pim/src/vpp/src/vlib/cli.c:548
    at /home/pim/src/vpp/src/vlib/cli.c:694
2021-12-24 21:12:24 +00:00
ddd3ad372a Only set carrier up when hw is up 2021-12-24 21:04:15 +00:00
1bbe17d586 Merge branch 'main' of github.com:pimvanpelt/lcpng into main 2021-12-24 20:05:57 +00:00
b659de9266 When creating a sub-int from Linux, ensure that the tap subint is set admin-up 2021-12-24 20:05:39 +00:00
fffb1e892a After fixing the feflags/frpflags bug, install specials again 2021-12-24 20:05:08 +00:00
22e907555d Initialize the TAP carrier based on the (hardware) phy 2021-12-24 20:04:08 +00:00
37300abf84 Update README.md
Add a hint about libmnl
2021-12-20 12:46:16 +01:00
65fa49f30b Fix crash if netns is not set at startup 2021-12-19 21:46:00 +00:00
d36f34b91d Fix type issue with route_path flags 2021-12-19 21:32:05 +00:00
cd86f17454 Copy forward neale's improvement from upstream gerrit 33948 2021-11-29 22:26:44 +00:00
a8879bfc54 Merge branch 'main' of github.com:pimvanpelt/lcpng into main 2021-11-29 20:19:46 +00:00
cdf07cce34 Merge review feedback from mgsmith on upstream gerrit 33709 ps8..10 2021-11-29 20:19:34 +00:00
cc2d6908a2 Merge review feedback from mgsmith on upstream gerrit 33709 ps8..10 2021-11-29 20:04:54 +00:00
6caa5e8386 Followup of upstream 8e2b1b129815d3e631aa425ed37899c78ea24e65 addition of MFIB_ENTRY_FLAG_NONE 2021-11-07 18:21:58 +00:00
852a590cf6 Update README.md 2021-10-08 07:56:54 +02:00
bd8d8b40d6 Merge pull request #2 from theraphim/main
Don't crash when adding second interface to default namespace.
2021-10-08 07:52:19 +02:00
b72707d560 Don't crash when adding second interface to default namespace.
Namespace members used to be char[], now they are vectors. Using
strlen on a default value for these vectors results in a segmentation
fault.

Use vec_cmp instead. While at it, fix the output format to be %v.
2021-10-08 01:27:45 +04:00
92e3835cbe Merge pull request #1 from jin13417/main
Update README.md
2021-09-18 17:01:57 +02:00
311dba085a Update README.md
I think ln -s soruce_dir. link_dir,this is wrong.
2021-09-18 22:00:25 +08:00
4ed9d02693 Fix non NULL terminated strings (namespace and hostname are vectors) 2021-09-09 20:04:15 +00:00
e2ac348759 'ns' is now a vector, don't memcpy it, but vec_dup() instead 2021-09-08 21:38:45 +00:00
043fecb0e0 Only find the parent tap if it's necessary (ie. doesn't already exist in vif_index; change by mgsmith@ 2021-09-08 21:15:42 +00:00
2c390ae512 Also set TAP carrier on netlink messages 2021-09-08 21:14:25 +00:00
45cb9b4afc Cleanup interface sync
- move tap_set_carrier() upstream to lcp_itf_set_link_state()
- refuse to set admin-up on sub-int if parent is down
- no need to switch namespaces, lcp_itf_set_link_state() already does
- in change_mtu and change_admin_state, if the interface is a sub,
  we only have to sync that one interface. Otherwise, walk the parent
  interface and all sub-ints with lcp_itf_pair_sync_state_hw() and
  make note of this in the (DBG) log
2021-09-08 20:53:02 +00:00
ba4d9d1a3c Add lcp_itf_pair_sync_state_hw() and only walk relevant int+subints, not all interfaces 2021-09-08 19:50:50 +00:00
8b3356cd86 if sub_interface fails to create, return error and don't continue (fixes a crash) 2021-09-08 19:50:27 +00:00
3c806d586d Accommodate Netgate's usecase, they create the linux netlink device first, and then call the pair_create; in that case, linux_parent_if_index already exists; simplify the call path here, h/t mgsmith@ 2021-09-08 18:41:35 +00:00
36f1ebfdae Move check for parent_if_index up
copy review change from mgsmith@
2021-09-07 22:10:54 +00:00
fdab236755 backport fix from mgsmith@ in VPP main repo 2021-09-07 21:13:55 +00:00
15efc4efc2 Copy review notes from mgsmith@ from https://gerrit.fd.io/r/c/vpp/+/33481/12..13 2021-08-30 20:37:05 +00:00
98a84d0fa7 Turn lip_namespace into a vector 2021-08-30 20:31:53 +00:00
aa9158e1a2 Add logline in case setting rx/tx size fails 2021-08-29 22:02:57 +00:00
9f7286d285 Update INFO logline 2021-08-29 19:10:03 +00:00
fe5b52504f Restore insertion of connected routes 2021-08-29 18:50:28 +00:00
82aa1bbc74 Merge from upstream 2021-08-29 17:52:22 +02:00
6d86d2b075 Allow larger fraction of CPU to be used by netlink
Instead of doing BATCH_DELAY_MS work and BATCH_DELAY_MS sleep, add
a BATCH_WORK_MS (40) and lower BATCH_DELAY_MS (10), so we'll work
80% of the time, and consume netlink messages 20% of the time.

Also raise the total batch size to 8K because on my test machine
we run 2K in 13ms or 8K in ~50ms.
2021-08-29 17:47:33 +02:00
7c864ed099 Temporary fix
Stop adding paths with add_special(); there is a scenario with Bird2
that makes this crash:
- Assume a VPP which has its fib fully synced
- Kill VPP
- Bird will see network devices remove, and mark all routes 'unreach'
- Start VPP
- Bird will see the devices come back, and issue netlink messages for
  each route that is unreach
- these become add_special() because they have no nexthop and are
  of type UNREACHABLE
- adding these to the FIB sometimes crashes in dpo handling

To avoid this, no longer add_special() -- as a caveat, manually inserted
routes to unreach/blackhole will not be explicitly added, however most
will be caught by fib-entry for default-route (which is a 'drop'). This
behavior should be fixed, but it's at the moment not obvious to me how
and I'd prefer this behavior over SIGABORT/SIGSEGV deeper in the code.
2021-08-29 17:07:40 +02:00
8a57300b4c Tidy up locking
This is a little bit of a performance hit (consuming 2K msgs was 11ms, is now 18ms)
but putting the barrier locks inline is fragile and will eventually
cause an issue. As with Matt's pending plugin, sync and release the
barrier lock around the entire handler, rather than in-line.

Contrary to Matt's implementation, I am also going to lock route_add()
and route_del() because without the locking, I get spurious crashes.
2021-08-29 16:59:18 +02:00
76c8b53f41 fix silly crash in logging 2021-08-29 15:03:39 +02:00