Commit Graph

919 Commits

Author SHA1 Message Date
fengbojiang f211ded4ff Merge branch 'master' of https://github.com/F-Stack/f-stack into master 2022-04-15 18:15:22 +08:00
fengbojiang 6d3b0f831a Merge branch 'master' of https://github.com/F-Stack/f-stack into master 2022-04-15 18:15:22 +08:00
fengbojiang 9b5a2ec642 Support zero copy while call `ff_write`, you can enable it by modify ‘FF_ZC_SEND=1' in `lib/Makefile`.
`FF_ZC_SEND` is same as `FF_USE_PAGE_ARRAY`, it will improve performance slightly in some scenarios, need to be tested in combination with real applications.

You can enable both compilation options at the same time or separately.
2022-04-15 18:00:49 +08:00
fengbojiang e12886c02c Support zero copy while call `ff_write`, you can enable it by modify ‘FF_ZC_SEND=1' in `lib/Makefile`.
`FF_ZC_SEND` is same as `FF_USE_PAGE_ARRAY`, it will improve performance slightly in some scenarios, need to be tested in combination with real applications.

You can enable both compilation options at the same time or separately.
2022-04-15 18:00:49 +08:00
fengbojiang 070b224a03 Fix a typo of netmask in config.ini. 2022-04-08 14:54:34 +08:00
fengbojiang d1b5277cc0 Fix a typo of netmask in config.ini. 2022-04-08 14:54:34 +08:00
fengbojiang 1bd0bf3be2 Enable net.inet.tcp.delayed_ack by default to improve concurrent performance. 2022-04-08 14:52:25 +08:00
fengbojiang 0b7ce76652 Enable net.inet.tcp.delayed_ack by default to improve concurrent performance. 2022-04-08 14:52:25 +08:00
johnjiang e4a461939a Merge pull request #653 from yuanding53/master
Optimize random function in ff_compat.c
2022-04-08 14:47:16 +08:00
johnjiang 73760ead54
Merge pull request #653 from yuanding53/master
Optimize random function in ff_compat.c
2022-04-08 14:47:16 +08:00
dingyuan cd92171a0f Optimize random function in ff_compat.c 2022-04-07 13:08:04 +08:00
dingyuan e27a576b2a Optimize random function in ff_compat.c 2022-04-07 13:08:04 +08:00
fengbojiang 2151a33ebb Merge branch 'master' of https://github.com/F-Stack/f-stack into master 2022-04-06 11:26:58 +08:00
fengbojiang 93b7ff1c3f Merge branch 'master' of https://github.com/F-Stack/f-stack into master 2022-04-06 11:26:58 +08:00
fengbojiang 1a945e3b22 FF_USE_PAGE_ARRAY compatible DPDK 19.11. 2022-04-06 11:25:02 +08:00
fengbojiang 6faaf06c20 FF_USE_PAGE_ARRAY compatible DPDK 19.11. 2022-04-06 11:25:02 +08:00
fengbojiang 428d816d3b Fix #643. Fix a VXLAN issue. Thanks @agerguo 2022-02-26 21:28:12 +08:00
fengbojiang 7dba406844 Fix #643. Fix a VXLAN issue. Thanks @agerguo 2022-02-26 21:28:12 +08:00
fengbojiang d1eadad85f Update release note for 1.21.1. 2021-09-10 15:51:23 +08:00
fengbojiang 806d8b61e5 Update release note for 1.21.1. 2021-09-10 15:51:23 +08:00
fengbojiang 8ddd68e341 MLX5: modify if_indextoname syscall to support F-Stack tools. 2021-09-10 15:40:25 +08:00
fengbojiang 16f94e1fa3 MLX5: modify if_indextoname syscall to support F-Stack tools. 2021-09-10 15:40:25 +08:00
johnjiang 42abcdcaae Merge pull request #613 from orange30/master
lo port is added 127.0.0.1 when freebsd init.
2021-09-10 14:07:50 +08:00
johnjiang 908bfc2b6a
Merge pull request #613 from orange30/master
lo port is added 127.0.0.1 when freebsd init.
2021-09-10 14:07:50 +08:00
orange30 072d103880 lo port is added 127.0.0.1 when freebsd init.
Sometimes the application need 127.0.0.1 on lo0 after freebsd inited!
2021-09-09 14:30:13 +08:00
orange30 e3cd75fdea
lo port is added 127.0.0.1 when freebsd init.
Sometimes the application need 127.0.0.1 on lo0 after freebsd inited!
2021-09-09 14:30:13 +08:00
fengbojiang bbbaae8e7b Update release note for 1.21. 2021-03-06 19:04:48 +08:00
fengbojiang b9be57e497 Update release note for 1.21. 2021-03-06 19:04:48 +08:00
fengbojiang 1707f5301d DPDK: upgrade to DPDK 19.11.6(LTS). 2021-03-06 19:04:47 +08:00
fengbojiang 7a655b09d2 DPDK: upgrade to DPDK 19.11.6(LTS). 2021-03-06 19:04:47 +08:00
fengbojiang 4b7cdbfe03 Fix some issues of ff msg. 2021-03-06 19:04:47 +08:00
fengbojiang 81612f2676 Fix some issues of ff msg. 2021-03-06 19:04:47 +08:00
fengbojiang a32da8f0cf The `ff_traffic` and `ff_top`'s `-P` argument support bigger than 38. 2021-03-06 19:04:46 +08:00
fengbojiang 03a3be5d63 The `ff_traffic` and `ff_top`'s `-P` argument support bigger than 38. 2021-03-06 19:04:46 +08:00
fengbojiang c0904131cb Fix bug of ff_ipc_msg_free in ff tools.
The ff msg shouldn't to free while `ff_ipc_send` success but `ff_ipc_recv` failed (such as F-Stack app are breaking by gdb).
2021-03-06 19:04:46 +08:00
fengbojiang c6b7b89709 Fix bug of ff_ipc_msg_free in ff tools.
The ff msg shouldn't to free while `ff_ipc_send` success but `ff_ipc_recv` failed (such as F-Stack app are breaking by gdb).
2021-03-06 19:04:46 +08:00
fengbojiang(姜凤波) 9fc26dbf88 Add `ff_regist_pcblddr_fun` to regist a pcb lddr function in F-Stack.
If There are multiple ips, and F-Stack client application can choose a source ip by yourself, instead always use the first ip.
2021-03-06 19:04:46 +08:00
fengbojiang(姜凤波) 1ddd0f0898 Add `ff_regist_pcblddr_fun` to regist a pcb lddr function in F-Stack.
If There are multiple ips, and F-Stack client application can choose a source ip by yourself, instead always use the first ip.
2021-03-06 19:04:46 +08:00
zengyi1001 25867c09cb Add IPv6 net addr parameters in config
Co-authored-by: fengbojiang <fengbojiang@tencent.com>
2021-03-06 19:04:46 +08:00
zengyi1001 0f2a196b68 Add IPv6 net addr parameters in config
Co-authored-by: fengbojiang <fengbojiang@tencent.com>
2021-03-06 19:04:46 +08:00
fengbojiang f69aa4778c Fix #560, Wrong msg_flags in struct msghdr after calling ff_recvmsg in a Linux application. 2021-03-06 19:04:46 +08:00
fengbojiang 6798bf3e3d Fix #560, Wrong msg_flags in struct msghdr after calling ff_recvmsg in a Linux application. 2021-03-06 19:04:46 +08:00
freak82 f39eac0056 Fix #568, Insufficient condition in ff_rte_frm_extcl function. 2021-03-06 19:04:46 +08:00
freak82 7817f2be74 Fix #568, Insufficient condition in ff_rte_frm_extcl function. 2021-03-06 19:04:46 +08:00
Hawker d769a4bd03 Bug:CLR_FD_BIT is undefined 2021-03-06 19:04:46 +08:00
Hawker 6819118ae2 Bug:CLR_FD_BIT is undefined 2021-03-06 19:04:46 +08:00
Jianfeng Tan e6161e2b0f fix use after free issue in mbuf free
Two kinds of mbuf are used in f-stack: freebsd mbuf and dpdk mbuf.

