Some comments inline. Also, I looked at the rest of the SCTP files and the
changes look fine to me, except for a couple of nits.

usr/src/uts/common/inet/sctp/sctp_cookie.c
        L814: change printf() before putback?

usr/src/uts/common/inet/sctp/sctp_error.c
        L289,444: change printf() before putback?

usr/src/uts/common/inet/sctp/sctp_hash.c
usr/src/uts/common/inet/sctp/sctp_heartbeat.c
usr/src/uts/common/inet/sctp/sctp_init.c
usr/src/uts/common/inet/sctp/sctp_ioc.c
usr/src/uts/common/inet/sctp/sctp_notify.c
usr/src/uts/common/inet/sctp/sctp_output.c
usr/src/uts/common/inet/sctp/sctp_param.c usr/src/uts/common/inet/sctp/sctp_shutdown.c
usr/src/uts/common/inet/sctp/sctp_snmp.c
usr/src/uts/common/inet/sctp/sctp_stack.h
usr/src/uts/common/inet/sctp/sctp_timer.c
usr/src/uts/common/inet/sctp_ip.h
usr/src/uts/common/inet/sctp_itf.h
        No comments

usr/src/uts/common/inet/sctp/sctp_input.c
        L357: True, it is not required.

usr/src/uts/common/inet/sctp/sctp_opt_data.c
        L600-601: SCTP instead of TCP
        L648,653: in theory the max len would be the max number of
        logical addresses that can be/is plumbed * struct sockaddr_in6
        (for both v4 and v6). In practice, you can get the nladdrs
        and * struct sockaddr_in6.
        L1061: Is SCTP in secs now after this?

-venu

On Tue, 6 Oct 2009, Erik Nordmark wrote:

venugopal iyer wrote:

Hi, Erik:

I looked at a few SCTP files and here are some comments. Will look at the
rest of the SCTP changes get back by Mon.

Thank you for the review comments.

usr/src/cmd/mdb/common/modules/sctp/sctp.c

        L581: is crb_recvdstaddr this really used?

I just changed it from sctp_recvdstaddr to use the conn_t. Looks like sctp_recvdstaddr isn't used in onnv-gate. Should I remove it?

If it is not used, let's remove it and if it is something SCTP is missing
let's have an RFE.


        L710: Yes.
        L957-970 : connp instead of sctp->sctp_connp?

Will fix.

usr/src/uts/common/inet/sctp/sctp_impl.h

L900-903 (old code) : could removing this cause any overflow/deadlock
    issues etc. i.e in a loopback case could this thread send the packet
    and when it gets to the receiving SCTP can it continue (assuming
sctp_recvq is null) and then get back with the response.. handshake?
        could this exchange lead to stack overflow? Also, when we call
sctp_output from sctp_sendmsg we now has sctp_running set, when the
        loopback thread (in the above scenario) comes back we'd probably
        queue the packet in the receive queue and ask the task queue to
process it, but will then wait in sctp_process_recvq since sctp_output has still not returned to WAKE_SCTP, is that so? Did we check loopback
    tests? Sorry if I am missing something obvious.

We talked about this on the phone, and I don't see how sctp would use any more stack than tcp; the tcp squeue allows re-entry once which means that for loopback the same thread can pass the SYN and then carry the SYN-ACK back. The sctp_running has means that a thread can pass e.g., an INIT and then the INIT-ACK back.

Yes, per our discussion this is OK.


usr/src/uts/common/inet/sctp/sctp_asconf.h
usr/src/uts/common/inet/sctp/sctp_addr.h
        No comments

usr/src/uts/common/inet/sctp/sctp.c
        L217-219: Whatis is the reason for this assert here (i.e. in
        sctp_create_eager)

Just to verify that sctp_inherit_values set things up. I'll remove the assert.

        L1056:  why is this notyet?

Because sctp, unlike tcp, doesn't have a minmss knob.
It probably should have one. Should I file a CR against Nevada?

I think so.


        L1070-1072: When sending a packet out we use info. from the
        appropriate faddr, right? So, this should be handled correctly?

OK, I'll remove the comment.

        L1154,1253: What is this comment for?

I'll remove the comments.
TCP retransmits a packet since it knows a packet left the network. TCP does this by calling
                        tcp_rexmit_after_error(tcp);
Presumably sctp could do the same.

usr/src/uts/common/inet/sctp/sctp_addr.c
usr/src/uts/common/inet/sctp/sctp_asconf.c
usr/src/uts/common/inet/sctp/sctp_bind.c
        No comments

usr/src/uts/common/inet/sctp/sctp_common.c
        L648: We just heard from the fp (i.e. it is alive), so what could
        result in fp->state being unreach?

The comment we added says:
644 * Note that if we didn't find a source in sctp_get_dest
645                  * then we'd be unreachable at this point in time.

If you look in onnv-gate or in refactor-review there is a code path where sctp_get_ire/sctp_get_dest calls sctp_set_saddr and fp->state gets set to SCTP_FADDRS_UNREACH.
Thus it is possible to hit the assertion that we removed.
I don't know why nobody has tripped on that assertion in onnv-gate; perhaps it hasn't been tested as much.

        L948-951: (related to comments L1070-1072 in sctp.c) should this
        be w.r.t the fp we are using to send the packet?

sctp_build_hdrs merely creates a template.
Other places like sctp_make_mp() sets DF based on the faddr/ip_xmit_attr_t used, and sctp_set_faddr_current sets it based on the sctp_current/

Thus the code in sctp_build_hdrs might be unnecessary; I can try removing it and check that DF is still being set.

usr/src/uts/common/inet/sctp/sctp_conn.c
        L241: will we add an assert here before putback?

I'll check with the trusted folks. But none of the 8 places where we have a printf and XTX comment about ira_tsl have printed anything on the systems we use for TX testing. But I don't know how much of SCTP they test.

        L580: I think so.

OK

  Erik



_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to