Lines Matching refs:head
33 fifo->head = 0; in fm10k_fifo_init()
45 return fifo->tail - fifo->head; in fm10k_fifo_used()
56 return fifo->size + fifo->head - fifo->tail; in fm10k_fifo_unused()
67 return fifo->head == fifo->tail; in fm10k_fifo_empty()
79 return (fifo->head + offset) & (fifo->size - 1); in fm10k_fifo_head_offset()
102 u32 *head = fifo->buffer + fm10k_fifo_head_offset(fifo, 0); in fm10k_fifo_head_len() local
109 return FM10K_TLV_DWORD_LEN(*head); in fm10k_fifo_head_len()
123 fifo->head += len; in fm10k_fifo_head_drop()
137 fifo->head = fifo->tail; in fm10k_fifo_drop_all()
149 static u16 fm10k_mbx_index_len(struct fm10k_mbx_info *mbx, u16 head, u16 tail) in fm10k_mbx_index_len() argument
151 u16 len = tail - head; in fm10k_mbx_index_len()
202 u16 head = (mbx->head + offset + 1) & ((mbx->mbmem_len << 1) - 1); in fm10k_mbx_head_add() local
205 return (head > mbx->head) ? --head : ++head; in fm10k_mbx_head_add()
218 u16 head = (mbx->head - offset - 1) & ((mbx->mbmem_len << 1) - 1); in fm10k_mbx_head_sub() local
221 return (head < mbx->head) ? ++head : --head; in fm10k_mbx_head_sub()
350 u32 *head = fifo->buffer; in fm10k_mbx_write_copy() local
365 head += end; in fm10k_mbx_write_copy()
371 for (end = fifo->size - end; len; head = fifo->buffer) { in fm10k_mbx_write_copy()
379 fm10k_write_reg(hw, mbmem + tail++, *(head++)); in fm10k_mbx_write_copy()
396 struct fm10k_mbx_info *mbx, u16 head) in fm10k_mbx_pull_head() argument
398 u16 mbmem_len, len, ack = fm10k_mbx_index_len(mbx, head, mbx->tail); in fm10k_mbx_pull_head()
442 u16 end, len, head; in fm10k_mbx_read_copy() local
446 head = fm10k_mbx_head_sub(mbx, len); in fm10k_mbx_read_copy()
447 if (head >= mbx->mbmem_len) in fm10k_mbx_read_copy()
448 head++; in fm10k_mbx_read_copy()
458 head &= mbx->mbmem_len - 1; in fm10k_mbx_read_copy()
459 if (!head) in fm10k_mbx_read_copy()
460 head++; in fm10k_mbx_read_copy()
463 *(tail++) = fm10k_read_reg(hw, mbmem + head++); in fm10k_mbx_read_copy()
487 u16 len, seq = fm10k_mbx_index_len(mbx, mbx->head, tail); in fm10k_mbx_push_tail()
495 mbx->head = fm10k_mbx_head_add(mbx, len); in fm10k_mbx_push_tail()
628 static void fm10k_mbx_update_local_crc(struct fm10k_mbx_info *mbx, u16 head) in fm10k_mbx_update_local_crc() argument
630 u16 len = mbx->tail_len - fm10k_mbx_index_len(mbx, head, mbx->tail); in fm10k_mbx_update_local_crc()
633 head = fm10k_fifo_head_offset(&mbx->tx, mbx->pulled); in fm10k_mbx_update_local_crc()
636 mbx->local = fm10k_fifo_crc(&mbx->tx, head, len, mbx->local); in fm10k_mbx_update_local_crc()
722 err = fm10k_tlv_msg_parse(hw, fifo->buffer + fifo->head, in fm10k_mbx_dequeue_rx()
734 fifo->tail -= fifo->head; in fm10k_mbx_dequeue_rx()
735 fifo->head = 0; in fm10k_mbx_dequeue_rx()
852 FM10K_MSG_HDR_FIELD_SET(mbx->head, HEAD) | in fm10k_mbx_create_connect_hdr()
866 FM10K_MSG_HDR_FIELD_SET(mbx->head, HEAD); in fm10k_mbx_create_data_hdr()
892 FM10K_MSG_HDR_FIELD_SET(mbx->head, HEAD); in fm10k_mbx_create_disconnect_hdr()
912 FM10K_MSG_HDR_FIELD_SET(mbx->head, TAIL) | in fm10k_mbx_create_fake_disconnect_hdr()
950 FM10K_MSG_HDR_FIELD_SET(mbx->head, HEAD); in fm10k_mbx_create_error_msg()
964 u16 type, rsvd0, head, tail, size; in fm10k_mbx_validate_msg_hdr() local
970 head = FM10K_MSG_HDR_FIELD_GET(*hdr, HEAD); in fm10k_mbx_validate_msg_hdr()
979 if (tail != mbx->head) in fm10k_mbx_validate_msg_hdr()
985 if (!head || (head == FM10K_MSG_HDR_MASK(HEAD))) in fm10k_mbx_validate_msg_hdr()
987 if (fm10k_mbx_index_len(mbx, head, mbx->tail) > mbx->tail_len) in fm10k_mbx_validate_msg_hdr()
993 if (fm10k_mbx_index_len(mbx, mbx->head, tail) < mbx->mbmem_len) in fm10k_mbx_validate_msg_hdr()
1004 if (!head || (head == FM10K_MSG_HDR_MASK(HEAD))) in fm10k_mbx_validate_msg_hdr()
1029 struct fm10k_mbx_info *mbx, u16 head) in fm10k_mbx_create_reply() argument
1035 fm10k_mbx_update_local_crc(mbx, head); in fm10k_mbx_create_reply()
1038 fm10k_mbx_pull_head(hw, mbx, head); in fm10k_mbx_create_reply()
1070 u16 len, head, ack; in fm10k_mbx_reset_work() local
1076 head = FM10K_MSG_HDR_FIELD_GET(mbx->mbx_hdr, HEAD); in fm10k_mbx_reset_work()
1077 ack = fm10k_mbx_index_len(mbx, head, mbx->tail); in fm10k_mbx_reset_work()
1096 mbx->rx.head = 0; in fm10k_mbx_reset_work()
1162 u16 size, head; in fm10k_mbx_process_connect() local
1166 head = FM10K_MSG_HDR_FIELD_GET(*hdr, HEAD); in fm10k_mbx_process_connect()
1190 mbx->tail = head; in fm10k_mbx_process_connect()
1192 return fm10k_mbx_create_reply(hw, mbx, head); in fm10k_mbx_process_connect()
1207 u16 head, tail; in fm10k_mbx_process_data() local
1211 head = FM10K_MSG_HDR_FIELD_GET(*hdr, HEAD); in fm10k_mbx_process_data()
1216 mbx->tail = head; in fm10k_mbx_process_data()
1233 return fm10k_mbx_create_reply(hw, mbx, head); in fm10k_mbx_process_data()
1249 u16 head; in fm10k_mbx_process_disconnect() local
1253 head = FM10K_MSG_HDR_FIELD_GET(*hdr, HEAD); in fm10k_mbx_process_disconnect()
1275 if (head != mbx->tail) in fm10k_mbx_process_disconnect()
1285 return fm10k_mbx_create_reply(hw, mbx, head); in fm10k_mbx_process_disconnect()
1300 u16 head; in fm10k_mbx_process_error() local
1303 head = FM10K_MSG_HDR_FIELD_GET(*hdr, HEAD); in fm10k_mbx_process_error()
1316 mbx->tail = head; in fm10k_mbx_process_error()
1604 mbx->head = 1; in fm10k_pfvf_mbx_init()
1645 FM10K_MSG_HDR_FIELD_SET(mbx->head, SM_HEAD); in fm10k_sm_mbx_create_data_hdr()
1662 FM10K_MSG_HDR_FIELD_SET(mbx->head, SM_HEAD) | in fm10k_sm_mbx_create_connect_hdr()
1683 mbx->head = 1; in fm10k_sm_mbx_connect_reset()
1784 u16 tail, head, ver; in fm10k_sm_mbx_validate_fifo_hdr() local
1788 head = FM10K_MSG_HDR_FIELD_GET(*hdr, SM_HEAD); in fm10k_sm_mbx_validate_fifo_hdr()
1794 if (!head || head > FM10K_SM_MBX_FIFO_LEN) in fm10k_sm_mbx_validate_fifo_hdr()
1798 if (mbx->tail < head) in fm10k_sm_mbx_validate_fifo_hdr()
1799 head += mbx->mbmem_len - 1; in fm10k_sm_mbx_validate_fifo_hdr()
1800 if (tail < mbx->head) in fm10k_sm_mbx_validate_fifo_hdr()
1802 if (fm10k_mbx_index_len(mbx, head, mbx->tail) > mbx->tail_len) in fm10k_sm_mbx_validate_fifo_hdr()
1804 if (fm10k_mbx_index_len(mbx, mbx->head, tail) < mbx->mbmem_len) in fm10k_sm_mbx_validate_fifo_hdr()
1895 if (tail < mbx->head) in fm10k_sm_mbx_receive()
1907 mbx->head = fm10k_mbx_head_sub(mbx, mbx->pushed); in fm10k_sm_mbx_receive()
1911 if (mbx->head > mbmem_len) in fm10k_sm_mbx_receive()
1912 mbx->head -= mbmem_len; in fm10k_sm_mbx_receive()
1926 struct fm10k_mbx_info *mbx, u16 head) in fm10k_sm_mbx_transmit() argument
1935 if (mbx->tail < head) in fm10k_sm_mbx_transmit()
1936 head += mbmem_len; in fm10k_sm_mbx_transmit()
1938 fm10k_mbx_pull_head(hw, mbx, head); in fm10k_sm_mbx_transmit()
1969 struct fm10k_mbx_info *mbx, u16 head) in fm10k_sm_mbx_create_reply() argument
1975 fm10k_sm_mbx_transmit(hw, mbx, head); in fm10k_sm_mbx_create_reply()
2043 u16 head, tail; in fm10k_sm_mbx_process_version_1() local
2048 head = FM10K_MSG_HDR_FIELD_GET(*hdr, SM_HEAD); in fm10k_sm_mbx_process_version_1()
2070 fm10k_sm_mbx_create_reply(hw, mbx, head); in fm10k_sm_mbx_process_version_1()