Print this page
3903 DTrace SCTP Provider

@@ -975,10 +975,15 @@
 
                 iph->ipha_fragment_offset_and_flags = 0;
         }
 
         sctp_set_iplen(sctp, head, fp->sf_ixa);
+
+        DTRACE_SCTP5(send, mblk_t *, NULL, ip_xmit_attr_t *, fp->sf_ixa,
+            void_ip_t *, mp->b_rptr, sctp_t *, sctp, sctp_hdr_t *,
+            &mp->b_rptr[fp->sf_ixa->ixa_ip_hdr_length]);
+
         (void) conn_ip_output(head, fp->sf_ixa);
         BUMP_LOCAL(sctp->sctp_opkts);
         sctp->sctp_active = fp->sf_lastactive = ddi_get_lbolt64();
 }
 

@@ -1277,10 +1282,15 @@
                     "ssn %d to %p (rwnd %d, cansend %d, lastack_rxd %x)\n",
                     seglen - xtralen, ntohl(sdc->sdh_tsn),
                     ntohs(sdc->sdh_ssn), (void *)fp, sctp->sctp_frwnd,
                     cansend, sctp->sctp_lastack_rxd));
                 sctp_set_iplen(sctp, head, fp->sf_ixa);
+
+                DTRACE_SCTP5(send, mblk_t *, NULL, ip_xmit_attr_t *, fp->sf_ixa,
+                    void_ip_t *, head->b_rptr, sctp_t *, sctp, sctp_hdr_t *,
+                    &head->b_rptr[fp->sf_ixa->ixa_ip_hdr_length]);
+
                 (void) conn_ip_output(head, fp->sf_ixa);
                 BUMP_LOCAL(sctp->sctp_opkts);
                 /* arm rto timer (if not set) */
                 if (!fp->sf_timer_running)
                         SCTP_FADDR_TIMER_RESTART(sctp, fp, fp->sf_rto);

@@ -1801,10 +1811,16 @@
                         fp = sctp_rotate_faddr(sctp, oldfp);
                 pkt = sctp_rexmit_packet(sctp, &meta, &mp, fp, &pkt_len);
                 if (pkt != NULL) {
                         ASSERT(pkt_len <= fp->sf_pmss);
                         sctp_set_iplen(sctp, pkt, fp->sf_ixa);
+
+                        DTRACE_SCTP5(send, mblk_t *, NULL,
+                            ip_xmit_attr_t *, fp->sf_ixa,
+                            void_ip_t *, mp->b_rptr, sctp_t *, sctp, sctp_hdr_t *,
+                            &mp->b_rptr[fp->sf_ixa->ixa_ip_hdr_length]);
+
                         (void) conn_ip_output(pkt, fp->sf_ixa);
                         BUMP_LOCAL(sctp->sctp_opkts);
                 } else {
                         SCTP_KSTAT(sctps, sctp_ss_rexmit_failed);
                 }

@@ -2021,10 +2037,15 @@
 
         sctp->sctp_rexmitting = B_TRUE;
         sctp->sctp_rxt_nxttsn = first_ua_tsn;
         sctp->sctp_rxt_maxtsn = sctp->sctp_ltsn - 1;
         sctp_set_iplen(sctp, head, fp->sf_ixa);
+
+        DTRACE_SCTP5(send, mblk_t *, NULL, ip_xmit_attr_t *, fp->sf_ixa,
+            void_ip_t *, mp->b_rptr, sctp_t *, sctp, sctp_hdr_t *,
+            &mp->b_rptr[fp->sf_ixa->ixa_ip_hdr_length]);
+
         (void) conn_ip_output(head, fp->sf_ixa);
         BUMP_LOCAL(sctp->sctp_opkts);
 
         /*
          * Restart the oldfp timer with exponential backoff and

@@ -2305,10 +2326,15 @@
                  *  Need to clear the DF bit.
                  */
                 iph->ipha_fragment_offset_and_flags = 0;
         }
         sctp_set_iplen(sctp, pkt, fp->sf_ixa);
+
+        DTRACE_SCTP5(send, mblk_t *, NULL, ip_xmit_attr_t *, fp->sf_ixa,
+            void_ip_t *, mp->b_rptr, sctp_t *, sctp, sctp_hdr_t *,
+            &mp->b_rptr[fp->sf_ixa->ixa_ip_hdr_length]);
+
         (void) conn_ip_output(pkt, fp->sf_ixa);
         BUMP_LOCAL(sctp->sctp_opkts);
 
         /* Check and see if there is more chunk to be retransmitted. */
         if (tot_wnd <= pkt_len || tot_wnd - pkt_len < fp->sf_pmss ||