Lines Matching refs:pkt

48 	struct vio_ver_info pkt;  in send_version()  local
52 memset(&pkt, 0, sizeof(pkt)); in send_version()
53 init_tag(&pkt.tag, VIO_TYPE_CTRL, VIO_SUBTYPE_INFO, VIO_VER_INFO); in send_version()
54 pkt.major = major; in send_version()
55 pkt.minor = minor; in send_version()
56 pkt.dev_class = vio->dev_class; in send_version()
61 return send_ctrl(vio, &pkt.tag, sizeof(pkt)); in send_version()
161 struct vio_msg_tag *pkt = arg; in process_unknown() local
164 pkt->type, pkt->stype, pkt->stype_env, pkt->sid); in process_unknown()
178 struct vio_dring_register pkt; in send_dreg() member
186 init_tag(&u.pkt.tag, VIO_TYPE_CTRL, VIO_SUBTYPE_INFO, VIO_DRING_REG); in send_dreg()
187 u.pkt.dring_ident = 0; in send_dreg()
188 u.pkt.num_descr = dr->num_entries; in send_dreg()
189 u.pkt.descr_size = dr->entry_size; in send_dreg()
190 u.pkt.options = VIO_TX_DRING; in send_dreg()
191 u.pkt.num_cookies = dr->ncookies; in send_dreg()
195 u.pkt.num_descr, u.pkt.descr_size, u.pkt.options, in send_dreg()
196 u.pkt.num_cookies); in send_dreg()
199 u.pkt.cookies[i] = dr->cookies[i]; in send_dreg()
203 (unsigned long long) u.pkt.cookies[i].cookie_addr, in send_dreg()
204 (unsigned long long) u.pkt.cookies[i].cookie_size); in send_dreg()
207 return send_ctrl(vio, &u.pkt.tag, sizeof(u)); in send_dreg()
212 struct vio_rdx pkt; in send_rdx() local
214 memset(&pkt, 0, sizeof(pkt)); in send_rdx()
216 init_tag(&pkt.tag, VIO_TYPE_CTRL, VIO_SUBTYPE_INFO, VIO_RDX); in send_rdx()
220 return send_ctrl(vio, &pkt.tag, sizeof(pkt)); in send_rdx()
245 struct vio_ver_info *pkt) in process_ver_info() argument
251 pkt->major, pkt->minor, pkt->dev_class); in process_ver_info()
259 vap = find_by_major(vio, pkt->major); in process_ver_info()
261 vio->_peer_sid = pkt->tag.sid; in process_ver_info()
264 pkt->tag.stype = VIO_SUBTYPE_NACK; in process_ver_info()
265 pkt->major = 0; in process_ver_info()
266 pkt->minor = 0; in process_ver_info()
268 err = send_ctrl(vio, &pkt->tag, sizeof(*pkt)); in process_ver_info()
269 } else if (vap->major != pkt->major) { in process_ver_info()
270 pkt->tag.stype = VIO_SUBTYPE_NACK; in process_ver_info()
271 pkt->major = vap->major; in process_ver_info()
272 pkt->minor = vap->minor; in process_ver_info()
274 pkt->major, pkt->minor); in process_ver_info()
275 err = send_ctrl(vio, &pkt->tag, sizeof(*pkt)); in process_ver_info()
278 .major = pkt->major, in process_ver_info()
279 .minor = pkt->minor, in process_ver_info()
283 pkt->minor = ver.minor; in process_ver_info()
284 pkt->tag.stype = VIO_SUBTYPE_ACK; in process_ver_info()
286 pkt->major, pkt->minor); in process_ver_info()
287 err = send_ctrl(vio, &pkt->tag, sizeof(*pkt)); in process_ver_info()
300 struct vio_ver_info *pkt) in process_ver_ack() argument
303 pkt->major, pkt->minor, pkt->dev_class); in process_ver_ack()
306 if (vio->ver.major != pkt->major || in process_ver_ack()
307 vio->ver.minor != pkt->minor) { in process_ver_ack()
308 pkt->tag.stype = VIO_SUBTYPE_NACK; in process_ver_ack()
309 (void) send_ctrl(vio, &pkt->tag, sizeof(*pkt)); in process_ver_ack()
313 vio->ver.major = pkt->major; in process_ver_ack()
314 vio->ver.minor = pkt->minor; in process_ver_ack()
333 struct vio_ver_info *pkt) in process_ver_nack() argument
338 pkt->major, pkt->minor, pkt->dev_class); in process_ver_nack()
340 if (pkt->major == 0 && pkt->minor == 0) in process_ver_nack()
342 nver = find_by_major(vio, pkt->major); in process_ver_nack()
352 static int process_ver(struct vio_driver_state *vio, struct vio_ver_info *pkt) in process_ver() argument
354 switch (pkt->tag.stype) { in process_ver()
356 return process_ver_info(vio, pkt); in process_ver()
359 return process_ver_ack(vio, pkt); in process_ver()
362 return process_ver_nack(vio, pkt); in process_ver()
369 static int process_attr(struct vio_driver_state *vio, void *pkt) in process_attr() argument
376 err = vio->ops->handle_attr(vio, pkt); in process_attr()
412 struct vio_dring_register *pkt) in process_dreg_info() argument
419 (unsigned long long) pkt->dring_ident, in process_dreg_info()
420 pkt->num_descr, pkt->descr_size, pkt->options, in process_dreg_info()
421 pkt->num_cookies); in process_dreg_info()
431 if (!(pkt->options & VIO_TX_DRING)) in process_dreg_info()
433 pkt->options = VIO_TX_DRING; in process_dreg_info()
438 vio->desc_buf = kzalloc(pkt->descr_size, GFP_ATOMIC); in process_dreg_info()
442 vio->desc_buf_len = pkt->descr_size; in process_dreg_info()
446 dr->num_entries = pkt->num_descr; in process_dreg_info()
447 dr->entry_size = pkt->descr_size; in process_dreg_info()
448 dr->ncookies = pkt->num_cookies; in process_dreg_info()
450 dr->cookies[i] = pkt->cookies[i]; in process_dreg_info()
455 pkt->cookies[i].cookie_addr, in process_dreg_info()
457 pkt->cookies[i].cookie_size); in process_dreg_info()
460 pkt->tag.stype = VIO_SUBTYPE_ACK; in process_dreg_info()
461 pkt->dring_ident = ++dr->ident; in process_dreg_info()
465 (unsigned long long) pkt->dring_ident, in process_dreg_info()
466 pkt->num_descr, pkt->descr_size, pkt->options, in process_dreg_info()
467 pkt->num_cookies); in process_dreg_info()
469 len = (sizeof(*pkt) + in process_dreg_info()
471 if (send_ctrl(vio, &pkt->tag, len) < 0) in process_dreg_info()
479 pkt->tag.stype = VIO_SUBTYPE_NACK; in process_dreg_info()
481 (void) send_ctrl(vio, &pkt->tag, sizeof(*pkt)); in process_dreg_info()
487 struct vio_dring_register *pkt) in process_dreg_ack() argument
493 (unsigned long long) pkt->dring_ident, in process_dreg_ack()
494 pkt->num_descr, pkt->descr_size, pkt->options, in process_dreg_ack()
495 pkt->num_cookies); in process_dreg_ack()
502 dr->ident = pkt->dring_ident; in process_dreg_ack()
514 struct vio_dring_register *pkt) in process_dreg_nack() argument
518 (unsigned long long) pkt->dring_ident, in process_dreg_nack()
519 pkt->num_descr, pkt->descr_size, pkt->options, in process_dreg_nack()
520 pkt->num_cookies); in process_dreg_nack()
526 struct vio_dring_register *pkt) in process_dreg() argument
531 switch (pkt->tag.stype) { in process_dreg()
533 return process_dreg_info(vio, pkt); in process_dreg()
536 return process_dreg_ack(vio, pkt); in process_dreg()
539 return process_dreg_nack(vio, pkt); in process_dreg()
547 struct vio_dring_unregister *pkt) in process_dunreg() argument
553 if (pkt->dring_ident != dr->ident) in process_dunreg()
567 static int process_rdx_info(struct vio_driver_state *vio, struct vio_rdx *pkt) in process_rdx_info() argument
571 pkt->tag.stype = VIO_SUBTYPE_ACK; in process_rdx_info()
573 if (send_ctrl(vio, &pkt->tag, sizeof(*pkt)) < 0) in process_rdx_info()
580 static int process_rdx_ack(struct vio_driver_state *vio, struct vio_rdx *pkt) in process_rdx_ack() argument
591 static int process_rdx_nack(struct vio_driver_state *vio, struct vio_rdx *pkt) in process_rdx_nack() argument
598 static int process_rdx(struct vio_driver_state *vio, struct vio_rdx *pkt) in process_rdx() argument
603 switch (pkt->tag.stype) { in process_rdx()
605 return process_rdx_info(vio, pkt); in process_rdx()
608 return process_rdx_ack(vio, pkt); in process_rdx()
611 return process_rdx_nack(vio, pkt); in process_rdx()
618 int vio_control_pkt_engine(struct vio_driver_state *vio, void *pkt) in vio_control_pkt_engine() argument
620 struct vio_msg_tag *tag = pkt; in vio_control_pkt_engine()
626 err = process_ver(vio, pkt); in vio_control_pkt_engine()
630 err = process_attr(vio, pkt); in vio_control_pkt_engine()
634 err = process_dreg(vio, pkt); in vio_control_pkt_engine()
638 err = process_dunreg(vio, pkt); in vio_control_pkt_engine()
642 err = process_rdx(vio, pkt); in vio_control_pkt_engine()
646 err = process_unknown(vio, pkt); in vio_control_pkt_engine()