]> git.proxmox.com Git - mirror_frr.git/commit
Zebra: FPM processing of mac_q and dest_q
authorAmeya Dharkar <adharkar@vmware.com>
Thu, 16 May 2019 22:53:46 +0000 (15:53 -0700)
committerAmeya Dharkar <adharkar@vmware.com>
Mon, 17 Jun 2019 19:05:38 +0000 (12:05 -0700)
commit21d814eb0bf5918ed8d34de6e8c1c866e6681f09
tree9ef8d6fddf968ef3b81b5189a5bbf8fb83d15d38
parenta780a738968ffc077a81d108b906cf9a06f3ef4d
Zebra: FPM processing of mac_q and dest_q

- FPM write thread calls "zfpm_build_updates()" to process mac_q and dest_q and
  to write update buffer over the FPM socket.

- "zfpm_build_updates()" processes all the update queues one by one in a while
  loop. It will break the while loop and return if Queue processing function
  returns "FPM_WRITE_STOP" OR FPM write buffer is full OR all the queues are
  empty (no more update to process).

- "zfpm_build_route_updates()" dequeues and processes route nodes from "dest_q".

- "zfpm_build_mac_updates()" dequeues and processes MAC nodes from "mac_q"

- These queue processing functions return with "FPM_WRITE_STOP" if the write
  buffer is full. Return value is "FPM_GOTO_NEXT_Q" if enough updates are
  processed from this queue and we want to move on to the next queue.

- In each call, a queue processing function will process max
  "FPM_QUEUE_PROCESS_LIMIT (10000)" updates to avoid starvation of other queues.

Signed-off-by: Ameya Dharkar <adharkar@vmware.com>
zebra/zebra_fpm.c