Lines Matching refs:pp
103 struct pp_ctx *pp = (void *)ctx; in pp_ping() local
108 spin_lock_irqsave(&pp->db_lock, irqflags); in pp_ping()
110 db_mask = ntb_db_valid_mask(pp->ntb); in pp_ping()
111 db_bits = ntb_db_read(pp->ntb); in pp_ping()
114 dev_dbg(&pp->ntb->dev, in pp_ping()
117 ntb_db_clear(pp->ntb, db_bits); in pp_ping()
120 db_bits = ((pp->db_bits | db_bits) << 1) & db_mask; in pp_ping()
125 spad_rd = ntb_spad_read(pp->ntb, 0); in pp_ping()
128 dev_dbg(&pp->ntb->dev, in pp_ping()
132 ntb_peer_spad_write(pp->ntb, 0, spad_wr); in pp_ping()
133 ntb_peer_db_set(pp->ntb, db_bits); in pp_ping()
134 ntb_db_clear_mask(pp->ntb, db_mask); in pp_ping()
136 pp->db_bits = 0; in pp_ping()
138 spin_unlock_irqrestore(&pp->db_lock, irqflags); in pp_ping()
143 struct pp_ctx *pp = ctx; in pp_link_event() local
145 if (ntb_link_is_up(pp->ntb, NULL, NULL) == 1) { in pp_link_event()
146 dev_dbg(&pp->ntb->dev, "link is up\n"); in pp_link_event()
147 pp_ping((unsigned long)pp); in pp_link_event()
149 dev_dbg(&pp->ntb->dev, "link is down\n"); in pp_link_event()
150 del_timer(&pp->db_timer); in pp_link_event()
156 struct pp_ctx *pp = ctx; in pp_db_event() local
160 spin_lock_irqsave(&pp->db_lock, irqflags); in pp_db_event()
162 db_mask = ntb_db_vector_mask(pp->ntb, vec); in pp_db_event()
163 db_bits = db_mask & ntb_db_read(pp->ntb); in pp_db_event()
164 ntb_db_set_mask(pp->ntb, db_mask); in pp_db_event()
165 ntb_db_clear(pp->ntb, db_bits); in pp_db_event()
167 pp->db_bits |= db_bits; in pp_db_event()
169 mod_timer(&pp->db_timer, jiffies + pp->db_delay); in pp_db_event()
171 dev_dbg(&pp->ntb->dev, in pp_db_event()
175 spin_unlock_irqrestore(&pp->db_lock, irqflags); in pp_db_event()
186 struct pp_ctx *pp; in pp_probe() local
205 pp = kmalloc(sizeof(*pp), GFP_KERNEL); in pp_probe()
206 if (!pp) { in pp_probe()
211 pp->ntb = ntb; in pp_probe()
212 pp->db_bits = 0; in pp_probe()
213 spin_lock_init(&pp->db_lock); in pp_probe()
214 setup_timer(&pp->db_timer, pp_ping, (unsigned long)pp); in pp_probe()
215 pp->db_delay = msecs_to_jiffies(delay_ms); in pp_probe()
217 rc = ntb_set_ctx(ntb, pp, &pp_ops); in pp_probe()
227 kfree(pp); in pp_probe()
235 struct pp_ctx *pp = ntb->ctx; in pp_remove() local
238 del_timer_sync(&pp->db_timer); in pp_remove()
241 kfree(pp); in pp_remove()