OSDN Git Service

i40e: DRY rx_ptype handling code
authorMichał Mirosław <mirq-linux@rere.qmqm.pl>
Tue, 4 Dec 2018 17:31:15 +0000 (18:31 +0100)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 12 Dec 2018 23:46:02 +0000 (15:46 -0800)
Move rx_ptype extracting to i40e_process_skb_fields() to avoid
duplicating the code.

Signed-off-by: Michał Mirosław <michal.miroslaw@atendesoftware.pl>
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_txrx.c
drivers/net/ethernet/intel/i40e/i40e_txrx_common.h
drivers/net/ethernet/intel/i40e/i40e_xsk.c

index bc6a873..d0a9542 100644 (file)
@@ -1775,8 +1775,7 @@ static inline void i40e_rx_hash(struct i40e_ring *ring,
  * other fields within the skb.
  **/
 void i40e_process_skb_fields(struct i40e_ring *rx_ring,
-                            union i40e_rx_desc *rx_desc, struct sk_buff *skb,
-                            u8 rx_ptype)
+                            union i40e_rx_desc *rx_desc, struct sk_buff *skb)
 {
        u64 qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len);
        u32 rx_status = (qword & I40E_RXD_QW1_STATUS_MASK) >>
@@ -1784,6 +1783,8 @@ void i40e_process_skb_fields(struct i40e_ring *rx_ring,
        u32 tsynvalid = rx_status & I40E_RXD_QW1_STATUS_TSYNVALID_MASK;
        u32 tsyn = (rx_status & I40E_RXD_QW1_STATUS_TSYNINDX_MASK) >>
                   I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT;
+       u8 rx_ptype = (qword & I40E_RXD_QW1_PTYPE_MASK) >>
+                     I40E_RXD_QW1_PTYPE_SHIFT;
 
        if (unlikely(tsynvalid))
                i40e_ptp_rx_hwtstamp(rx_ring->vsi->back, skb, tsyn);
@@ -2339,7 +2340,6 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
                struct i40e_rx_buffer *rx_buffer;
                union i40e_rx_desc *rx_desc;
                unsigned int size;
-               u8 rx_ptype;
                u64 qword;
 
                /* return some buffers to hardware, one at a time is too slow */
@@ -2432,12 +2432,8 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
                /* probably a little skewed due to removing CRC */
                total_rx_bytes += skb->len;
 
-               qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len);
-               rx_ptype = (qword & I40E_RXD_QW1_PTYPE_MASK) >>
-                          I40E_RXD_QW1_PTYPE_SHIFT;
-
                /* populate checksum, VLAN, and protocol */
-               i40e_process_skb_fields(rx_ring, rx_desc, skb, rx_ptype);
+               i40e_process_skb_fields(rx_ring, rx_desc, skb);
 
                i40e_trace(clean_rx_irq_rx, rx_ring, rx_desc, skb);
                napi_gro_receive(&rx_ring->q_vector->napi, skb);
index 2c077f1..8af0e99 100644 (file)
@@ -12,8 +12,7 @@ struct i40e_rx_buffer *i40e_clean_programming_status(
        union i40e_rx_desc *rx_desc,
        u64 qw);
 void i40e_process_skb_fields(struct i40e_ring *rx_ring,
-                            union i40e_rx_desc *rx_desc, struct sk_buff *skb,
-                            u8 rx_ptype);
+                            union i40e_rx_desc *rx_desc, struct sk_buff *skb);
 void i40e_xdp_ring_update_tail(struct i40e_ring *xdp_ring);
 void i40e_update_rx_stats(struct i40e_ring *rx_ring,
                          unsigned int total_rx_bytes,
index a6ea2b2..870cf65 100644 (file)
@@ -634,7 +634,6 @@ int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget)
                struct i40e_rx_buffer *bi;
                union i40e_rx_desc *rx_desc;
                unsigned int size;
-               u8 rx_ptype;
                u64 qword;
 
                if (cleaned_count >= I40E_RX_BUFFER_WRITE) {
@@ -712,10 +711,7 @@ int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget)
                total_rx_bytes += skb->len;
                total_rx_packets++;
 
-               qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len);
-               rx_ptype = (qword & I40E_RXD_QW1_PTYPE_MASK) >>
-                          I40E_RXD_QW1_PTYPE_SHIFT;
-               i40e_process_skb_fields(rx_ring, rx_desc, skb, rx_ptype);
+               i40e_process_skb_fields(rx_ring, rx_desc, skb);
                napi_gro_receive(&rx_ring->q_vector->napi, skb);
        }