freebsd mbufs are metadata used in freebsd stack, and their data
pointers (m_data) point to dpdk mbuf's data (buf_addr). And they have
their own chain, like this:

  bsd_mbuf1 -> bsd_mbuf2 -> bsd_mbuf3
      \            \            \
    dpdk_mbuf1 -> dpdk_mbuf2 -> dpdk_mbuf3

Considering the map relationship,

- m_freem() is corresponding to rte_pktmbuf_free(), is to free the whole
  chain of mbufs.
- m_free() is corresponding to rte_pktmbuf_free_seg(), is to free the
  specified mbuf segment.

The current implementation in f-stack uses rte_pktmbuf_free() for
m_free(). This leads to mbufs, which are still in use, be freed
unexpectedly. For example, if the bsd_mbuf1 is trimed into zero length,
bsd will invoke m_free() to free the specified segment, however, the
whole mbuf chain is freed by calling rte_pktmbuf_free().

  #0 rte_pktmbuf_free (m=0x22006fb480)
  #1 in ff_dpdk_pktmbuf_free (m=0x22006fb480)
  #2 in ff_mbuf_ext_free (m=0x7ffff7f82800, arg1=0x22006fb480, arg2=0x0)
  #3 in mb_free_ext (m=0x7ffff7f82800)
  #4 in m_free (m=0x7ffff7f82800)
  #5 in sbcompress (sb=, m=0x7ffff7f82800, n=)
  #6 in sbappendstream_locked (sb=, m=0x7ffff7f82800, flags=0)

