]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/ixgb/ixgb_main.c
drivers/net: avoid some skb->ip_summed initializations
[karo-tx-linux.git] / drivers / net / ixgb / ixgb_main.c
index c6b75c83100c91b782221bf3e7ae6f813ef43da5..c2f6e71e1181e66a810049e8bf886e541474fd27 100644 (file)
@@ -470,7 +470,7 @@ ixgb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        adapter->part_num = ixgb_get_ee_pba_number(&adapter->hw);
 
        init_timer(&adapter->watchdog_timer);
-       adapter->watchdog_timer.function = &ixgb_watchdog;
+       adapter->watchdog_timer.function = ixgb_watchdog;
        adapter->watchdog_timer.data = (unsigned long)adapter;
 
        INIT_WORK(&adapter->tx_timeout_task, ixgb_tx_timeout_task);
@@ -1816,6 +1816,7 @@ ixgb_clean_tx_irq(struct ixgb_adapter *adapter)
 
        while (eop_desc->status & IXGB_TX_DESC_STATUS_DD) {
 
+               rmb(); /* read buffer_info after eop_desc */
                for (cleaned = false; !cleaned; ) {
                        tx_desc = IXGB_TX_DESC(*tx_ring, i);
                        buffer_info = &tx_ring->buffer_info[i];
@@ -1904,7 +1905,7 @@ ixgb_rx_checksum(struct ixgb_adapter *adapter,
         */
        if ((rx_desc->status & IXGB_RX_DESC_STATUS_IXSM) ||
           (!(rx_desc->status & IXGB_RX_DESC_STATUS_TCPCS))) {
-               skb->ip_summed = CHECKSUM_NONE;
+               skb_checksum_none_assert(skb);
                return;
        }
 
@@ -1912,7 +1913,7 @@ ixgb_rx_checksum(struct ixgb_adapter *adapter,
        /* now look at the TCP checksum error bit */
        if (rx_desc->errors & IXGB_RX_DESC_ERRORS_TCPE) {
                /* let the stack verify checksum errors */
-               skb->ip_summed = CHECKSUM_NONE;
+               skb_checksum_none_assert(skb);
                adapter->hw_csum_rx_error++;
        } else {
                /* TCP checksum is good */
@@ -1976,6 +1977,7 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter, int *work_done, int work_to_do)
                        break;
 
                (*work_done)++;
+               rmb();  /* read descriptor and rx_buffer_info after status DD */
                status = rx_desc->status;
                skb = buffer_info->skb;
                buffer_info->skb = NULL;