Diff for /src/sys/netproto/ipx/spx_usrreq.c between versions 1.9 and 1.10

version 1.9, 2004/06/02 14:43:03 version 1.10, 2004/06/04 01:46:49
Line 123  struct pr_usrreqs spx_usrreq_sps = { Line 123  struct pr_usrreqs spx_usrreq_sps = {
 };  };
   
 void  void
spx_init()spx_init(void)
 {  {
   
         spx_iss = 1; /* WRONG !! should fish it out of TODR */          spx_iss = 1; /* WRONG !! should fish it out of TODR */
 }  }
   
 void  void
spx_input(m, ipxp)spx_input(struct mbuf *m, struct ipxpcb *ipxp)
        struct mbuf *m; 
        struct ipxpcb *ipxp; 
 {  {
         struct spxpcb *cb;          struct spxpcb *cb;
         struct spx *si = mtod(m, struct spx *);          struct spx *si = mtod(m, struct spx *);
Line 339  static int spxrexmtthresh = 3; Line 337  static int spxrexmtthresh = 3;
  * packets up, and suppresses duplicates.   * packets up, and suppresses duplicates.
  */   */
 static int  static int
spx_reass(cb, si)spx_reass(struct spxpcb *cb, struct spx *si)
struct spxpcb *cb; 
struct spx *si; 
 {  {
         struct spx_q *q;          struct spx_q *q;
         struct mbuf *m;          struct mbuf *m;
Line 628  present: Line 624  present:
 }  }
   
 void  void
spx_ctlinput(cmd, arg_as_sa, dummy)spx_ctlinput(int cmd, struct sockaddr *arg_as_sa, void *dummy)
        int cmd; 
        struct sockaddr *arg_as_sa;       /* XXX should be swapped with dummy */ 
        void *dummy; 
 {  {
         caddr_t arg = (/* XXX */ caddr_t)arg_as_sa;          caddr_t arg = (/* XXX */ caddr_t)arg_as_sa;
         struct ipx_addr *na;          struct ipx_addr *na;
Line 661  spx_ctlinput(cmd, arg_as_sa, dummy) Line 654  spx_ctlinput(cmd, arg_as_sa, dummy)
   
 #ifdef notdef  #ifdef notdef
 int  int
spx_fixmtu(ipxp)spx_fixmtu(struct ipxpcb *ipxp)
struct ipxpcb *ipxp; 
 {  {
         struct spxpcb *cb = (struct spxpcb *)(ipxp->ipxp_pcb);          struct spxpcb *cb = (struct spxpcb *)(ipxp->ipxp_pcb);
         struct mbuf *m;          struct mbuf *m;
Line 710  struct ipxpcb *ipxp; Line 702  struct ipxpcb *ipxp;
 #endif  #endif
   
 static int  static int
spx_output(cb, m0)spx_output(struct spxpcb *cb, struct mbuf *m0)
        struct spxpcb *cb; 
        struct mbuf *m0; 
 {  {
         struct socket *so = cb->s_ipxpcb->ipxp_socket;          struct socket *so = cb->s_ipxpcb->ipxp_socket;
         struct mbuf *m;          struct mbuf *m;
Line 1121  send: Line 1111  send:
 static int spx_do_persist_panics = 0;  static int spx_do_persist_panics = 0;
   
 static void  static void
spx_setpersist(cb)spx_setpersist(struct spxpcb *cb)
        struct spxpcb *cb; 
 {  {
         int t = ((cb->s_srtt >> 2) + cb->s_rttvar) >> 1;          int t = ((cb->s_srtt >> 2) + cb->s_rttvar) >> 1;
   
Line 1139  spx_setpersist(cb) Line 1128  spx_setpersist(cb)
 }  }
   
 int  int
spx_ctloutput(so, sopt)spx_ctloutput(struct socket *so, struct sockopt *sopt)
        struct socket *so; 
        struct sockopt *sopt; 
 {  {
         struct ipxpcb *ipxp = sotoipxpcb(so);          struct ipxpcb *ipxp = sotoipxpcb(so);
         struct spxpcb *cb;          struct spxpcb *cb;
Line 1266  spx_ctloutput(so, sopt) Line 1253  spx_ctloutput(so, sopt)
 }  }
   
 static int  static int
spx_usr_abort(so)spx_usr_abort(struct socket *so)
        struct socket *so; 
 {  {
         int s;          int s;
         struct ipxpcb *ipxp;          struct ipxpcb *ipxp;
Line 1288  spx_usr_abort(so) Line 1274  spx_usr_abort(so)
  * of the peer, storing through addr.   * of the peer, storing through addr.
  */   */
 static int  static int
spx_accept(so, nam)spx_accept(struct socket *so, struct sockaddr **nam)
        struct socket *so; 
        struct sockaddr **nam; 
 {  {
         struct ipxpcb *ipxp;          struct ipxpcb *ipxp;
         struct sockaddr_ipx *sipx, ssipx;          struct sockaddr_ipx *sipx, ssipx;
Line 1365  spx_attach_end: Line 1349  spx_attach_end:
 }  }
   
 static int  static int
spx_bind(so, nam, td)spx_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
        struct socket *so; 
        struct sockaddr *nam; 
        struct thread *td; 
 {    {  
         struct ipxpcb *ipxp;          struct ipxpcb *ipxp;
   
Line 1384  spx_bind(so, nam, td) Line 1365  spx_bind(so, nam, td)
  * Send initial system packet requesting connection.   * Send initial system packet requesting connection.
  */   */
 static int  static int
spx_connect(so, nam, td)spx_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
        struct socket *so; 
        struct sockaddr *nam; 
        struct thread *td; 
 {  {
         int error;          int error;
         int s;          int s;
Line 1429  spx_connect_end: Line 1407  spx_connect_end:
 }  }
   
 static int  static int
spx_detach(so)spx_detach(struct socket *so)
        struct socket *so; 
 {  {
         int s;          int s;
         struct ipxpcb *ipxp;          struct ipxpcb *ipxp;
Line 1456  spx_detach(so) Line 1433  spx_detach(so)
  * here is the hook to do it:   * here is the hook to do it:
  */   */
 static int  static int
spx_usr_disconnect(so)spx_usr_disconnect(struct socket *so)
        struct socket *so; 
 {  {
         int s;          int s;
         struct ipxpcb *ipxp;          struct ipxpcb *ipxp;
Line 1473  spx_usr_disconnect(so) Line 1449  spx_usr_disconnect(so)
 }  }
   
 static int  static int
spx_listen(so, td)spx_listen(struct socket *so, struct thread *td)
        struct socket *so; 
        struct thread *td; 
 {  {
         int error;          int error;
         struct ipxpcb *ipxp;          struct ipxpcb *ipxp;
Line 1497  spx_listen(so, td) Line 1471  spx_listen(so, td)
  * updating allocation.   * updating allocation.
  */   */
 static int  static int
spx_rcvd(so, flags)spx_rcvd(struct socket *so, int flags)
        struct socket *so; 
        int flags; 
 {  {
         int s;          int s;
         struct ipxpcb *ipxp;          struct ipxpcb *ipxp;
Line 1517  spx_rcvd(so, flags) Line 1489  spx_rcvd(so, flags)
 }  }
   
 static int  static int
spx_rcvoob(so, m, flags)spx_rcvoob(struct socket *so, struct mbuf *m, int flags)
        struct socket *so; 
        struct mbuf *m; 
        int flags; 
 {  {
         struct ipxpcb *ipxp;          struct ipxpcb *ipxp;
         struct spxpcb *cb;          struct spxpcb *cb;
Line 1538  spx_rcvoob(so, m, flags) Line 1507  spx_rcvoob(so, m, flags)
 }  }
   
 static int  static int
spx_send(so, flags, m, addr, controlp, td)spx_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
        struct socket *so;        struct mbuf *controlp, struct thread *td)
        int flags; 
        struct mbuf *m; 
        struct sockaddr *addr; 
        struct mbuf *controlp; 
        struct thread *td; 
 {  {
         int error;          int error;
         int s;          int s;
Line 1585  spx_send_end: Line 1549  spx_send_end:
 }  }
   
 static int  static int
spx_shutdown(so)spx_shutdown(struct socket *so)
        struct socket *so;             
 {  {
         int error;          int error;
         int s;          int s;
Line 1607  spx_shutdown(so) Line 1570  spx_shutdown(so)
 }  }
   
 static int  static int
spx_sp_attach(so, proto, ai)spx_sp_attach(struct socket *so, int proto, struct pru_attach_info *ai)
        struct socket *so; 
        int proto; 
        struct pru_attach_info *ai; 
 {  {
         int error;          int error;
         struct ipxpcb *ipxp;          struct ipxpcb *ipxp;
Line 1631  spx_sp_attach(so, proto, ai) Line 1591  spx_sp_attach(so, proto, ai)
  * minimizing the amount of work necessary when the connection is used.   * minimizing the amount of work necessary when the connection is used.
  */   */
 static void  static void
spx_template(cb)spx_template(struct spxpcb *cb)
        struct spxpcb *cb; 
 {  {
         struct ipxpcb *ipxp = cb->s_ipxpcb;          struct ipxpcb *ipxp = cb->s_ipxpcb;
         struct ipx *ipx = cb->s_ipx;          struct ipx *ipx = cb->s_ipx;
Line 1659  spx_template(cb) Line 1618  spx_template(cb)
  *      wake up any sleepers   *      wake up any sleepers
  */   */
 static struct spxpcb *  static struct spxpcb *
spx_close(cb)spx_close(struct spxpcb *cb)
        struct spxpcb *cb; 
 {  {
         struct spx_q *s;          struct spx_q *s;
         struct ipxpcb *ipxp = cb->s_ipxpcb;          struct ipxpcb *ipxp = cb->s_ipxpcb;
Line 1689  spx_close(cb) Line 1647  spx_close(cb)
  *      For now, just close.   *      For now, just close.
  */   */
 static struct spxpcb *  static struct spxpcb *
spx_usrclosed(cb)spx_usrclosed(struct spxpcb *cb)
        struct spxpcb *cb; 
 {  {
         return (spx_close(cb));          return (spx_close(cb));
 }  }
   
 static struct spxpcb *  static struct spxpcb *
spx_disconnect(cb)spx_disconnect(struct spxpcb *cb)
        struct spxpcb *cb; 
 {  {
         return (spx_close(cb));          return (spx_close(cb));
 }  }
Line 1707  spx_disconnect(cb) Line 1663  spx_disconnect(cb)
  * the specified error.   * the specified error.
  */   */
 static struct spxpcb *  static struct spxpcb *
spx_drop(cb, errno)spx_drop(struct spxpcb *cb, int errno)
        struct spxpcb *cb; 
        int errno; 
 {  {
         struct socket *so = cb->s_ipxpcb->ipxp_socket;          struct socket *so = cb->s_ipxpcb->ipxp_socket;
   
Line 1732  spx_drop(cb, errno) Line 1686  spx_drop(cb, errno)
  * Fast timeout routine for processing delayed acks   * Fast timeout routine for processing delayed acks
  */   */
 void  void
spx_fasttimo()spx_fasttimo(void)
 {  {
         struct ipxpcb *ipxp;          struct ipxpcb *ipxp;
         struct spxpcb *cb;          struct spxpcb *cb;
         int s = splnet();          int s = splnet();
   
         ipxp = ipxpcb.ipxp_next;          ipxp = ipxpcb.ipxp_next;
        if (ipxp != NULL)        if (ipxp != NULL) {
        for (; ipxp != &ipxpcb; ipxp = ipxp->ipxp_next)            for (; ipxp != &ipxpcb; ipxp = ipxp->ipxp_next) {
                 if ((cb = (struct spxpcb *)ipxp->ipxp_pcb) != NULL &&                  if ((cb = (struct spxpcb *)ipxp->ipxp_pcb) != NULL &&
                     (cb->s_flags & SF_DELACK)) {                      (cb->s_flags & SF_DELACK)) {
                         cb->s_flags &= ~SF_DELACK;                          cb->s_flags &= ~SF_DELACK;
Line 1748  spx_fasttimo() Line 1702  spx_fasttimo()
                         spxstat.spxs_delack++;                          spxstat.spxs_delack++;
                         spx_output(cb, (struct mbuf *)NULL);                          spx_output(cb, (struct mbuf *)NULL);
                 }                  }
               }
           }
         splx(s);          splx(s);
 }  }
   
Line 1757  spx_fasttimo() Line 1713  spx_fasttimo()
  * causes finite state machine actions if timers expire.   * causes finite state machine actions if timers expire.
  */   */
 void  void
spx_slowtimo()spx_slowtimo(void)
 {  {
         struct ipxpcb *ip, *ipnxt;          struct ipxpcb *ip, *ipnxt;
         struct spxpcb *cb;          struct spxpcb *cb;
Line 1798  tpgone: Line 1754  tpgone:
  * SPX timer processing.   * SPX timer processing.
  */   */
 static struct spxpcb *  static struct spxpcb *
spx_timers(cb, timer)spx_timers(struct spxpcb *cb, int timer)
        struct spxpcb *cb; 
        int timer; 
 {  {
         long rexmt;          long rexmt;
         int win;          int win;

Removed from v.1.9  
changed lines
  Added in v.1.10