void ( * expired ) ( struct retry_timer *timer, int over );
};
+/**
+ * Initialise a timer
+ *
+ * @v timer Retry timer
+ * @v expired Timer expired callback
+ */
+static inline __attribute__ (( always_inline )) void
+timer_init ( struct retry_timer *timer,
+ void ( * expired ) ( struct retry_timer *timer, int over ) ) {
+ timer->expired = expired;
+}
+
extern void start_timer ( struct retry_timer *timer );
extern void start_timer_fixed ( struct retry_timer *timer,
unsigned long timeout );
if ( ! aoe )
return -ENOMEM;
ref_init ( &aoe->refcnt, aoe_free );
+ timer_init ( &aoe->timer, aoe_timer_expired );
aoe->netdev = netdev_get ( netdev );
memcpy ( aoe->target, netdev->ll_broadcast, sizeof ( aoe->target ) );
aoe->tag = AOE_TAG_MAGIC;
- aoe->timer.expired = aoe_timer_expired;
/* Parse root path */
if ( ( rc = aoe_parse_root_path ( aoe, root_path ) ) != 0 )
madx = zalloc ( sizeof ( *madx ) );
if ( ! madx )
return NULL;
+ timer_init ( &madx->timer, ib_mi_timer_expired );
madx->mi = mi;
- madx->timer.expired = ib_mi_timer_expired;
madx->op = op;
/* Determine address vector */
free_iob ( iobuf );
/* Set the reassembly timer */
+ timer_init ( &fragbuf->frag_timer, ipv4_frag_expired );
fragbuf->frag_timer.timeout = IP_FRAG_TIMEOUT;
- fragbuf->frag_timer.expired = ipv4_frag_expired;
start_timer ( &fragbuf->frag_timer );
/* Add the fragment buffer to the list of fragment buffers */
DBGC ( tcp, "TCP %p allocated\n", tcp );
ref_init ( &tcp->refcnt, NULL );
xfer_init ( &tcp->xfer, &tcp_xfer_operations, &tcp->refcnt );
+ timer_init ( &tcp->timer, tcp_expired );
tcp->prev_tcp_state = TCP_CLOSED;
tcp->tcp_state = TCP_STATE_SENT ( TCP_SYN );
tcp_dump_state ( tcp );
tcp->snd_seq = random();
INIT_LIST_HEAD ( &tcp->queue );
- tcp->timer.expired = tcp_expired;
memcpy ( &tcp->peer, st_peer, sizeof ( tcp->peer ) );
/* Bind to local port */
ref_init ( &dhcp->refcnt, dhcp_free );
job_init ( &dhcp->job, &dhcp_job_operations, &dhcp->refcnt );
xfer_init ( &dhcp->xfer, &dhcp_xfer_operations, &dhcp->refcnt );
+ timer_init ( &dhcp->timer, dhcp_timer_expired );
dhcp->netdev = netdev_get ( netdev );
dhcp->local.sin_family = AF_INET;
dhcp->local.sin_port = htons ( BOOTPC_PORT );
- dhcp->timer.expired = dhcp_timer_expired;
/* Instantiate child objects and attach to our interfaces */
if ( ( rc = xfer_open_socket ( &dhcp->xfer, SOCK_DGRAM, &dhcp_peer,
ref_init ( &dhcp->refcnt, dhcp_free );
job_init ( &dhcp->job, &dhcp_job_operations, &dhcp->refcnt );
xfer_init ( &dhcp->xfer, &dhcp_xfer_operations, &dhcp->refcnt );
+ timer_init ( &dhcp->timer, dhcp_timer_expired );
dhcp->netdev = netdev_get ( netdev );
dhcp->local.sin_family = AF_INET;
fetch_ipv4_setting ( netdev_settings ( netdev ), &ip_setting,
&dhcp->local.sin_addr );
dhcp->local.sin_port = htons ( BOOTPC_PORT );
dhcp->pxe_type = cpu_to_le16 ( pxe_type );
- dhcp->timer.expired = dhcp_timer_expired;
/* Construct PXE boot server IP address lists */
pxe_discovery_control =
ref_init ( &dns->refcnt, NULL );
resolv_init ( &dns->resolv, &null_resolv_ops, &dns->refcnt );
xfer_init ( &dns->socket, &dns_socket_operations, &dns->refcnt );
- dns->timer.expired = dns_timer_expired;
+ timer_init ( &dns->timer, dns_timer_expired );
memcpy ( &dns->sa, sa, sizeof ( dns->sa ) );
/* Create query */
xfer_init ( &slam->socket, &slam_socket_operations, &slam->refcnt );
xfer_init ( &slam->mc_socket, &slam_mc_socket_operations,
&slam->refcnt );
- slam->master_timer.expired = slam_master_timer_expired;
- slam->slave_timer.expired = slam_slave_timer_expired;
+ timer_init ( &slam->master_timer, slam_master_timer_expired );
+ timer_init ( &slam->slave_timer, slam_slave_timer_expired );
/* Fake an invalid cached header of { 0x00, ... } */
slam->header_len = 1;
/* Fake parameters for initial NACK */
return -ENOMEM;
ref_init ( &tftp->refcnt, tftp_free );
xfer_init ( &tftp->xfer, &tftp_xfer_operations, &tftp->refcnt );
- tftp->uri = uri_get ( uri );
xfer_init ( &tftp->socket, &tftp_socket_operations, &tftp->refcnt );
xfer_init ( &tftp->mc_socket, &tftp_mc_socket_operations,
&tftp->refcnt );
+ timer_init ( &tftp->timer, tftp_timer_expired );
+ tftp->uri = uri_get ( uri );
tftp->blksize = TFTP_DEFAULT_BLKSIZE;
tftp->flags = flags;
- tftp->timer.expired = tftp_timer_expired;
/* Open socket */
tftp->port = uri_port ( tftp->uri, default_port );