tsn
__be32 tsn;
u32 hsn, tsn;
tsn = response_get_u64(&dev->parsed, 5);
if (hsn != GENERIC_HOST_SESSION_NUM || tsn < FIRST_TPER_SESSION_NUM) {
dev->tsn = tsn;
dev->tsn = 0;
ret = cmd_finalize(dev, dev->hsn, dev->tsn);
dev->tsn = 0;
dev->tsn = 0;
static int cmd_finalize(struct opal_dev *cmd, u32 hsn, u32 tsn)
hdr->pkt.tsn = cpu_to_be32(tsn);
u32 tsn;
.tsn = 0x03,
.tsn = 0x03,
u8 tsn;
__be32 tsn;
__be32 tsn;
void sctp_tsnmap_skip(struct sctp_tsnmap *map, __u32 tsn);
static inline void sctp_tsnmap_mark_dup(struct sctp_tsnmap *map, __u32 tsn)
map->dup_tsns[map->num_dup_tsns++] = htonl(tsn);
void sctp_tsnmap_renege(struct sctp_tsnmap *, __u32 tsn);
int sctp_tsnmap_check(const struct sctp_tsnmap *, __u32 tsn);
int sctp_tsnmap_mark(struct sctp_tsnmap *, __u32 tsn,
__u32 tsn;
u8 tsn;
sensf_req->tsn = 0;
__u32 tsn)
__be32 key = htonl(tsn);
if (key == chunk->subh.data_hdr->tsn) {
if (key == chunk->subh.data_hdr->tsn) {
chunk->has_tsn ? ntohl(chunk->subh.data_hdr->tsn) : 0,
"illegal chunk", ntohl(chunk->subh.data_hdr->tsn),
__func__, ntohl(chunk->subh.data_hdr->tsn),
__u32 sack_ctsn, ctsn, tsn;
tsn = ntohl(tchunk->subh.data_hdr->tsn);
if (TSN_lte(tsn, ctsn)) {
__u32 tsn;
tsn = ntohl(tchunk->subh.data_hdr->tsn);
if (sctp_acked(sack, tsn)) {
if (TSN_lte(tsn, sack_ctsn)) {
static inline int sctp_cacc_skip_3_2(struct sctp_transport *primary, __u32 tsn)
if (TSN_lt(*highest_new_tsn_in_sack, tsn))
*highest_new_tsn_in_sack = tsn;
if (TSN_lte(tsn, sack_ctsn)) {
TSN_lt(tsn, primary->cacc.next_tsn_at_change))
__func__, tsn);
__u32 tsn;
tsn = ntohl(chunk->subh.data_hdr->tsn);
TSN_lt(tsn, highest_new_tsn_in_sack)) {
count_of_newacks, tsn)) {
__func__, tsn, chunk->tsn_missing_report);
static int sctp_acked(struct sctp_sackhdr *sack, __u32 tsn)
if (TSN_lte(tsn, ctsn))
__u32 tsn)
tsn_offset = tsn - ctsn;
sctp_cacc_skip_3_2(primary, tsn)))
__u32 tsn;
tsn = ntohl(chunk->subh.data_hdr->tsn);
if (TSN_lte(tsn, ctsn)) {
if (TSN_lte(tsn, asoc->adv_peer_ack_point+1)) {
asoc->adv_peer_ack_point = tsn;
ntsn = ntohl(nchunk->subh.data_hdr->tsn);
ltsn = ntohl(lchunk->subh.data_hdr->tsn);
static int sctp_acked(struct sctp_sackhdr *sack, __u32 tsn);
chunk->subh.data_hdr->tsn =
__u32 tsn)
sizeof(struct sctp_errhdr) + sizeof(tsn));
payload = htonl(tsn);
__u32 tsn;
tsn = ntohl(fwdtsn_hdr->new_cum_tsn);
pr_debug("%s: TSN 0x%x\n", __func__, tsn);
if (sctp_tsnmap_check(&asoc->peer.tsn_map, tsn) < 0)
sctp_add_cmd_sf(commands, SCTP_CMD_REPORT_FWDTSN, SCTP_U32(tsn));
__u32 tsn;
tsn = ntohl(fwdtsn_hdr->new_cum_tsn);
pr_debug("%s: TSN 0x%x\n", __func__, tsn);
if (sctp_tsnmap_check(&asoc->peer.tsn_map, tsn) < 0)
sctp_add_cmd_sf(commands, SCTP_CMD_REPORT_FWDTSN, SCTP_U32(tsn));
__u32 tsn;
tsn = ntohl(data_hdr->tsn);
pr_debug("%s: TSN 0x%x\n", __func__, tsn);
SCTP_U32(tsn));
tmp = sctp_tsnmap_check(&asoc->peer.tsn_map, tsn);
sctp_add_cmd_sf(commands, SCTP_CMD_REPORT_DUP, SCTP_U32(tsn));
(sctp_tsnmap_get_ctsn(map) + 1) == tsn) {
pr_debug("%s: reneging for tsn:%u\n", __func__, tsn);
__func__, tsn, datalen, asoc->rwnd);
(sctp_tsnmap_get_ctsn(map) + 1) == tsn) {
__func__, tsn);
err = sctp_make_abort_no_data(asoc, chunk, tsn);
sctp_add_cmd_sf(commands, SCTP_CMD_REPORT_TSN, SCTP_U32(tsn));
__u32 tsn;
tsn = ntohl(chunk->subh.data_hdr->tsn);
if (TSN_lte(tsn, ctsn)) {
} else if (TSN_lte(tsn, asoc->adv_peer_ack_point + 1)) {
asoc->adv_peer_ack_point = tsn;
__u32 tsn = event->tsn;
if (TSN_lte(tsn, ftsn)) {
__u32 tsn = event->tsn;
if (TSN_lte(tsn, ftsn)) {
if (TSN_lt(tsn, map->base_tsn))
gap = tsn - map->base_tsn;
if (TSN_lt(map->max_tsn_seen, tsn))
map->max_tsn_seen = tsn;
void sctp_tsnmap_skip(struct sctp_tsnmap *map, __u32 tsn)
if (TSN_lt(tsn, map->base_tsn))
if (!TSN_lt(tsn, map->base_tsn + SCTP_TSN_MAP_SIZE))
if (TSN_lt(map->max_tsn_seen, tsn))
map->max_tsn_seen = tsn;
gap = tsn - map->base_tsn + 1;
void sctp_tsnmap_renege(struct sctp_tsnmap *map, __u32 tsn)
if (TSN_lt(tsn, map->base_tsn))
if (!TSN_lt(tsn, map->base_tsn + map->len))
gap = tsn - map->base_tsn;
int sctp_tsnmap_check(const struct sctp_tsnmap *map, __u32 tsn)
if (TSN_lte(tsn, map->cumulative_tsn_ack_point))
if (!TSN_lt(tsn, map->base_tsn + SCTP_TSN_MAP_SIZE))
gap = tsn - map->base_tsn;
int sctp_tsnmap_mark(struct sctp_tsnmap *map, __u32 tsn,
sinfo.sinfo_tsn = event->tsn;
rinfo.rcv_tsn = event->tsn;
ntohl(chunk->subh.data_hdr->tsn),
event->tsn = ntohl(chunk->subh.data_hdr->tsn);
ctsn = sctp_skb2event(skb)->tsn;
__u32 tsn, ctsn;
tsn = event->tsn;
ctsn = cevent->tsn;
if (TSN_lt(ctsn, tsn)) {
ctsn = cevent->tsn;
if (TSN_lt(tsn, ctsn))
ctsn = cevent->tsn;
ctsn = cevent->tsn;
ctsn = event->tsn;
ctsn = cevent->tsn;
__u32 tsn;
tsn = event->tsn;
if (TSN_lte(tsn, fwd_tsn)) {
__u32 tsn, last_tsn;
tsn = event->tsn;
if (TSN_lte(tsn, sctp_tsnmap_get_ctsn(tsnmap)))
last_tsn = sctp_skb2event(last)->tsn;
last_tsn = tsn;
while (TSN_lte(tsn, last_tsn)) {
sctp_tsnmap_renege(tsnmap, tsn);
tsn++;