tech-net archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: MP-safe pppoe(4)
Hi,
On 2016/12/01 18:40, Kengo NAKAHARA wrote:
> My co-worker Shoichi YAMAGUCHI and I implement pppoe(4) MP-safe.
> # Nearly all parts is written by him, thanks :)
> Here is the patch.
> http://www.netbsd.org/~knakahara/pppoe-mpify/pppoe-mpify.patch
>
> At first, we try to use pserialize/psref, however pppoe would update
> softc members in softint context of control packet processing. As their
> update is higher priority than data packet, the control packet
> processing cannot be modified to deferred processing such as
> workqueue(9).
> Furthermore, some packet processing path, that is, sppp_input() and
> sppp_outout() write their softc members for keepalive.
> So, we give up to use pserialize/psref...
>
> Therefore, we use rwlock and mutex, the lock design of above patch
> is below
> + for if_pppoe.c
> - "pppoe_softc_list_lock" rwlock
> => global lock for pppoe softc list
> - "softc->sc_session_lock" rwlock
> => per softc lock for some members which is frequently read by
> data packet processing path
> - "softc->sc_lock" mutex
> => per softc lock for other members which is read/written by
> control packet processing and ioctl
> + for if_spppsubr.c
> - "spppq_lock" mutex
> => global lock for sppp keep alive list
> - "sppp->pp_lock" mutex
> => per struct sppp mutex for whole sppp include write-mostly
> members
>
>
> Could you comment this patch?
I rebase and commit it.
Thanks,
--
//////////////////////////////////////////////////////////////////////
Internet Initiative Japan Inc.
Device Engineering Section,
IoT Platform Development Department,
Network Division,
Technology Unit
Kengo NAKAHARA <k-nakahara%iij.ad.jp@localhost>
Home |
Main Index |
Thread Index |
Old Index