Message ID | 529712A7.3010604@cn.fujitsu.com |
---|---|
State | Deferred, archived |
Delegated to: | David Miller |
Headers | show |
On 11/28/2013 10:53 AM, Duan Jiong wrote: > > > Signed-off-by: Duan Jiong <duanj.fnst@cn.fujitsu.com> Please resubmit when net-next is open. > --- > net/packet/af_packet.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c > index 2e8286b..955611f 100644 > --- a/net/packet/af_packet.c > +++ b/net/packet/af_packet.c > @@ -430,7 +430,8 @@ static void prb_shutdown_retire_blk_timer(struct packet_sock *po, > { > struct tpacket_kbdq_core *pkc; > > - pkc = tx_ring ? &po->tx_ring.prb_bdqc : &po->rx_ring.prb_bdqc; > + pkc = tx_ring ? GET_PBDQC_FROM_RB(&po->tx_ring) > + : GET_PBDQC_FROM_RB(&po->rx_ring); Nit: the colon should actually still be on the previous line. It would be nice if at some point in time we could get rid of these TPACKET_V3 specific macros and actually use some inline functions. > > spin_lock(&rb_queue->lock); > pkc->delete_blk_timer = 1; > @@ -456,7 +457,8 @@ static void prb_setup_retire_blk_timer(struct packet_sock *po, int tx_ring) > if (tx_ring) > BUG(); > > - pkc = tx_ring ? &po->tx_ring.prb_bdqc : &po->rx_ring.prb_bdqc; > + pkc = tx_ring ? GET_PBDQC_FROM_RB(&po->tx_ring) > + : GET_RBDQC_FROM_RB(&po->rx_ring); > prb_init_blk_timer(po, pkc, prb_retire_rx_blk_timer_expired); > } > > @@ -514,7 +516,7 @@ static void init_prb_bdqc(struct packet_sock *po, > struct pgv *pg_vec, > union tpacket_req_u *req_u, int tx_ring) > { > - struct tpacket_kbdq_core *p1 = &rb->prb_bdqc; > + struct tpacket_kbdq_core *p1 = GET_PBDQC_FROM_RB(rb); > struct tpacket_block_desc *pbd; > > memset(p1, 0x0, sizeof(*p1)); > @@ -578,7 +580,7 @@ static void _prb_refresh_rx_retire_blk_timer(struct tpacket_kbdq_core *pkc) > static void prb_retire_rx_blk_timer_expired(unsigned long data) > { > struct packet_sock *po = (struct packet_sock *)data; > - struct tpacket_kbdq_core *pkc = &po->rx_ring.prb_bdqc; > + struct tpacket_kbdq_core *pkc = GET_PBDQC_FROM_RB(&po->rx_ring); > unsigned int frozen; > struct tpacket_block_desc *pbd; > > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
于 2013年11月28日 18:27, Daniel Borkmann 写道: > On 11/28/2013 10:53 AM, Duan Jiong wrote: >> >> >> Signed-off-by: Duan Jiong <duanj.fnst@cn.fujitsu.com> > > Please resubmit when net-next is open. How can i know when the net-next will be open? > >> --- >> net/packet/af_packet.c | 10 ++++++---- >> 1 file changed, 6 insertions(+), 4 deletions(-) >> >> diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c >> index 2e8286b..955611f 100644 >> --- a/net/packet/af_packet.c >> +++ b/net/packet/af_packet.c >> @@ -430,7 +430,8 @@ static void prb_shutdown_retire_blk_timer(struct packet_sock *po, >> { >> struct tpacket_kbdq_core *pkc; >> >> - pkc = tx_ring ? &po->tx_ring.prb_bdqc : &po->rx_ring.prb_bdqc; >> + pkc = tx_ring ? GET_PBDQC_FROM_RB(&po->tx_ring) >> + : GET_PBDQC_FROM_RB(&po->rx_ring); > > Nit: the colon should actually still be on the previous line. > > It would be nice if at some point in time we could get rid of these TPACKET_V3 specific > macros and actually use some inline functions. > >> >> spin_lock(&rb_queue->lock); >> pkc->delete_blk_timer = 1; >> @@ -456,7 +457,8 @@ static void prb_setup_retire_blk_timer(struct packet_sock *po, int tx_ring) >> if (tx_ring) >> BUG(); >> >> - pkc = tx_ring ? &po->tx_ring.prb_bdqc : &po->rx_ring.prb_bdqc; >> + pkc = tx_ring ? GET_PBDQC_FROM_RB(&po->tx_ring) >> + : GET_RBDQC_FROM_RB(&po->rx_ring); >> prb_init_blk_timer(po, pkc, prb_retire_rx_blk_timer_expired); >> } >> >> @@ -514,7 +516,7 @@ static void init_prb_bdqc(struct packet_sock *po, >> struct pgv *pg_vec, >> union tpacket_req_u *req_u, int tx_ring) >> { >> - struct tpacket_kbdq_core *p1 = &rb->prb_bdqc; >> + struct tpacket_kbdq_core *p1 = GET_PBDQC_FROM_RB(rb); >> struct tpacket_block_desc *pbd; >> >> memset(p1, 0x0, sizeof(*p1)); >> @@ -578,7 +580,7 @@ static void _prb_refresh_rx_retire_blk_timer(struct tpacket_kbdq_core *pkc) >> static void prb_retire_rx_blk_timer_expired(unsigned long data) >> { >> struct packet_sock *po = (struct packet_sock *)data; >> - struct tpacket_kbdq_core *pkc = &po->rx_ring.prb_bdqc; >> + struct tpacket_kbdq_core *pkc = GET_PBDQC_FROM_RB(&po->rx_ring); >> unsigned int frozen; >> struct tpacket_block_desc *pbd; >> >> > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Duan Jiong <duanj.fnst@cn.fujitsu.com> Date: Mon, 02 Dec 2013 09:19:51 +0800 > 于 2013年11月28日 18:27, Daniel Borkmann 写道: >> On 11/28/2013 10:53 AM, Duan Jiong wrote: >>> >>> >>> Signed-off-by: Duan Jiong <duanj.fnst@cn.fujitsu.com> >> >> Please resubmit when net-next is open. > > How can i know when the net-next will be open? I announce it explicitly on the netdev list. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 2e8286b..955611f 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -430,7 +430,8 @@ static void prb_shutdown_retire_blk_timer(struct packet_sock *po, { struct tpacket_kbdq_core *pkc; - pkc = tx_ring ? &po->tx_ring.prb_bdqc : &po->rx_ring.prb_bdqc; + pkc = tx_ring ? GET_PBDQC_FROM_RB(&po->tx_ring) + : GET_PBDQC_FROM_RB(&po->rx_ring); spin_lock(&rb_queue->lock); pkc->delete_blk_timer = 1; @@ -456,7 +457,8 @@ static void prb_setup_retire_blk_timer(struct packet_sock *po, int tx_ring) if (tx_ring) BUG(); - pkc = tx_ring ? &po->tx_ring.prb_bdqc : &po->rx_ring.prb_bdqc; + pkc = tx_ring ? GET_PBDQC_FROM_RB(&po->tx_ring) + : GET_RBDQC_FROM_RB(&po->rx_ring); prb_init_blk_timer(po, pkc, prb_retire_rx_blk_timer_expired); } @@ -514,7 +516,7 @@ static void init_prb_bdqc(struct packet_sock *po, struct pgv *pg_vec, union tpacket_req_u *req_u, int tx_ring) { - struct tpacket_kbdq_core *p1 = &rb->prb_bdqc; + struct tpacket_kbdq_core *p1 = GET_PBDQC_FROM_RB(rb); struct tpacket_block_desc *pbd; memset(p1, 0x0, sizeof(*p1)); @@ -578,7 +580,7 @@ static void _prb_refresh_rx_retire_blk_timer(struct tpacket_kbdq_core *pkc) static void prb_retire_rx_blk_timer_expired(unsigned long data) { struct packet_sock *po = (struct packet_sock *)data; - struct tpacket_kbdq_core *pkc = &po->rx_ring.prb_bdqc; + struct tpacket_kbdq_core *pkc = GET_PBDQC_FROM_RB(&po->rx_ring); unsigned int frozen; struct tpacket_block_desc *pbd;
Signed-off-by: Duan Jiong <duanj.fnst@cn.fujitsu.com> --- net/packet/af_packet.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)