skb_tailroom(). Add pkb_headroom().
/* Fragment will be dropped */
goto done;
}
/* Fragment will be dropped */
goto done;
}
- if ( frag_len > pkb_available ( pkb ) ) {
+ if ( frag_len > pkb_tailroom ( pkb ) ) {
DBGC ( undinic, "UNDINIC %p fragment too "
"large\n", undinic );
DBGC ( undinic, "UNDINIC %p fragment too "
"large\n", undinic );
- frag_len = pkb_available ( pkb );
+ frag_len = pkb_tailroom ( pkb );
}
copy_from_real ( pkb_put ( pkb, frag_len ),
undi_isr.Frame.segment,
}
copy_from_real ( pkb_put ( pkb, frag_len ),
undi_isr.Frame.segment,
- * Calculate available space in a packet buffer
+ * Calculate available space at start of a packet buffer
- * @ret len Length of data available in buffer
+ * @ret len Length of data available at start of buffer
-static inline size_t pkb_available ( struct pk_buff *pkb ) {
+static inline size_t pkb_headroom ( struct pk_buff *pkb ) {
+ return ( pkb->data - pkb->head );
+}
+
+/**
+ * Calculate available space at end of a packet buffer
+ *
+ * @v pkb Packet buffer
+ * @ret len Length of data available at end of buffer
+ */
+static inline size_t pkb_tailroom ( struct pk_buff *pkb ) {
return ( pkb->end - pkb->tail );
}
return ( pkb->end - pkb->tail );
}
if ( TCP_CAN_SEND_DATA ( conn->tcp_state ) &&
app && app->tcp_op->senddata ) {
conn->tx_pkb = pkb;
if ( TCP_CAN_SEND_DATA ( conn->tcp_state ) &&
app && app->tcp_op->senddata ) {
conn->tx_pkb = pkb;
- app->tcp_op->senddata ( app, pkb->data, pkb_available ( pkb ));
+ app->tcp_op->senddata ( app, pkb->data, pkb_tailroom ( pkb ) );
}
/* Truncate length to fit packet buffer */
}
/* Truncate length to fit packet buffer */
- if ( len > pkb_available ( pkb ) )
- len = pkb_available ( pkb );
+ if ( len > pkb_tailroom ( pkb ) )
+ len = pkb_tailroom ( pkb );
/* Copy payload */
memmove ( pkb_put ( pkb, len ), data, len );
/* Copy payload */
memmove ( pkb_put ( pkb, len ), data, len );
}
pkb_reserve ( conn->tx_pkb, UDP_MAX_HLEN );
rc = conn->udp_op->senddata ( conn, conn->tx_pkb->data,
}
pkb_reserve ( conn->tx_pkb, UDP_MAX_HLEN );
rc = conn->udp_op->senddata ( conn, conn->tx_pkb->data,
- pkb_available ( conn->tx_pkb ) );
+ pkb_tailroom ( conn->tx_pkb ) );
if ( conn->tx_pkb )
free_pkb ( conn->tx_pkb );
return rc;
if ( conn->tx_pkb )
free_pkb ( conn->tx_pkb );
return rc;
conn->tx_pkb = NULL;
/* Avoid overflowing TX buffer */
conn->tx_pkb = NULL;
/* Avoid overflowing TX buffer */
- if ( len > pkb_available ( pkb ) )
- len = pkb_available ( pkb );
+ if ( len > pkb_tailroom ( pkb ) )
+ len = pkb_tailroom ( pkb );
/* Copy payload */
memmove ( pkb_put ( pkb, len ), data, len );
/* Copy payload */
memmove ( pkb_put ( pkb, len ), data, len );