|
@@ -185,6 +185,7 @@ static __sum16 icmp6_checksum(struct ipv6hdr *ipv6, u16 *ptr, int len)
|
|
|
unsigned short *w = ptr;
|
|
|
__wsum sum = 0;
|
|
|
int i;
|
|
|
+ u16 pa;
|
|
|
|
|
|
union {
|
|
|
struct {
|
|
@@ -204,9 +205,10 @@ static __sum16 icmp6_checksum(struct ipv6hdr *ipv6, u16 *ptr, int len)
|
|
|
pseudo_header.ph.ph_nxt = ipv6->nexthdr;
|
|
|
|
|
|
w = (u16 *)&pseudo_header;
|
|
|
- for (i = 0; i < ARRAY_SIZE(pseudo_header.pa); i++)
|
|
|
- sum = csum_add(sum, csum_unfold(
|
|
|
- (__force __sum16)pseudo_header.pa[i]));
|
|
|
+ for (i = 0; i < ARRAY_SIZE(pseudo_header.pa); i++) {
|
|
|
+ pa = pseudo_header.pa[i];
|
|
|
+ sum = csum_add(sum, csum_unfold((__force __sum16)pa));
|
|
|
+ }
|
|
|
|
|
|
w = ptr;
|
|
|
while (len > 1) {
|
|
@@ -509,8 +511,9 @@ static struct net_device_stats *gdm_lte_stats(struct net_device *dev)
|
|
|
|
|
|
static int gdm_lte_event_send(struct net_device *dev, char *buf, int len)
|
|
|
{
|
|
|
- struct nic *nic = netdev_priv(dev);
|
|
|
+ struct phy_dev *phy_dev = ((struct nic *)netdev_priv(dev))->phy_dev;
|
|
|
struct hci_packet *hci = (struct hci_packet *)buf;
|
|
|
+ int length;
|
|
|
int idx;
|
|
|
int ret;
|
|
|
|
|
@@ -518,11 +521,9 @@ static int gdm_lte_event_send(struct net_device *dev, char *buf, int len)
|
|
|
if (ret != 1)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- return netlink_send(lte_event.sock, idx, 0, buf,
|
|
|
- gdm_dev16_to_cpu(
|
|
|
- nic->phy_dev->get_endian(
|
|
|
- nic->phy_dev->priv_dev), hci->len)
|
|
|
- + HCI_HEADER_SIZE);
|
|
|
+ length = gdm_dev16_to_cpu(phy_dev->get_endian(phy_dev->priv_dev),
|
|
|
+ hci->len) + HCI_HEADER_SIZE;
|
|
|
+ return netlink_send(lte_event.sock, idx, 0, buf, length);
|
|
|
}
|
|
|
|
|
|
static void gdm_lte_event_rcv(struct net_device *dev, u16 type,
|
|
@@ -731,15 +732,13 @@ static void gdm_lte_pdn_table(struct net_device *dev, char *buf, int len)
|
|
|
struct hci_pdn_table_ind *pdn_table = (struct hci_pdn_table_ind *)buf;
|
|
|
|
|
|
if (pdn_table->activate) {
|
|
|
+ struct gdm_endian *ed;
|
|
|
+
|
|
|
nic->pdn_table.activate = pdn_table->activate;
|
|
|
- nic->pdn_table.dft_eps_id = gdm_dev32_to_cpu(
|
|
|
- nic->phy_dev->get_endian(
|
|
|
- nic->phy_dev->priv_dev),
|
|
|
- pdn_table->dft_eps_id);
|
|
|
- nic->pdn_table.nic_type = gdm_dev32_to_cpu(
|
|
|
- nic->phy_dev->get_endian(
|
|
|
- nic->phy_dev->priv_dev),
|
|
|
- pdn_table->nic_type);
|
|
|
+
|
|
|
+ ed = nic->phy_dev->get_endian(nic->phy_dev->priv_dev);
|
|
|
+ nic->pdn_table.dft_eps_id = gdm_dev32_to_cpu(ed, pdn_table->dft_eps_id);
|
|
|
+ nic->pdn_table.nic_type = gdm_dev32_to_cpu(ed, pdn_table->nic_type);
|
|
|
|
|
|
netdev_info(dev, "pdn activated, nic_type=0x%x\n",
|
|
|
nic->pdn_table.nic_type);
|
|
@@ -897,12 +896,11 @@ int register_lte_device(struct phy_dev *phy_dev,
|
|
|
nic->phy_dev = phy_dev;
|
|
|
nic->nic_id = index;
|
|
|
|
|
|
- form_mac_address(
|
|
|
- net->dev_addr,
|
|
|
- nic->src_mac_addr,
|
|
|
- nic->dest_mac_addr,
|
|
|
- mac_address,
|
|
|
- index);
|
|
|
+ form_mac_address(net->dev_addr,
|
|
|
+ nic->src_mac_addr,
|
|
|
+ nic->dest_mac_addr,
|
|
|
+ mac_address,
|
|
|
+ index);
|
|
|
|
|
|
SET_NETDEV_DEV(net, dev);
|
|
|
SET_NETDEV_DEVTYPE(net, &wwan_type);
|