sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftargetG/translations/zh_CN/networking/device_drivers/ethernet/qualcomm/ppe/ppemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetG/translations/zh_TW/networking/device_drivers/ethernet/qualcomm/ppe/ppemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetG/translations/it_IT/networking/device_drivers/ethernet/qualcomm/ppe/ppemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetG/translations/ja_JP/networking/device_drivers/ethernet/qualcomm/ppe/ppemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetG/translations/ko_KR/networking/device_drivers/ethernet/qualcomm/ppe/ppemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetG/translations/sp_SP/networking/device_drivers/ethernet/qualcomm/ppe/ppemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhha/var/lib/git/docbuild/linux/Documentation/networking/device_drivers/ethernet/qualcomm/ppe/ppe.rsthKubhsection)}(hhh](htitle)}(h/PPE Ethernet Driver for Qualcomm IPQ SoC Familyh]h/PPE Ethernet Driver for Qualcomm IPQ SoC Family}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hBCopyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.h]hBCopyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h)Author: Lei Wei h](hAuthor: Lei Wei <}(hhhhhNhNubh reference)}(hquic_leiwei@quicinc.comh]hquic_leiwei@quicinc.com}(hhhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:quic_leiwei@quicinc.comuh1hhhubh>}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hhh](h)}(hContentsh]hContents}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh bullet_list)}(hhh](h list_item)}(h`PPE Overview`_h]h)}(hjh]h)}(hjh]h PPE Overview}(hjhhhNhNubah}(h]h ]h"]h$]h&]name PPE Overviewrefid ppe-overviewuh1hhjresolvedKubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h`PPE Driver Overview`_h]h)}(hj<h]h)}(hj<h]hPPE Driver Overview}(hjAhhhNhNubah}(h]h ]h"]h$]h&]namePPE Driver Overviewj+ppe-driver-overviewuh1hhj>j-Kubah}(h]h ]h"]h$]h&]uh1hhhhKhj:ubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h`PPE Driver Supported SoCs`_h]h)}(hj_h]h)}(hj_h]hPPE Driver Supported SoCs}(hjdhhhNhNubah}(h]h ]h"]h$]h&]namePPE Driver Supported SoCsj+ppe-driver-supported-socsuh1hhjaj-Kubah}(h]h ]h"]h$]h&]uh1hhhhKhj]ubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h`Enabling the Driver`_h]h)}(hjh]h)}(hjh]hEnabling the Driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]nameEnabling the Driverj+enabling-the-driveruh1hhjj-Kubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h`Debugging`_ h]h)}(h `Debugging`_h]h)}(hjh]h Debugging}(hjhhhNhNubah}(h]h ]h"]h$]h&]name Debuggingj+ debugginguh1hhjj-Kubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhKhhhhubeh}(h]contentsah ]h"]contentsah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h PPE Overviewh]h PPE Overview}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hIPQ (Qualcomm Internet Processor) SoC (System-on-Chip) series is Qualcomm's series of networking SoC for Wi-Fi access points. The PPE (Packet Process Engine) is the Ethernet packet process engine in the IPQ SoC.h]hIPQ (Qualcomm Internet Processor) SoC (System-on-Chip) series is Qualcomm’s series of networking SoC for Wi-Fi access points. The PPE (Packet Process Engine) is the Ethernet packet process engine in the IPQ SoC.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hBelow is a simplified hardware diagram of IPQ9574 SoC which includes the PPE engine and other blocks which are in the SoC but outside the PPE engine. These blocks work together to enable the Ethernet for the IPQ SoC::h]hBelow is a simplified hardware diagram of IPQ9574 SoC which includes the PPE engine and other blocks which are in the SoC but outside the PPE engine. These blocks work together to enable the Ethernet for the IPQ SoC:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh literal_block)}(hX/ +------+ +------+ +------+ +------+ +------+ +------+ start +-------+ |netdev| |netdev| |netdev| |netdev| |netdev| |netdev|<------|PHYLINK| +------+ +------+ +------+ +------+ +------+ +------+ stop +-+-+-+-+ | | | ^ +-------+ +-------------------------+--------+----------------------+ | | | | GCC | | | EDMA | | | | | +---+---+ | PPE +---+----+ | | | | | clk | | | | | | +-------->| +-----------------------+------+-----+---------------+ | | | | | | Switch Core |Port0 | |Port7(EIP FIFO)| | | | | | | +---+--+ +------+--------+ | | | | | | | | | | | | | +-------+ | | +------+---------------+----+ | | | | | |CMN PLL| | | +---+ +---+ +----+ | +--------+ | | | | | | +---+---+ | | |BM | |QM | |SCH | | | L2/L3 | ....... | | | | | | | | | | +---+ +---+ +----+ | +--------+ | | | | | | | | | | +------+--------------------+ | | | | | | | | | | | | | | | | v | | +-----+-+-----+-+-----+-+-+---+--+-----+-+-----+ | | | | | | +------+ | | |Port1| |Port2| |Port3| |Port4| |Port5| |Port6| | | | | | | |NSSCC | | | +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ | | mac| | | | +-+-+--+ | | |MAC0 | |MAC1 | |MAC2 | |MAC3 | |MAC4 | |MAC5 | | |<---+ | | | ^ | |clk | | +-----+-+-----+-+-----+-+-----+--+-----+-+-----+ | | ops | | | | | +------>| +----|------|-------|-------|---------|--------|-----+ | | | | | | +---------------------------------------------------------+ | | | | | | | | | | | | | | | | MII clk | QSGMII USXGMII USXGMII | | | | +--------------->| | | | | | | | | | +-------------------------+ +---------+ +---------+ | | | |125/312.5MHz clk| (PCS0) | | (PCS1) | | (PCS2) | pcs ops | | | +----------------+ UNIPHY0 | | UNIPHY1 | | UNIPHY2 |<--------+ | +----------------->| | | | | | | | 31.25MHz ref clk +-------------------------+ +---------+ +---------+ | | | | | | | | | | +-----------------------------------------------------+ | |25/50MHz ref clk| +-------------------------+ +------+ +------+ | link | +--------------->| | QUAD PHY | | PHY4 | | PHY5 | |---------+ | +-------------------------+ +------+ +------+ | change | | | MDIO bus | +-----------------------------------------------------+h]hX/ +------+ +------+ +------+ +------+ +------+ +------+ start +-------+ |netdev| |netdev| |netdev| |netdev| |netdev| |netdev|<------|PHYLINK| +------+ +------+ +------+ +------+ +------+ +------+ stop +-+-+-+-+ | | | ^ +-------+ +-------------------------+--------+----------------------+ | | | | GCC | | | EDMA | | | | | +---+---+ | PPE +---+----+ | | | | | clk | | | | | | +-------->| +-----------------------+------+-----+---------------+ | | | | | | Switch Core |Port0 | |Port7(EIP FIFO)| | | | | | | +---+--+ +------+--------+ | | | | | | | | | | | | | +-------+ | | +------+---------------+----+ | | | | | |CMN PLL| | | +---+ +---+ +----+ | +--------+ | | | | | | +---+---+ | | |BM | |QM | |SCH | | | L2/L3 | ....... | | | | | | | | | | +---+ +---+ +----+ | +--------+ | | | | | | | | | | +------+--------------------+ | | | | | | | | | | | | | | | | v | | +-----+-+-----+-+-----+-+-+---+--+-----+-+-----+ | | | | | | +------+ | | |Port1| |Port2| |Port3| |Port4| |Port5| |Port6| | | | | | | |NSSCC | | | +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ | | mac| | | | +-+-+--+ | | |MAC0 | |MAC1 | |MAC2 | |MAC3 | |MAC4 | |MAC5 | | |<---+ | | | ^ | |clk | | +-----+-+-----+-+-----+-+-----+--+-----+-+-----+ | | ops | | | | | +------>| +----|------|-------|-------|---------|--------|-----+ | | | | | | +---------------------------------------------------------+ | | | | | | | | | | | | | | | | MII clk | QSGMII USXGMII USXGMII | | | | +--------------->| | | | | | | | | | +-------------------------+ +---------+ +---------+ | | | |125/312.5MHz clk| (PCS0) | | (PCS1) | | (PCS2) | pcs ops | | | +----------------+ UNIPHY0 | | UNIPHY1 | | UNIPHY2 |<--------+ | +----------------->| | | | | | | | 31.25MHz ref clk +-------------------------+ +---------+ +---------+ | | | | | | | | | | +-----------------------------------------------------+ | |25/50MHz ref clk| +-------------------------+ +------+ +------+ | link | +--------------->| | QUAD PHY | | PHY4 | | PHY5 | |---------+ | +-------------------------+ +------+ +------+ | change | | | MDIO bus | +-----------------------------------------------------+}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhK!hjhhubh)}(hThe CMN (Common) PLL, NSSCC (Networking Sub System Clock Controller) and GCC (Global Clock Controller) blocks are in the SoC and act as clock providers.h]hThe CMN (Common) PLL, NSSCC (Networking Sub System Clock Controller) and GCC (Global Clock Controller) blocks are in the SoC and act as clock providers.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjhhubh)}(hThe UNIPHY block is in the SoC and provides the PCS (Physical Coding Sublayer) and XPCS (10-Gigabit Physical Coding Sublayer) functions to support different interface modes between the PPE MAC and the external PHY.h]hThe UNIPHY block is in the SoC and provides the PCS (Physical Coding Sublayer) and XPCS (10-Gigabit Physical Coding Sublayer) functions to support different interface modes between the PPE MAC and the external PHY.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjhhubh)}(hPThis documentation focuses on the descriptions of PPE engine and the PPE driver.h]hPThis documentation focuses on the descriptions of PPE engine and the PPE driver.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhjhhubh)}(hThe Ethernet functionality in the PPE (Packet Process Engine) is comprised of three components: the switch core, port wrapper and Ethernet DMA.h]hThe Ethernet functionality in the PPE (Packet Process Engine) is comprised of three components: the switch core, port wrapper and Ethernet DMA.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKThjhhubh)}(hXThe Switch core in the IPQ9574 PPE has maximum of 6 front panel ports and two FIFO interfaces. One of the two FIFO interfaces is used for Ethernet port to host CPU communication using Ethernet DMA. The other one is used to communicate to the EIP engine which is used for IPsec offload. On the IPQ9574, the PPE includes 6 GMAC/XGMACs that can be connected with external Ethernet PHY. Switch core also includes BM (Buffer Management), QM (Queue Management) and SCH (Scheduler) modules for supporting the packet processing.h]hXThe Switch core in the IPQ9574 PPE has maximum of 6 front panel ports and two FIFO interfaces. One of the two FIFO interfaces is used for Ethernet port to host CPU communication using Ethernet DMA. The other one is used to communicate to the EIP engine which is used for IPsec offload. On the IPQ9574, the PPE includes 6 GMAC/XGMACs that can be connected with external Ethernet PHY. Switch core also includes BM (Buffer Management), QM (Queue Management) and SCH (Scheduler) modules for supporting the packet processing.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjhhubh)}(hThe port wrapper provides connections from the 6 GMAC/XGMACS to UNIPHY (PCS) supporting various modes such as SGMII/QSGMII/PSGMII/USXGMII/10G-BASER. There are 3 UNIPHY (PCS) instances supported on the IPQ9574.h]hThe port wrapper provides connections from the 6 GMAC/XGMACS to UNIPHY (PCS) supporting various modes such as SGMII/QSGMII/PSGMII/USXGMII/10G-BASER. There are 3 UNIPHY (PCS) instances supported on the IPQ9574.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK_hjhhubh)}(heEthernet DMA is used to transmit and receive packets between the Ethernet subsystem and ARM host CPU.h]heEthernet DMA is used to transmit and receive packets between the Ethernet subsystem and ARM host CPU.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchjhhubh)}(h^The following lists the main blocks in the PPE engine which will be driven by this PPE driver:h]h^The following lists the main blocks in the PPE engine which will be driven by this PPE driver:}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhjhhubj)}(hhh](j)}(h@BM BM is the hardware buffer manager for the PPE switch ports.h]hdefinition_list)}(hhh]hdefinition_list_item)}(h>BM BM is the hardware buffer manager for the PPE switch ports.h](hterm)}(hBMh]hBM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKihjubh definition)}(hhh]h)}(h;BM is the hardware buffer manager for the PPE switch ports.h]h;BM is the hardware buffer manager for the PPE switch ports.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKihjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubj)}(hSQM Queue Manager for managing the egress hardware queues of the PPE switch ports.h]j)}(hhh]j)}(hQQM Queue Manager for managing the egress hardware queues of the PPE switch ports.h](j)}(hQMh]hQM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKkhjubj)}(hhh]h)}(hNQueue Manager for managing the egress hardware queues of the PPE switch ports.h]hNQueue Manager for managing the egress hardware queues of the PPE switch ports.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKlhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKkhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubj)}(h[SCH The scheduler which manages the hardware traffic scheduling for the PPE switch ports.h]j)}(hhh]j)}(hYSCH The scheduler which manages the hardware traffic scheduling for the PPE switch ports.h](j)}(hSCHh]hSCH}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKmhjubj)}(hhh]h)}(hUThe scheduler which manages the hardware traffic scheduling for the PPE switch ports.h]hUThe scheduler which manages the hardware traffic scheduling for the PPE switch ports.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKnhj,ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKmhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubj)}(hXL2 The L2 block performs the packet bridging in the switch core. The bridge domain is represented by the VSI (Virtual Switch Instance) domain in PPE. FDB learning can be enabled based on the VSI domain and bridge forwarding occurs within the VSI domain.h]j)}(hhh]j)}(hL2 The L2 block performs the packet bridging in the switch core. The bridge domain is represented by the VSI (Virtual Switch Instance) domain in PPE. FDB learning can be enabled based on the VSI domain and bridge forwarding occurs within the VSI domain.h](j)}(hL2h]hL2}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKqhj\ubj)}(hhh]h)}(hThe L2 block performs the packet bridging in the switch core. The bridge domain is represented by the VSI (Virtual Switch Instance) domain in PPE. FDB learning can be enabled based on the VSI domain and bridge forwarding occurs within the VSI domain.h]hThe L2 block performs the packet bridging in the switch core. The bridge domain is represented by the VSI (Virtual Switch Instance) domain in PPE. FDB learning can be enabled based on the VSI domain and bridge forwarding occurs within the VSI domain.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphjnubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jhhhKqhjYubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubj)}(hX}MAC The PPE in the IPQ9574 supports up to six MACs (MAC0 to MAC5) which are corresponding to six switch ports (port1 to port6). The MAC block is connected with external PHY through the UNIPHY PCS block. Each MAC block includes the GMAC and XGMAC blocks and the switch port can select to use GMAC or XMAC through a MUX selection according to the external PHY's capability.h]j)}(hhh]j)}(hXsMAC The PPE in the IPQ9574 supports up to six MACs (MAC0 to MAC5) which are corresponding to six switch ports (port1 to port6). The MAC block is connected with external PHY through the UNIPHY PCS block. Each MAC block includes the GMAC and XGMAC blocks and the switch port can select to use GMAC or XMAC through a MUX selection according to the external PHY's capability.h](j)}(hMACh]hMAC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKwhjubj)}(hhh]h)}(hXoThe PPE in the IPQ9574 supports up to six MACs (MAC0 to MAC5) which are corresponding to six switch ports (port1 to port6). The MAC block is connected with external PHY through the UNIPHY PCS block. Each MAC block includes the GMAC and XGMAC blocks and the switch port can select to use GMAC or XMAC through a MUX selection according to the external PHY's capability.h]hXqThe PPE in the IPQ9574 supports up to six MACs (MAC0 to MAC5) which are corresponding to six switch ports (port1 to port6). The MAC block is connected with external PHY through the UNIPHY PCS block. Each MAC block includes the GMAC and XGMAC blocks and the switch port can select to use GMAC or XMAC through a MUX selection according to the external PHY’s capability.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKthjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKwhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubj)}(hEDMA (Ethernet DMA) The Ethernet DMA is used to transmit and receive Ethernet packets between the PPE ports and the ARM cores. h]j)}(hhh]j)}(hEDMA (Ethernet DMA) The Ethernet DMA is used to transmit and receive Ethernet packets between the PPE ports and the ARM cores. h](j)}(hEDMA (Ethernet DMA)h]hEDMA (Ethernet DMA)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK{hjubj)}(hhh]h)}(hjThe Ethernet DMA is used to transmit and receive Ethernet packets between the PPE ports and the ARM cores.h]hjThe Ethernet DMA is used to transmit and receive Ethernet packets between the PPE ports and the ARM cores.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKzhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhK{hjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhKihjhhubh)}(hX8The received packet on a PPE MAC port can be forwarded to another PPE MAC port. It can be also forwarded to internal switch port0 so that the packet can be delivered to the ARM cores using the Ethernet DMA (EDMA) engine. The Ethernet DMA driver will deliver the packet to the corresponding 'netdevice' interface.h]hX<The received packet on a PPE MAC port can be forwarded to another PPE MAC port. It can be also forwarded to internal switch port0 so that the packet can be delivered to the ARM cores using the Ethernet DMA (EDMA) engine. The Ethernet DMA driver will deliver the packet to the corresponding ‘netdevice’ interface.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hjhhubh)}(hXThe software instantiations of the PPE MAC (netdevice), PCS and external PHYs interact with the Linux PHYLINK framework to manage the connectivity between the PPE ports and the connected PHYs, and the port link states. This is also illustrated in above diagram.h]hXThe software instantiations of the PPE MAC (netdevice), PCS and external PHYs interact with the Linux PHYLINK framework to manage the connectivity between the PPE ports and the connected PHYs, and the port link states. This is also illustrated in above diagram.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]j,ah ]h"] ppe overviewah$]h&]uh1hhhhhhhhK referencedKubh)}(hhh](h)}(hPPE Driver Overviewh]hPPE Driver Overview}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhhhhhKubh)}(hXPPE driver is Ethernet driver for the Qualcomm IPQ SoC. It is a single platform driver which includes the PPE part and Ethernet DMA part. The PPE part initializes and drives the various blocks in PPE switch core such as BM/QM/L2 blocks and the PPE MACs. The EDMA part drives the Ethernet DMA for packet transfer between PPE ports and ARM cores, and enables the netdevice driver for the PPE ports.h]hXPPE driver is Ethernet driver for the Qualcomm IPQ SoC. It is a single platform driver which includes the PPE part and Ethernet DMA part. The PPE part initializes and drives the various blocks in PPE switch core such as BM/QM/L2 blocks and the PPE MACs. The EDMA part drives the Ethernet DMA for packet transfer between PPE ports and ARM cores, and enables the netdevice driver for the PPE ports.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjEhhubh)}(hOThe PPE driver files in drivers/net/ethernet/qualcomm/ppe/ are listed as below:h]hOThe PPE driver files in drivers/net/ethernet/qualcomm/ppe/ are listed as below:}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjEhhubj)}(hhh](j)}(hMakefileh]h)}(hjwh]hMakefile}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjuubah}(h]h ]h"]h$]h&]uh1jhjrhhhhhNubj)}(hppe.ch]h)}(hjh]hppe.c}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjrhhhhhNubj)}(hppe.hh]h)}(hjh]hppe.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjrhhhhhNubj)}(h ppe_config.ch]h)}(hjh]h ppe_config.c}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjrhhhhhNubj)}(h ppe_config.hh]h)}(hjh]h ppe_config.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjrhhhhhNubj)}(h ppe_debugfs.ch]h)}(hjh]h ppe_debugfs.c}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjrhhhhhNubj)}(h ppe_debugfs.hh]h)}(hjh]h ppe_debugfs.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjrhhhhhNubj)}(h ppe_regs.h h]h)}(h ppe_regs.hh]h ppe_regs.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjrhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhjEhhubh)}(hThe ppe.c file contains the main PPE platform driver and undertakes the initialization of PPE switch core blocks such as QM, BM and L2. The configuration APIs for these hardware blocks are provided in the ppe_config.c file.h]hThe ppe.c file contains the main PPE platform driver and undertakes the initialization of PPE switch core blocks such as QM, BM and L2. The configuration APIs for these hardware blocks are provided in the ppe_config.c file.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjEhhubh)}(h[The ppe.h defines the PPE device data structure which will be used by PPE driver functions.h]h[The ppe.h defines the PPE device data structure which will be used by PPE driver functions.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjEhhubh)}(hThe ppe_debugfs.c enables the PPE statistics counters such as PPE port Rx and Tx counters, CPU code counters and queue counters.h]hThe ppe_debugfs.c enables the PPE statistics counters such as PPE port Rx and Tx counters, CPU code counters and queue counters.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjEhhubeh}(h]jPah ]h"]ppe driver overviewah$]h&]uh1hhhhhhhhKjDKubh)}(hhh](h)}(hPPE Driver Supported SoCsh]hPPE Driver Supported SoCs}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehhhhhKubh)}(h.The PPE driver supports the following IPQ SoC:h]h.The PPE driver supports the following IPQ SoC:}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjehhubj)}(hhh]j)}(h IPQ9574 h]h)}(hIPQ9574h]hIPQ9574}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubah}(h]h ]h"]h$]h&]jjuh1jhhhKhjehhubeh}(h]jsah ]h"]ppe driver supported socsah$]h&]uh1hhhhhhhhKjDKubh)}(hhh](h)}(hEnabling the Driverh]hEnabling the Driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(h0The driver is located in the menu structure at::h]h/The driver is located in the menu structure at:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h-> Device Drivers -> Network device support (NETDEVICES [=y]) -> Ethernet driver support -> Qualcomm devices -> Qualcomm Technologies, Inc. PPE Ethernet supporth]h-> Device Drivers -> Network device support (NETDEVICES [=y]) -> Ethernet driver support -> Qualcomm devices -> Qualcomm Technologies, Inc. PPE Ethernet support}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(hGIf the driver is built as a module, the module will be called qcom-ppe.h]hGIf the driver is built as a module, the module will be called qcom-ppe.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hThe PPE driver functionally depends on the CMN PLL and NSSCC clock controller drivers. Please make sure the dependent modules are installed before installing the PPE driver module.h]hThe PPE driver functionally depends on the CMN PLL and NSSCC clock controller drivers. Please make sure the dependent modules are installed before installing the PPE driver module.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]jah ]h"]enabling the driverah$]h&]uh1hhhhhhhhKjDKubh)}(hhh](h)}(h Debuggingh]h Debugging}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hpThe PPE hardware counters can be accessed using debugfs interface from the ``/sys/kernel/debug/ppe/`` directory.h](hKThe PPE hardware counters can be accessed using debugfs interface from the }(hj hhhNhNubhliteral)}(h``/sys/kernel/debug/ppe/``h]h/sys/kernel/debug/ppe/}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh directory.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]jah ]h"] debuggingah$]h&]uh1hhhhhhhhKjDKubeh}(h]/ppe-ethernet-driver-for-qualcomm-ipq-soc-familyah ]h"]/ppe ethernet driver for qualcomm ipq soc familyah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjaerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}( ppe overview]jappe driver overview]jAappe driver supported socs]jdaenabling the driver]ja debugging]jaurefids}nameids}(j;j8jjjAj,jbjPjjsjjj3ju nametypes}(j;jjAjbjjj3uh}(j8hjhj,jjPjEjsjejjjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.