The fix is straightforward. Use the correct API for segment free.

Reported-by: Yong-Hao Zou <yonghaoz1994@gmail.com>
Signed-off-by: Jianfeng Tan <henry.tjf@antgroup.com>
2021-03-06 19:04:46 +08:00
Jianfeng Tan 84456118c7 fix use after free issue in mbuf free
Two kinds of mbuf are used in f-stack: freebsd mbuf and dpdk mbuf.

freebsd mbufs are metadata used in freebsd stack, and their data
pointers (m_data) point to dpdk mbuf's data (buf_addr). And they have
their own chain, like this:

  bsd_mbuf1 -> bsd_mbuf2 -> bsd_mbuf3
      \            \            \
    dpdk_mbuf1 -> dpdk_mbuf2 -> dpdk_mbuf3

Considering the map relationship,

- m_freem() is corresponding to rte_pktmbuf_free(), is to free the whole
  chain of mbufs.
- m_free() is corresponding to rte_pktmbuf_free_seg(), is to free the
  specified mbuf segment.

The current implementation in f-stack uses rte_pktmbuf_free() for
m_free(). This leads to mbufs, which are still in use, be freed
unexpectedly. For example, if the bsd_mbuf1 is trimed into zero length,
bsd will invoke m_free() to free the specified segment, however, the
whole mbuf chain is freed by calling rte_pktmbuf_free().

  #0 rte_pktmbuf_free (m=0x22006fb480)
  #1 in ff_dpdk_pktmbuf_free (m=0x22006fb480)
  #2 in ff_mbuf_ext_free (m=0x7ffff7f82800, arg1=0x22006fb480, arg2=0x0)
  #3 in mb_free_ext (m=0x7ffff7f82800)
  #4 in m_free (m=0x7ffff7f82800)
  #5 in sbcompress (sb=, m=0x7ffff7f82800, n=)
  #6 in sbappendstream_locked (sb=, m=0x7ffff7f82800, flags=0)

The fix is straightforward. Use the correct API for segment free.

Reported-by: Yong-Hao Zou <yonghaoz1994@gmail.com>
Signed-off-by: Jianfeng Tan <henry.tjf@antgroup.com>
2021-03-06 19:04:46 +08:00
Hawker fc7cff57bb update comments 2021-03-06 19:04:46 +08:00
Hawker 76f39db167 update comments 2021-03-06 19:04:46 +08:00