[Announce]: Test Tree updated to allow ECN support in Ack Vectors | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
This is a small change in the internal Ack Vector API of the test tree.
The reason is that dccp_ackvec_input() needs a reference to the @skb, since
otherwise it will later not be able to
* detect whether the @skb was ECN-marked or
* what the value of the ECN-Nonce is on the @skb.
The following two patches were updated, the combined inter-diff is below:
* "dccp ccid-2: Update code for the Ack Vector input/registration routine"
* "dccp ccid-2: Consolidate Ack-Vector processing within main DCCP module"
--- b/net/dccp/ackvec.h
+++ b/net/dccp/ackvec.h
@@ -106,7 +106,7 @@
extern struct dccp_ackvec *dccp_ackvec_alloc(const gfp_t priority);
extern void dccp_ackvec_free(struct dccp_ackvec *av);
-extern void dccp_ackvec_input(struct dccp_ackvec *av, u64 seqno, u8 state);
+extern void dccp_ackvec_input(struct dccp_ackvec *av, struct sk_buff *skb);
extern int dccp_ackvec_update_records(struct dccp_ackvec *av, u64 seq, u8 sum);
extern void dccp_ackvec_clear_state(struct dccp_ackvec *av, const u64 ackno);
extern u16 dccp_ackvec_buflen(const struct dccp_ackvec *av);
--- b/net/dccp/ackvec.c
+++ b/net/dccp/ackvec.c
@@ -246,12 +246,12 @@
/**
* dccp_ackvec_input - Register incoming packet in the buffer
- * @av: buffer/records to update
- * @seqno: sequence number to register as received
- * @state: how packet with @seqno was received, one of %dccp_ackvec_states
*/
-void dccp_ackvec_input(struct dccp_ackvec *av, u64 seqno, u8 state)
+void dccp_ackvec_input(struct dccp_ackvec *av, struct sk_buff *skb)
{
+ u64 seqno = DCCP_SKB_CB(skb)->dccpd_seq;
+ enum dccp_ackvec_states state = DCCPAV_RECEIVED;
+
if (dccp_ackvec_is_empty(av)) {
dccp_ackvec_add_new(av, 1, seqno, state);
av->av_tail_ackno = seqno;
--- b/net/dccp/input.c
+++ b/net/dccp/input.c
@@ -162,13 +162,12 @@
static void dccp_handle_ackvec_processing(struct sock *sk, struct sk_buff *skb)
{
struct dccp_ackvec *av = dccp_sk(sk)->dccps_hc_rx_ackvec;
- struct dccp_skb_cb *dcb = DCCP_SKB_CB(skb);
- if (av != NULL) {
- if (dcb->dccpd_ack_seq != DCCP_PKT_WITHOUT_ACK_SEQ)
- dccp_ackvec_clear_state(av, dcb->dccpd_ack_seq);
- dccp_ackvec_input(av, dcb->dccpd_seq, DCCPAV_RECEIVED);
- }
+ if (av == NULL)
+ return;
+ if (DCCP_SKB_CB(skb)->dccpd_ack_seq != DCCP_PKT_WITHOUT_ACK_SEQ)
+ dccp_ackvec_clear_state(av, DCCP_SKB_CB(skb)->dccpd_ack_seq);
+ dccp_ackvec_input(av, skb);
}
static void dccp_deliver_input_to_ccids(struct sock *sk, struct sk_buff *skb)
--
--
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Kernel List] [Site Home] [IETF DCCP] [Linux Networking] [Git] [Security] [Linux Assembly] [Bugtraq] [Rubini] [Photo] [Yosemite] [MIPS Linux] [ARM Linux] [Linux Security] [Linux RAID] [Linux SCSI] [DDR & Rambus] [Linux Resources]
![]() |