Lines Matching full:layout
125 struct mctp_astlpc_layout layout; member
282 } layout; member
395 struct mctp_astlpc_layout *layout) in mctp_astlpc_layout_read() argument
406 layout->rx.offset = be32toh(hdr.layout.tx_offset); in mctp_astlpc_layout_read()
407 layout->rx.size = be32toh(hdr.layout.tx_size); in mctp_astlpc_layout_read()
408 layout->tx.offset = be32toh(hdr.layout.rx_offset); in mctp_astlpc_layout_read()
409 layout->tx.size = be32toh(hdr.layout.rx_size); in mctp_astlpc_layout_read()
413 layout->rx.offset = be32toh(hdr.layout.rx_offset); in mctp_astlpc_layout_read()
414 layout->rx.size = be32toh(hdr.layout.rx_size); in mctp_astlpc_layout_read()
415 layout->tx.offset = be32toh(hdr.layout.tx_offset); in mctp_astlpc_layout_read()
416 layout->tx.size = be32toh(hdr.layout.tx_size); in mctp_astlpc_layout_read()
423 struct mctp_astlpc_layout *layout) in mctp_astlpc_layout_write() argument
434 hdr.layout.rx_offset = htobe32(layout->tx.offset); in mctp_astlpc_layout_write()
435 hdr.layout.rx_size = htobe32(layout->tx.size); in mctp_astlpc_layout_write()
436 hdr.layout.tx_offset = htobe32(layout->rx.offset); in mctp_astlpc_layout_write()
437 hdr.layout.tx_size = htobe32(layout->rx.size); in mctp_astlpc_layout_write()
439 return mctp_astlpc_lpc_write(astlpc, &hdr.layout, in mctp_astlpc_layout_write()
441 layout), in mctp_astlpc_layout_write()
442 sizeof(hdr.layout)); in mctp_astlpc_layout_write()
451 rx_size_be = htobe32(layout->rx.size); in mctp_astlpc_layout_write()
454 layout.rx_size), in mctp_astlpc_layout_write()
508 const struct mctp_astlpc_layout *layout) in mctp_astlpc_layout_validate() argument
510 const struct mctp_astlpc_buffer *rx = &layout->rx; in mctp_astlpc_layout_validate()
511 const struct mctp_astlpc_buffer *tx = &layout->tx; in mctp_astlpc_layout_validate()
561 astlpc->layout.tx.offset = control_size; in mctp_astlpc_init_bmc()
562 astlpc->layout.tx.size = sz; in mctp_astlpc_init_bmc()
563 astlpc->layout.rx.offset = in mctp_astlpc_init_bmc()
564 astlpc->layout.tx.offset + astlpc->layout.tx.size; in mctp_astlpc_init_bmc()
565 astlpc->layout.rx.size = sz; in mctp_astlpc_init_bmc()
567 if (!mctp_astlpc_layout_validate(astlpc, &astlpc->layout)) { in mctp_astlpc_init_bmc()
579 .layout.rx_offset = htobe32(astlpc->layout.tx.offset), in mctp_astlpc_init_bmc()
580 .layout.rx_size = htobe32(astlpc->layout.tx.size), in mctp_astlpc_init_bmc()
581 .layout.tx_offset = htobe32(astlpc->layout.rx.offset), in mctp_astlpc_init_bmc()
582 .layout.tx_size = htobe32(astlpc->layout.rx.size), in mctp_astlpc_init_bmc()
641 struct mctp_astlpc_layout layout; in mctp_astlpc_negotiate_layout_host() local
646 rc = mctp_astlpc_layout_read(astlpc, &layout); in mctp_astlpc_negotiate_layout_host()
650 if (!mctp_astlpc_layout_validate(astlpc, &layout)) { in mctp_astlpc_negotiate_layout_host()
653 "BMC provided invalid buffer layout: Rx {0x%" PRIx32 in mctp_astlpc_negotiate_layout_host()
655 layout.rx.offset, layout.rx.size, layout.tx.offset, in mctp_astlpc_negotiate_layout_host()
656 layout.tx.size); in mctp_astlpc_negotiate_layout_host()
665 layout.rx.size = sz; in mctp_astlpc_negotiate_layout_host()
667 if (!mctp_astlpc_layout_validate(astlpc, &layout)) { in mctp_astlpc_negotiate_layout_host()
670 "Generated invalid buffer layout with size %" PRIu32 in mctp_astlpc_negotiate_layout_host()
673 sz, layout.rx.offset, layout.rx.size, layout.tx.offset, in mctp_astlpc_negotiate_layout_host()
674 layout.tx.size); in mctp_astlpc_negotiate_layout_host()
681 return mctp_astlpc_layout_write(astlpc, &layout); in mctp_astlpc_negotiate_layout_host()
846 if (len > astlpc->proto->body_size(astlpc->layout.tx.size)) { in mctp_binding_astlpc_tx()
849 astlpc->proto->body_size(astlpc->layout.tx.size)); in mctp_binding_astlpc_tx()
856 mctp_astlpc_lpc_write(astlpc, &len_be, astlpc->layout.tx.offset, in mctp_binding_astlpc_tx()
862 mctp_astlpc_lpc_write(astlpc, hdr, astlpc->layout.tx.offset + 4, len); in mctp_binding_astlpc_tx()
864 astlpc->layout.tx.state = buffer_state_prepared; in mctp_binding_astlpc_tx()
868 astlpc->layout.tx.state = buffer_state_released; in mctp_binding_astlpc_tx()
894 struct mctp_astlpc_layout *layout) in mctp_astlpc_calculate_mtu() argument
899 low = MIN(astlpc->layout.rx.offset, astlpc->layout.tx.offset); in mctp_astlpc_calculate_mtu()
900 high = MAX(astlpc->layout.rx.offset, astlpc->layout.tx.offset); in mctp_astlpc_calculate_mtu()
912 rpkt = MIN(limit, layout->tx.size); in mctp_astlpc_calculate_mtu()
926 /* Extract the host's proposed layout */ in mctp_astlpc_negotiate_layout_bmc()
931 /* Do we have a reasonable layout? */ in mctp_astlpc_negotiate_layout_bmc()
943 pending = astlpc->layout; in mctp_astlpc_negotiate_layout_bmc()
949 astlpc->layout = pending; in mctp_astlpc_negotiate_layout_bmc()
952 rc = mctp_astlpc_layout_write(astlpc, &astlpc->layout); in mctp_astlpc_negotiate_layout_bmc()
1005 astlpc->layout.tx.state = buffer_state_acquired; in mctp_astlpc_init_channel()
1006 astlpc->layout.rx.state = buffer_state_released; in mctp_astlpc_init_channel()
1030 mctp_astlpc_lpc_read(astlpc, &body, astlpc->layout.rx.offset, in mctp_astlpc_rx_start()
1034 if (body > astlpc->proto->body_size(astlpc->layout.rx.size)) { in mctp_astlpc_rx_start()
1058 astlpc->layout.rx.offset + 4, packet); in mctp_astlpc_rx_start()
1060 astlpc->layout.rx.state = buffer_state_prepared; in mctp_astlpc_rx_start()
1066 astlpc->layout.rx.state = buffer_state_released; in mctp_astlpc_rx_start()
1091 astlpc->layout.tx.state = buffer_state_acquired; in mctp_astlpc_tx_complete()
1097 struct mctp_astlpc_layout layout; in mctp_astlpc_finalise_channel() local
1121 rc = mctp_astlpc_layout_read(astlpc, &layout); in mctp_astlpc_finalise_channel()
1125 if (!mctp_astlpc_layout_validate(astlpc, &layout)) { in mctp_astlpc_finalise_channel()
1130 astlpc->layout = layout; in mctp_astlpc_finalise_channel()
1134 astlpc->proto->body_size(astlpc->layout.tx.size); in mctp_astlpc_finalise_channel()
1137 astlpc->layout.tx.state = buffer_state_acquired; in mctp_astlpc_finalise_channel()
1138 astlpc->layout.rx.state = buffer_state_released; in mctp_astlpc_finalise_channel()
1162 astlpc->layout.rx.state = buffer_state_idle; in mctp_astlpc_update_channel()
1163 astlpc->layout.tx.state = buffer_state_idle; in mctp_astlpc_update_channel()
1172 astlpc->layout.rx.state = buffer_state_idle; in mctp_astlpc_update_channel()
1173 astlpc->layout.tx.state = buffer_state_idle; in mctp_astlpc_update_channel()
1186 return astlpc->layout.tx.state == buffer_state_acquired; in mctp_astlpc_tx_done()
1194 if (astlpc->layout.rx.state == buffer_state_prepared) in mctp_astlpc_poll()
1196 astlpc->layout.rx.state = buffer_state_released; in mctp_astlpc_poll()
1198 if (astlpc->layout.tx.state == buffer_state_prepared) in mctp_astlpc_poll()
1200 astlpc->layout.tx.state = buffer_state_released; in mctp_astlpc_poll()
1233 if (astlpc->layout.rx.state != buffer_state_released) { in mctp_astlpc_poll()
1237 data, astlpc->layout.rx.state); in mctp_astlpc_poll()
1243 if (astlpc->layout.tx.state != buffer_state_released) { in mctp_astlpc_poll()
1247 data, astlpc->layout.tx.state); in mctp_astlpc_poll()
1289 astlpc->layout.rx.state = buffer_state_idle; in __mctp_astlpc_init()
1290 astlpc->layout.tx.state = buffer_state_idle; in __mctp_astlpc_init()
1489 release = astlpc->layout.rx.state == buffer_state_prepared || in mctp_astlpc_init_pollfd()
1490 astlpc->layout.tx.state == buffer_state_prepared; in mctp_astlpc_init_pollfd()