flow_state
req->s_next_psn = flow->flow_state.ib_lpsn + 1;
memset(&flow->flow_state, 0x0, sizeof(flow->flow_state));
flow->idx = qpriv->flow_state.index;
flow->flow_state.generation = qpriv->flow_state.generation;
flow->flow_state.spsn = qpriv->flow_state.psn;
flow->flow_state.lpsn = flow->flow_state.spsn + flow->npkts - 1;
flow->flow_state.r_next_psn =
full_flow_psn(flow, flow->flow_state.spsn);
qpriv->flow_state.psn += flow->npkts;
if (cmp_psn(psn, flow->flow_state.ib_spsn) >= 0 &&
cmp_psn(psn, flow->flow_state.ib_lpsn) <= 0) {
*bth2 = mask_psn(flow->flow_state.ib_spsn + flow->pkt);
cpu_to_be32((flow->flow_state.generation <<
((flow->flow_state.spsn + flow->pkt) &
if ((qpriv->flow_state.psn + npkts) > MAX_TID_FLOW_PSN - 1) {
flow->flow_state.ib_spsn = req->s_next_psn;
flow->flow_state.ib_lpsn =
flow->flow_state.ib_spsn + flow->npkts - 1;
flow->flow_state.generation = flow_psn >> HFI1_KDETH_BTH_SEQ_SHIFT;
flow->flow_state.spsn = flow_psn & HFI1_KDETH_BTH_SEQ_MASK;
flow->flow_state.lpsn = flow->flow_state.spsn +
flow->flow_state.ib_spsn = psn;
flow->flow_state.ib_lpsn = flow->flow_state.ib_spsn + flow->npkts - 1;
struct flow_state *fstate;
fstate = &req->flows[req->clear_tail].flow_state;
resp->verbs_psn = cpu_to_be32(mask_psn(flow->flow_state.ib_spsn +
*bth2 = mask_psn(((flow->flow_state.spsn + flow->pkt++) &
(flow->flow_state.generation <<
if (cmp_psn(ipsn, flow->flow_state.ib_lpsn)) {
if (cmp_psn(kpsn, flow->flow_state.r_next_psn))
flow->flow_state.r_next_psn = mask_psn(kpsn + 1);
flow->flow_state.r_next_psn = mask_psn(kpsn + 1);
hfi1_restart_rc(qp, flow->flow_state.ib_spsn, 0);
flow->flow_state.r_next_psn);
flow->flow_state.lpsn);
flow->flow_state.r_next_psn =
flow->flow_state.r_next_psn = last_psn;
flow->flow_state.r_next_psn =
flow->flow_state.r_next_psn;
flow->flow_state.r_next_psn);
flow->flow_state.lpsn))
flow->flow_state.r_next_psn =
flow->flow_state.r_next_psn;
qpriv->s_nak_psn = mask_psn(flow->flow_state.r_next_psn);
delta_pkts = delta_psn(*bth2, flow->flow_state.ib_spsn);
flow->flow_state.spsn));
fs = &qpriv->flow_state;
qpriv->flow_state.psn = 0;
if (qpriv->flow_state.index < RXE_NUM_TID_FLOWS &&
qpriv->flow_state.index = RXE_NUM_TID_FLOWS;
qpriv->flow_state.last_index = RXE_NUM_TID_FLOWS;
qpriv->flow_state.generation = KERN_GENERATION_RESERVED;
if (qpriv->flow_state.index >= RXE_NUM_TID_FLOWS) {
if (qpriv->flow_state.psn + npkts > MAX_TID_FLOW_PSN - 1) {
flow->flow_state.resp_ib_psn = bth2;
cpu_to_be32((flow->flow_state.generation <<
(flow->flow_state.spsn &
flow->flow_state.generation = flow_psn >> HFI1_KDETH_BTH_SEQ_SHIFT;
flow->flow_state.spsn = flow_psn & HFI1_KDETH_BTH_SEQ_MASK;
flow->flow_state.resp_ib_psn = psn;
flow->flow_state.lpsn = flow->flow_state.spsn +
*bth2 = mask_psn(((flow->flow_state.spsn + flow->pkt++) &
(flow->flow_state.generation <<
if (flow->flow_state.lpsn + 1 +
if (cmp_psn(psn, full_flow_psn(flow, flow->flow_state.lpsn))) {
if (cmp_psn(psn, flow->flow_state.r_next_psn))
flow->flow_state.r_next_psn = mask_psn(psn + 1);
full_flow_psn(flow, flow->flow_state.spsn)) *
flow->flow_state.r_next_psn = mask_psn(psn + 1);
priv->r_next_psn_kdeth = flow->flow_state.r_next_psn;
priv->s_nak_psn = flow->flow_state.r_next_psn;
struct tid_flow_state *fs = &qpriv->flow_state;
*bth2 = full_flow_psn(flow, flow->flow_state.lpsn);
cpu_to_be32(flow->flow_state.resp_ib_psn);
if (cmp_psn(psn, full_flow_psn(flow, flow->flow_state.spsn)) < 0 ||
cmp_psn(req_psn, flow->flow_state.resp_ib_psn) < 0)
full_flow_psn(flow, flow->flow_state.lpsn)) >= 0 &&
req->r_last_acked = flow->flow_state.resp_ib_psn;
fpsn = full_flow_psn(flow, flow->flow_state.spsn);
if (flow->flow_state.generation !=
gen = flow->flow_state.generation;
flow->flow_state.spsn !=
lpsn = flow->flow_state.lpsn;
flow->flow_state.generation =
flow->flow_state.spsn = spsn;
flow->flow_state.lpsn =
flow->flow_state.spsn +
flpsn = full_flow_psn(flow, flow->flow_state.lpsn);
generation = kern_flow_generation_next(flow->flow_state.generation);
struct tid_flow_state *fs = &qpriv->flow_state;
flow->flow_state.lpsn);
next = flow->flow_state.r_next_psn;
flow->flow_state.generation = fs->generation;
flow->flow_state.spsn = fs->psn;
flow->flow_state.lpsn =
flow->flow_state.spsn + flow->npkts - 1;
flow->flow_state.r_next_psn =
flow->flow_state.spsn);
req->flows[flow].flow_state.lpsn)) > 0))) {
flow->flow_state.r_next_psn =
struct tid_flow_state *fs = &qpriv->flow_state;
struct tid_flow_state *fs = &qpriv->flow_state;
struct flow_state flow_state;
__entry->hw_flow_index = priv->flow_state.index;
__entry->generation = priv->flow_state.generation;
__entry->fpsn = priv->flow_state.psn;
__entry->hw_flow_index = priv->flow_state.index;
__entry->generation = priv->flow_state.generation;
__entry->fpsn = priv->flow_state.psn;
__entry->resp_ib_psn = flow->flow_state.resp_ib_psn;
__entry->generation = flow->flow_state.generation;
flow->flow_state.spsn);
flow->flow_state.lpsn);
__entry->r_next_psn = flow->flow_state.r_next_psn;
__entry->ib_spsn = flow->flow_state.ib_spsn;
__entry->ib_lpsn = flow->flow_state.ib_lpsn;
struct tid_flow_state flow_state;
static inline u32 __full_flow_psn(struct flow_state *state, u32 psn)
return __full_flow_psn(&flow->flow_state, psn);
unsigned long flow_state;
return test_bit(RX_FLOW_ON_BIT, &cf_sk->flow_state);
return test_bit(TX_FLOW_ON_BIT, &cf_sk->flow_state);
clear_bit(RX_FLOW_ON_BIT, &cf_sk->flow_state);
set_bit(RX_FLOW_ON_BIT, &cf_sk->flow_state);
clear_bit(TX_FLOW_ON_BIT, &cf_sk->flow_state);
set_bit(TX_FLOW_ON_BIT, &cf_sk->flow_state);
sizeof(struct flow_state)),
struct flow_state *flows;