On Wed, 23 Feb 2022, Ricardo Martinez wrote: > From: Haijun Liu <haijun.liu@xxxxxxxxxxxx> > > Cross Layer DMA (CLDMA) Hardware interface (HIF) enables the control > path of Host-Modem data transfers. CLDMA HIF layer provides a common > interface to the Port Layer. > > CLDMA manages 8 independent RX/TX physical channels with data flow > control in HW queues. CLDMA uses ring buffers of General Packet > Descriptors (GPD) for TX/RX. GPDs can represent multiple or single > data buffers (DB). > > CLDMA HIF initializes GPD rings, registers ISR handlers for CLDMA > interrupts, and initializes CLDMA HW registers. > > CLDMA TX flow: > 1. Port Layer write > 2. Get DB address > 3. Configure GPD > 4. Triggering processing via HW register write > > CLDMA RX flow: > 1. CLDMA HW sends a RX "done" to host > 2. Driver starts thread to safely read GPD > 3. DB is sent to Port layer > 4. Create a new buffer for GPD ring > > Signed-off-by: Haijun Liu <haijun.liu@xxxxxxxxxxxx> > Signed-off-by: Chandrashekar Devegowda <chandrashekar.devegowda@xxxxxxxxx> > Co-developed-by: Ricardo Martinez <ricardo.martinez@xxxxxxxxxxxxxxx> > Signed-off-by: Ricardo Martinez <ricardo.martinez@xxxxxxxxxxxxxxx> > > >From a WWAN framework perspective: > Reviewed-by: Loic Poulain <loic.poulain@xxxxxxxxxx> > --- Since t7xx_pcie_mac_set_int and t7xx_pcie_mac_clear_int are still not here, please note in your commit message there are these dependencies between patches 02 and 03 (and I don't promise somebody else wouldn't oppose). > +{ ... > + for (i = 0; i < ring->length; i++) { ... > + gpd = req->gpd; ... > + } > + > + list_for_each_entry(req, &ring->gpd_ring, entry) { > + t7xx_cldma_rgpd_set_next_ptr(gpd, req->gpd_addr); > + gpd = req->gpd; Despite being correct, this is bit of a trick. I'd add a comment between the loops to help the reader to track where gpd points to. > +/** > + * t7xx_cldma_send_skb() - Send control data to modem. > + * @md_ctrl: CLDMA context structure. > + * @qno: Queue number. > + * @skb: Socket buffer. > + * > + * Return: ... > + * * -EBUSY - Resource lock failure. Leftover? ...with those addressed Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx> And kudos for rx_not_done -> pending_rx_int change. It was a minor thing for me but the logic is so much easier to understand now with that better name :-). Some other nice cleanups compared with v4 also noted. -- i.